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
|
@persistent = options[:persistent] || true
|
||||||
@port = options[:port] || 443
|
@port = options[:port] || 443
|
||||||
@scheme = options[:scheme] || 'https'
|
@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)
|
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
|
||||||
end
|
end
|
||||||
|
|
|
@ -18,6 +18,9 @@ module Fog
|
||||||
attribute :created_at, :aliases => ['SubmittedAt']
|
attribute :created_at, :aliases => ['SubmittedAt']
|
||||||
attribute :alias_target, :aliases => ['AliasTarget']
|
attribute :alias_target, :aliases => ['AliasTarget']
|
||||||
attribute :change_id, :aliases => ['Id']
|
attribute :change_id, :aliases => ['Id']
|
||||||
|
attribute :region, :aliases => ['Region']
|
||||||
|
attribute :weight, :aliases => ['Weight']
|
||||||
|
attribute :set_identifier,:aliases => ['SetIdentifier']
|
||||||
|
|
||||||
def initialize(attributes={})
|
def initialize(attributes={})
|
||||||
self.ttl ||= 3600
|
self.ttl ||= 3600
|
||||||
|
@ -89,7 +92,10 @@ module Fog
|
||||||
:resource_records => [*value],
|
:resource_records => [*value],
|
||||||
:alias_target => symbolize_keys(alias_target),
|
:alias_target => symbolize_keys(alias_target),
|
||||||
:ttl => ttl,
|
:ttl => ttl,
|
||||||
:type => type
|
:type => type,
|
||||||
|
:weight => weight,
|
||||||
|
:set_identifier => set_identifier,
|
||||||
|
:region => region
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -33,7 +33,7 @@ module Fog
|
||||||
def get(record_id)
|
def get(record_id)
|
||||||
data = connection.get_change(record_id).body
|
data = connection.get_change(record_id).body
|
||||||
new(data)
|
new(data)
|
||||||
rescue Excon::Errors::Forbidden
|
rescue Excon::Errors::NotFound
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@ module Fog
|
||||||
def get(zone_id)
|
def get(zone_id)
|
||||||
data = connection.get_hosted_zone(zone_id).body
|
data = connection.get_hosted_zone(zone_id).body
|
||||||
new(data)
|
new(data)
|
||||||
rescue Excon::Errors::Forbidden
|
rescue Excon::Errors::NotFound
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ module Fog
|
||||||
def end_element(name)
|
def end_element(name)
|
||||||
if @section == :resource_record_set
|
if @section == :resource_record_set
|
||||||
case name
|
case name
|
||||||
when 'Name', 'Type', 'TTL'
|
when 'Name', 'Type', 'TTL', 'SetIdentifier', 'Weight', 'Region'
|
||||||
@resource_record_set[name] = value
|
@resource_record_set[name] = value
|
||||||
when 'Value'
|
when 'Value'
|
||||||
@resource_record_set['ResourceRecords'] << value
|
@resource_record_set['ResourceRecords'] << value
|
||||||
|
|
|
@ -58,6 +58,17 @@ module Fog
|
||||||
ttl_tag = ''
|
ttl_tag = ''
|
||||||
ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
|
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_records = change_item[:resource_records] || []
|
||||||
resource_record_tags = ''
|
resource_record_tags = ''
|
||||||
resource_records.each do |record|
|
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>}
|
alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName></AliasTarget>}
|
||||||
end
|
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
|
changes += change_tags
|
||||||
end
|
end
|
||||||
|
|
||||||
changes += '</Changes></ChangeBatch>'
|
changes += '</Changes></ChangeBatch>'
|
||||||
end
|
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({
|
request({
|
||||||
:body => body,
|
:body => body,
|
||||||
:parser => Fog::Parsers::DNS::AWS::ChangeResourceRecordSets.new,
|
:parser => Fog::Parsers::DNS::AWS::ChangeResourceRecordSets.new,
|
||||||
|
|
|
@ -44,7 +44,7 @@ module Fog
|
||||||
end
|
end
|
||||||
|
|
||||||
request({
|
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,
|
:parser => Fog::Parsers::DNS::AWS::CreateHostedZone.new,
|
||||||
:expects => 201,
|
:expects => 201,
|
||||||
:method => 'POST',
|
:method => 'POST',
|
||||||
|
|
Loading…
Add table
Reference in a new issue