mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
[aws|dns] Support for latency/weighted resource sets.
Support for CRUD on latency/weighted resource sets for AWS Route 53. Updated to latest API version.
This commit is contained in:
parent
44e5166251
commit
27f3eda915
7 changed files with 31 additions and 13 deletions
|
@ -89,7 +89,7 @@ module Fog
|
|||
@persistent = options[:persistent] || true
|
||||
@port = options[:port] || 443
|
||||
@scheme = options[:scheme] || 'https'
|
||||
@version = options[:version] || '2011-05-05'
|
||||
@version = options[:version] || '2012-02-29'
|
||||
|
||||
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
|
||||
end
|
||||
|
|
|
@ -18,6 +18,9 @@ module Fog
|
|||
attribute :created_at, :aliases => ['SubmittedAt']
|
||||
attribute :alias_target, :aliases => ['AliasTarget']
|
||||
attribute :change_id, :aliases => ['Id']
|
||||
attribute :region, :aliases => ['Region']
|
||||
attribute :weight, :aliases => ['Weight']
|
||||
attribute :set_identifier,:aliases => ['SetIdentifier']
|
||||
|
||||
def initialize(attributes={})
|
||||
self.ttl ||= 3600
|
||||
|
@ -84,12 +87,15 @@ module Fog
|
|||
requires :name, :ttl, :type, :zone
|
||||
requires_one :value, :alias_target
|
||||
{
|
||||
:action => action,
|
||||
:name => name,
|
||||
:resource_records => [*value],
|
||||
:alias_target => symbolize_keys(alias_target),
|
||||
:ttl => ttl,
|
||||
:type => type
|
||||
:action => action,
|
||||
:name => name,
|
||||
:resource_records => [*value],
|
||||
:alias_target => symbolize_keys(alias_target),
|
||||
:ttl => ttl,
|
||||
:type => type,
|
||||
:weight => weight,
|
||||
:set_identifier => set_identifier,
|
||||
:region => region
|
||||
}
|
||||
end
|
||||
|
||||
|
|
|
@ -33,7 +33,7 @@ module Fog
|
|||
def get(record_id)
|
||||
data = connection.get_change(record_id).body
|
||||
new(data)
|
||||
rescue Excon::Errors::Forbidden
|
||||
rescue Excon::Errors::NotFound
|
||||
nil
|
||||
end
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ module Fog
|
|||
def get(zone_id)
|
||||
data = connection.get_hosted_zone(zone_id).body
|
||||
new(data)
|
||||
rescue Excon::Errors::Forbidden
|
||||
rescue Excon::Errors::NotFound
|
||||
nil
|
||||
end
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ module Fog
|
|||
def end_element(name)
|
||||
if @section == :resource_record_set
|
||||
case name
|
||||
when 'Name', 'Type', 'TTL'
|
||||
when 'Name', 'Type', 'TTL', 'SetIdentifier', 'Weight', 'Region'
|
||||
@resource_record_set[name] = value
|
||||
when 'Value'
|
||||
@resource_record_set['ResourceRecords'] << value
|
||||
|
|
|
@ -58,6 +58,17 @@ module Fog
|
|||
ttl_tag = ''
|
||||
ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
|
||||
|
||||
weight_tag = ''
|
||||
set_identifier_tag = ''
|
||||
region_tag = ''
|
||||
if change_item[:set_identifier]
|
||||
set_identifier_tag += %Q{<SetIdentifier>#{change_item[:set_identifier]}</SetIdentifier>}
|
||||
if change_item[:weight] # Weighted Record
|
||||
weight_tag += %Q{<Weight>#{change_item[:weight]}</Weight>}
|
||||
elsif change_item[:region] # Latency record
|
||||
region_tag += %Q{<Region>#{change_item[:region]}</Region>}
|
||||
end
|
||||
end
|
||||
resource_records = change_item[:resource_records] || []
|
||||
resource_record_tags = ''
|
||||
resource_records.each do |record|
|
||||
|
@ -76,14 +87,15 @@ module Fog
|
|||
alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName></AliasTarget>}
|
||||
end
|
||||
|
||||
change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}</ResourceRecordSet></Change>}
|
||||
change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{set_identifier_tag}#{weight_tag}#{region_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}</ResourceRecordSet></Change>}
|
||||
changes += change_tags
|
||||
end
|
||||
|
||||
changes += '</Changes></ChangeBatch>'
|
||||
end
|
||||
|
||||
body = %Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/2011-05-05/">#{changes}</ChangeResourceRecordSetsRequest>}
|
||||
|
||||
body = %Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/#{@version}/">#{changes}</ChangeResourceRecordSetsRequest>}
|
||||
request({
|
||||
:body => body,
|
||||
:parser => Fog::Parsers::DNS::AWS::ChangeResourceRecordSets.new,
|
||||
|
|
|
@ -44,7 +44,7 @@ module Fog
|
|||
end
|
||||
|
||||
request({
|
||||
:body => %Q{<?xml version="1.0" encoding="UTF-8"?><CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/2011-05-05/"><Name>#{name}</Name>#{optional_tags}</CreateHostedZoneRequest>},
|
||||
:body => %Q{<?xml version="1.0" encoding="UTF-8"?><CreateHostedZoneRequest xmlns="https://route53.amazonaws.com/doc/#{@version}/"><Name>#{name}</Name>#{optional_tags}</CreateHostedZoneRequest>},
|
||||
:parser => Fog::Parsers::DNS::AWS::CreateHostedZone.new,
|
||||
:expects => 201,
|
||||
:method => 'POST',
|
||||
|
|
Loading…
Add table
Reference in a new issue