Parent

Class/Module Index [+]

Quicksearch

Fog::DNS::Bluebox::Real

Public Class Methods

new(options ={}) click to toggle source
# File lib/fog/bluebox/dns.rb, line 55
def initialize(options ={})
  @bluebox_customer_id = options[:bluebox_customer_id]
  @bluebox_api_key = options[:bluebox_api_key]
  @connection_options     = options[:connection_options] || {}
  @host       = options[:bluebox_host]    || "boxpanel.bluebox.net"
  @persistent = options[:persistent]      || false
  @port       = options[:bluebox_port]    || 443
  @scheme     = options[:bluebox_scheme]  || 'https'
  @connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}", @persistent, @connection_options)
end

Public Instance Methods

create_record(zone_id, type, name, content, options={}) click to toggle source

Create a new record in a DNS zone

Parameters

  • type<~String> - type of DNS record to create (A, CNAME, etc)

  • name<~String> - host name this DNS record is for

  • content<~String> - data for the DNS record (ie for an A record, the IP address)

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'name'<~String> - as above

      • 'id'<~Integer> - Id of zone/domain - used in future API calls for this zone

      • 'ttl'<~Integer> - as above

      • 'data'<~String> - as above

      • 'active'<~String> - as above

      • 'aux'<~String> - as above

