Class: Hyrb::Tasks::Rackspace::CreateDNSRecord

Inherits:
Hyrb::Task
  • Object
show all
Defined in:
lib/hyrb/tasks/rackspace.rb

Instance Attribute Summary

Attributes inherited from Hyrb::Task

#env, #pipeline

Instance Method Summary collapse

Methods inherited from Hyrb::Task

depends, #initialize, prompt, prompts, #run_before

Constructor Details

This class inherits a constructor from Hyrb::Task

Instance Method Details

#run(env) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# File 'lib/hyrb/tasks/rackspace.rb', line 60

def run(env)
  record_type = (IPAddr.new(env.environment.host) rescue false) ? 'A' : 'CNAME'

  # assume zone is going to be x.com
  proj_zone = env.environment.domain.split('.')[-2..-1].join('.')

  zone = env.rackspace_dns_zones.find { |z| z.domain == proj_zone }
  zone ||= env.rackspace_dns_client.zones.create({
    domain: proj_zone,
    email: env.defaults.admin_email,
  })

  record = zone.records.find do |r|
    r.name == env.environment.domain && r.type == record_type
  end

  if record
    say "Record exists: '#{record.type} #{record.name} #{record.value} (#{record.ttl})'", :yellow
  else
    record = zone.records.create({
      name: env.environment.domain,
      value: env.environment.host,
      type: record_type,
      ttl: 300,
    })
    say "Created record: '#{record.type} #{record.name} #{record.value} (#{record.ttl})'", :green
  end
  env.environment.has_dns_record = true
  env.environment.save!
  beep
end