Skip to content

Instantly share code, notes, and snippets.

@esteigler
Created October 28, 2011 20:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save esteigler/1323445 to your computer and use it in GitHub Desktop.
Save esteigler/1323445 to your computer and use it in GitHub Desktop.
my updates
require "fog"
require "nokogiri"
def name
@name ||= new_resource.name + "."
end
def value
@value ||= new_resource.value
end
def type
@type ||= new_resource.type
end
def ttl
@ttl ||= new_resource.ttl
end
def zone
@zone ||= Fog::DNS.new({ :provider => "aws",
:aws_access_key_id => new_resource.aws_access_key_id,
:aws_secret_access_key => new_resource.aws_secret_access_key }
).zones.get( new_resource.zone_id )
end
def create
begin
zone.records.create({ :name => name,
:value => value,
:type => type,
:ttl => ttl })
rescue Excon::Errors::BadRequest => e
Chef::Log.info Nokogiri::XML( e.response.body ).xpath( "//xmlns:Message" ).text
end
end
action :create do
record = zone.records.all.select do |record|
record.name == name
end.first
if record.nil?
create
Chef::Log.info "Record created: #{name}"
elsif value != record.value.first
record.destroy
create
Chef::Log.info "Record modified: #{name}"
end
end
action :append do
record = zone.records.all.select do |record|
record.name == name
end.first
if record.nil?
create
Chef::Log.info "Record created: #{name}"
elsif value != record.value.first
record.value << value
puts record.inspect
record.save()
# create
Chef::Log.info "Record modified: #{name}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment