class Fog::DNS::Bluebox::Real
Public Class Methods
# 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 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 = %Q{<?xml version="1.0" encoding="UTF-8"?><record><type>#{type}</type><name>#{name}</name><content>#{content}</content>} options.each do |k,v| body += %Q{<#{k}>#{v}</#{k}>} end body += %Q{</record>} request( :body => body, :expects => 202, :method => 'POST', :parser => Fog::Parsers::DNS::Bluebox::CreateRecord.new, :path => "/api/domains/#{zone_id}/records.xml" ) end
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 = %Q{<?xml version="1.0" encoding="UTF-8"?><domain><name>#{options[:name]}</name><ttl>#{options[:ttl]}</ttl>} body += %Q{<retry>#{options[:retry]}</retry>} if options[:retry] body += %Q{<refresh>#{options[:retry]}</refresh>} if options[:refresh] body += %Q{<minimum>#{options[:minimum]}</minimum>} if options[:minimum] body += %Q{</domain>} request( :body => body, :expects => 202, :method => 'POST', :parser => Fog::Parsers::DNS::Bluebox::CreateZone.new, :path => "/api/domains.xml" ) end
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 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 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 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 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 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
# File lib/fog/bluebox/dns.rb, line 66 def reload @connection.reset end
# 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
Updates an existing DNS
zone
# File lib/fog/bluebox/requests/dns/update_zone.rb, line 7 def update_zone(zone_id, options) body = %Q{<?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
# File lib/fog/bluebox/dns.rb, line 97 def auth_header @auth_header ||= Base64.encode64("#{@bluebox_customer_id}:#{@bluebox_api_key}").gsub("\n",'') end