class Splicer::Rackspace::Provider
Attributes
client[R]
config[R]
records[R]
Public Class Methods
new(config)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 7 def initialize(config) @config = config @client = Fog::DNS.new(provider: 'Rackspace', rackspace_api_key: config.api_key, rackspace_username: config.username) end
Public Instance Methods
create_record_in_zone(record, zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 47 def create_record_in_zone(record, zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #create_record_in_zone record=#{record.inspect} zone=#{zone.inspect}" domain = client.zones.get(zone.name) || client.zones.create(domain: zone.name, email: config.email) rax_record = domain.records.detect { |r| r.name == record.name && r.type == record.type } rax_record ? false : domain.records.create(record_payload(record, zone)) end
create_zone(zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 12 def create_zone(zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #create_zone zone=#{zone.inspect}" domain = client.zones.get(zone.name) if domain client.zones.create(domain: zone.name, email: config.email) else false end end
delete_record_in_zone(record, zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 29 def delete_record_in_zone(record, zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #delete_record_in_zone record=#{record.inspect} zone=#{zone.inspect}" domain = client.zones.get(zone.name) return false unless domain rax_record = domain.records.detect { |r| r.name == record.name && r.type == record.type } rax_record ? rax_record.destroy : false end
delete_zone(zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 23 def delete_zone(zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #delete_zone zone=#{zone.inspect}" domain = client.zones.get(zone.name) domain ? domain.destroy : false end
get_records_for(zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 55 def get_records_for(zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #get_records_for zone=#{zone.inspect}" domain = client.zones.get(zone.name) return [] unless domain domains.records end
update_record_in_zone(record, zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 38 def update_record_in_zone(record, zone) Splicer.logger.debug "[SPLICER][RACKSPACE] #update_record_in_zone record=#{record.inspect} zone=#{zone.inspect}" domain = client.zones.get(zone.name) return false unless domain rax_record = domain.records.detect { |r| r.name == record.name && r.type == record.type } rax_record ? rax_record.update(record_payload(record, zone)) : false end
Private Instance Methods
record_payload(record, zone)
click to toggle source
# File lib/splicer/rackspace/provider.rb, line 64 def record_payload(record, zone) payload = { type: record.type, name: record.name ? "#{record.name}.#{zone.name}" : '', ttl: record.ttl } case record when Splicer::Records::ARecord payload.merge!({ value: record.ip }) when Splicer::Records::AAAARecord payload.merge!({ value: record.ip }) when Splicer::Records::CNAMERecord # Removes last period payload.merge!({ value: record.cname.sub(/\.\z/, '') }) when Splicer::Records::MXRecord payload.merge!({ value: record.exchanger, mxLevel: record.priority }) when Splicer::Records::NSRecord payload.merge!({ value: record.server }) when Splicer::Records::PTRRecord payload.merge!({ value: record.host }) when Splicer::Records::SRVRecord payload.merge!({ value: record.target, weight: record.weight, priority: record.priority, port: record.port }) when Splicer::Records::TXTRecord payload.merge!({ value: record.text }) else payload = {} end payload end