class OVH::Provisioner::APIObject::DomainZone

Represent a Domain

Attributes

dnssec[R]
dnssec_supported[R]
nameservers[R]
records[R]

Public Instance Methods

add_record(subdomain, type, target, ttl = 0) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 35
def add_record(subdomain, type, target, ttl = 0)
  body = {
    'fieldType' => type.upcase,
    'target' => target,
    'ttl' => ttl.to_i
  }
  sub = subdomain
  body['subDomain'] = sub unless sub.nil? || sub.empty?
  answer = post('record', body)
  post('refresh')
  format(answer)
end
details(record_lists = records) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 30
def details(record_lists = records)
  "#{id} - dnssec: #{dnssec_to_s}\n"\
    "#{(record_lists.format('type').lines[1..-1] || []).join('')}"
end
filter_records(config) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 59
def filter_records(config)
  filter = generate_filter(
    config['subdomain'] || '',
    config['type'] || '',
    config['target'] || '',
    config['ttl'] || ''
  )
  targets = records.list.dup.keep_if do |record|
    filter.call(record)
  end.map(&:id)
  Actor[Spawner::NAME].get('Record', *targets, parent: @url)
end
rm_record(record) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 48
def rm_record(record)
  out = delete("record/#{record.id}")
  post('refresh')
  "  #{record}#{out.nil? ? '' : ": #{out}"}"
end
rm_records(records) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 54
def rm_records(records)
  outputs = records.parallel_map(:rm_record, [], Actor.current)
  (["#{id}, remove records:"] + outputs.sort).join("\n")
end
to_s() click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 26
def to_s
  "#{id}, dnssec #{dnssec_to_s}, #{records.list.size} records"
end

Private Instance Methods

dnssec_to_s() click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 88
def dnssec_to_s
  dnssec_supported ? dnssec : 'not supported'
end
format(answer) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 101
def format(answer)
  return answer if answer.is_a? String

  zone = answer['zone']
  sub = answer['subDomain'] || ''
  ttl = answer['ttl']
  type = answer['fieldType']
  target = answer['target']
  "#{id}, add record:\n"\
    "  #{Record.print(zone, sub, ttl, type, target)}"
end
generate_filter(subdomain, type, target, ttl) click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 92
def generate_filter(subdomain, type, target, ttl)
  lambda do |record|
    record.subdomain.include?(subdomain) &&
      (type.empty? || record.type == type.upcase) &&
      record.target.include?(target) &&
      (ttl == '' || record.ttl == ttl.to_i)
  end
end
set_dnssec() click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 80
def set_dnssec
  @dnssec = get('dnssec')['status']
end
set_general() click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 74
def set_general
  general = get
  @nameservers = general['nameServers']
  @dnssec_supported = general['dnssecSupported']
end
set_records() click to toggle source
# File lib/ovh/provisioner/api_object/domain_zone.rb, line 84
def set_records
  @records = Actor[Spawner::NAME].get('Record', '', parent: @url)
end