class Fog::DNS::Dynect::Record

Public Instance Methods

destroy() click to toggle source
# File lib/fog/dynect/models/dns/record.rb, line 14
def destroy
  requires :identity, :name, :type, :zone
  service.delete_record(type, zone.identity, name, identity)
  true
end
save(replace=false) click to toggle source
# File lib/fog/dynect/models/dns/record.rb, line 20
def save(replace=false)
  requires :name, :type, :rdata, :zone

  options = {
    :ttl => ttl
  }
  options.delete_if {|key, value| value.nil?}

  refresh_id if replace && identity.nil?
  if replace && !identity.nil?
    options['record_id'] = identity
    data = service.put_record(type, zone.identity, name, rdata, options).body['data']
  else
    data = service.post_record(type, zone.identity, name, rdata, options).body['data']
  end
  # avoid overwriting zone object with zone string
  data = data.reject {|key, value| key == 'zone'}
  merge_attributes(data)

  zone.publish
  refresh_id

  true
end
zone() click to toggle source
# File lib/fog/dynect/models/dns/record.rb, line 45
def zone
  @zone
end

Private Instance Methods

refresh_id() click to toggle source
# File lib/fog/dynect/models/dns/record.rb, line 55
def refresh_id
  begin 
    records = service.get_record(type, zone.identity, name).body['data']
  rescue
    return
  end
  # data in format ['/REST/xRecord/domain/fqdn/identity]
  records.map! do |record|
    tokens = record.split('/')
    {
      :identity => tokens.last,
      :type     => tokens[2][0...-6] # everything before 'Record'
    }
  end
  record = records.find() {|record| record[:type] == type}
  merge_attributes(record)
end
zone=(new_zone) click to toggle source
# File lib/fog/dynect/models/dns/record.rb, line 51
def zone=(new_zone)
  @zone = new_zone
end