# File lib/fog/bluebox/requests/dns/create_record.rb, line 22
def create_record(zone_id, type, name, content, options={})
  body = %{<?xml version="1.0" encoding="UTF-8"?><record><type>#{type}</type><name>#{name}</name><content>#{content}</content>}
  options.each do |k,v|
    body += %{<#{k}>#{v}</#{k}>}
  end
  body += %{</record>}
  request(
    :body     => body,
    :expects  => 202,
    :method   => 'POST',
    :parser   => Fog::Parsers::DNS::Bluebox::CreateRecord.new,
    :path     => "/api/domains/#{zone_id}/records.xml"
  )
end
create_zone(options) click to toggle source

Create a new DNS zone

Parameters

* 'name'<~String> - The name of the zone
* 'ttl'<~Integer> - TimeToLive (ttl) for the domain, in seconds
* 'retry'<~Integer> - Retry interval for the domain, in seconds
* 'refresh'<~Integer> - Refresh interval for the zone
* 'minimum'<~Integer> - Minimum refresh interval for the zone

Returns

  • response<~Excon::Response>:

    • body<~Hash>:

      • 'name'<~String> - The name of the zone

      • 'serial'<~Integer> - Serial number of the zone

      • 'ttl'<~Integer> - TimeToLive (ttl) for the domain, in seconds

      • 'retry'<~Integer> - Retry interval for the domain, in seconds

      • 'record-count'<~Integer> - Number of records in the zone

      • 'id'<~String> - Id for the zone

      • 'refresh'<~Integer> - Refresh interval for the zone

      • 'minimum'<~Integer> - Minimum refresh interval for the zone

# File lib/fog/bluebox/requests/dns/create_zone.rb, line 26
def create_zone(options)
  body = %{<?xml version="1.0" encoding="UTF-8"?><domain><name>#{options[:name]}</name><ttl>#{options[:ttl]}</ttl>}
  body += %{<retry>#{options[:retry]}</retry>} if options[:retry]
  body += %{<refresh>#{options[:retry]}</refresh>} if options[:refresh]
  body += %{<minimum>#{options[:minimum]}</minimum>} if options[:minimum]
  body += %{</domain>}
  request(
    :body     => body,
    :expects  => 202,
    :method   => 'POST',
    :parser   => Fog::Parsers::DNS::Bluebox::CreateZone.new,
    :path     => "/api/domains.xml"
  )
end
delete_record(zone_id, record_id) click to toggle source

Delete a record from the specified DNS zone

Parameters

  • record_id<~Integer> - Id of DNS record to delete

Returns

  • response<~Excon::Response>: - HTTP status code will be result

# File lib/fog/bluebox/requests/dns/delete_record.rb, line 12
def delete_record(zone_id, record_id)
  request(
    :expects  => 200,
    :method   => 'DELETE',
    :path     => "/api/domains/#{zone_id}/records/#{record_id}.xml"
  )
end
delete_zone(zone_id) click to toggle source

Delete a zone from DNS

Parameters

  • zone_id<~Integer> - Id of zone to delete

Returns

  • response<~Excon::Response>: - HTTP status code will be result

# File lib/fog/bluebox/requests/dns/delete_zone.rb, line 12
def delete_zone(zone_id)
  request(
    :expects  => 200,
    :method   => 'DELETE',
    :path     => "/api/domains/#{zone_id}.xml"
  )
end
get_record(zone_id, record_id) click to toggle source

Get an individual DNS record from the specified zone

Returns

  • response<~Excon::Response>:

    • hash<~Hash>:

      • 'id'<~String> - The id of this record

      • 'type'<~String> - type of DNS record to create (A, CNAME, etc)

      • 'domain-id'<~Integer> - ID of the zone

      • 'name'<~String> - empty?

      • 'domain'<~String> - The domain name

      • 'type'<~String> - The type of DNS record (e.g. A, MX, NS, etc.)

      • 'content'<~String> - data for the DNS record (ie for an A record, the IP address)

# File lib/fog/bluebox/requests/dns/get_record.rb, line 20
def get_record(zone_id, record_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::DNS::Bluebox::GetRecord.new,
    :path     => "/api/domains/#{zone_id}/records/#{record_id}.xml"
  )
end
get_records(zone_id) click to toggle source

Get all the DNS records across all the DNS zones for this account

Returns

  • response<~Excon::Response>:

    • body<~Array>:

      • 'addresses'<~Array> - Ip addresses for the slice

      • 'backup-id'<~Integer> - Id of backup slice was booted from

      • 'flavor_id'<~Integer> - Id of flavor slice was booted from

      • 'id'<~Integer> - Id of the slice

      • 'image-id'<~Integer> - Id of image slice was booted from

      • 'name'<~String> - Name of the slice

      • 'progress'<~Integer> - Progress of current action, in percentage

      • 'status'<~String> - Current status of the slice

# File lib/fog/bluebox/requests/dns/get_records.rb, line 21
def get_records(zone_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::DNS::Bluebox::GetRecords.new,
    :path     => "/api/domains/#{zone_id}/records.xml"
  )
end
get_zone(zone_id) click to toggle source

Get details of a DNS zone

Parameters

  • zone_id<~Integer> - Id of zone to lookup

Returns

  • response<~Excon::Response>:

    • hash<~Hash>:

      • 'name'<~String> - The name of the zone

      • 'serial'<~Integer> - Serial number of the zone

      • 'ttl'<~Integer> - TimeToLive (ttl) for the domain, in seconds

      • 'retry'<~Integer> - Retry interval for the domain, in seconds

      • 'record-count'<~Integer> - Number of records in the zone

      • 'id'<~String> - Id for the zone

      • 'refresh'<~Integer> - Refresh interval for the zone

      • 'minimum'<~Integer> - Minimum refresh interval for the zone

# File lib/fog/bluebox/requests/dns/get_zone.rb, line 24
def get_zone(zone_id)
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::DNS::Bluebox::GetZone.new,
    :path     => "/api/domains/#{zone_id}.xml"
  )
end
get_zones() click to toggle source

Get list of all DNS zones hosted on Bluebox (for this account)

Returns

  • response<~Excon::Response>:

    • 'records'<~Array>

      • 'record'

        • 'name'<~String> - name of the zone

        • 'serial'<~Integer> - Serial # for the zone

        • 'ttl'<~Integer> - TTL for the zone record in seconds

        • 'retry'<~Integer> - Retry interval for the zone record in seconds

        • 'expires'<~Integer> - Expiration interval for the zone record in seconds

        • 'record-count'<~Integer> - # of records in this zone

        • 'id'<~String> - Id for the zone record

        • 'refresh'<~Integer> - default refresh interval for this zone, in seconds

        • 'minimum'<~Integer> - minimum value for intervals for this zone, in seconds

# File lib/fog/bluebox/requests/dns/get_zones.rb, line 23
def get_zones
  request(
    :expects  => 200,
    :method   => 'GET',
    :parser   => Fog::Parsers::DNS::Bluebox::GetZones.new,
    :path     => '/api/domains.xml'
  )
end
reload() click to toggle source
# File lib/fog/bluebox/dns.rb, line 66
def reload
  @connection.reset
end
request(params) click to toggle source
# File lib/fog/bluebox/dns.rb, line 70
def request(params)
  params[:headers] ||= {}

  params[:headers]['Authorization'] = "Basic #{auth_header}"

  params[:headers]['Accept'] = 'application/xml'
  case params[:method]
  when 'POST', 'PUT'
    params[:headers]['Content-Type'] = 'application/xml'
  end

  begin
    response = @connection.request(params.merge!({:host => @host}))
  rescue Excon::Errors::HTTPStatusError => error
    raise case error
    when Excon::Errors::NotFound
      Fog::DNS::Bluebox::NotFound.slurp(error)
    else
      error
    end
  end

  response
end
update_zone(zone_id, options) click to toggle source

Updates an existing DNS zone

# File lib/fog/bluebox/requests/dns/update_zone.rb, line 7
def update_zone(zone_id, options)
  body = %{<?xml version="1.0" encoding="UTF-8"?><domain>}
  options.each {|k,v| body += "<#{k}>#{v}</#{k}>"}
  body += "</domain>"
  request(
    :body     => body,
    :expects  => 202,
    :method   => 'PUT',
    :path     => "/api/domains/#{zone_id}.xml"
  )
end

Protected Instance Methods

auth_header() click to toggle source
# File lib/fog/bluebox/dns.rb, line 97
def auth_header
  @auth_header ||= Base64.encode64("#{@bluebox_customer_id}:#{@bluebox_api_key}").gsub("\n",'')
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.