# 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
Create a new record in a DNS zone
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)
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 a new DNS zone
* '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
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 a record from the specified DNS zone
record_id<~Integer> - Id of DNS record to delete
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
zone_id<~Integer> - Id of zone to delete
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
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
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
zone_id<~Integer> - Id of zone to lookup
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)
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 = %{<?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
Generated with the Darkfish Rdoc Generator 2.