right_aws_api 0.2.3 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64f50bf6419f2dab98f45aaf99cdba9cb1239e4f
4
- data.tar.gz: 02dcede70b66b401f4a2fb1227881623da8a2979
3
+ metadata.gz: d8bba3831173844f44970e8ec7de2bdf8deaccfd
4
+ data.tar.gz: 2d690e778c5465ba65af461b3f270a650f7c095b
5
5
  SHA512:
6
- metadata.gz: 8624a2807021be070b88d46783d923df81961ddd802517e61eb74eb2358d28d995c03fe57df35a4ef711c76e39e67de8ed8c954ed66f14725315201ebc644c55
7
- data.tar.gz: 5464bb232f2fa074ec5a26d8fd04df4c19fd3a7b71ff026ab14d273f791ba9a6ce0e333326d4c8fbf5b73cbd780252b85b140e7566314ccda47530c7454a3a3c
6
+ metadata.gz: 05dcde93bbe91da2df664699908be7983409703bbf915b886c1767f565e6fccf05219d4d4f8579cb035737d00073050ac6c380e198dc6d6d443becb89113c723
7
+ data.tar.gz: 274c90d8e49ae082c0e87e5116bb04b24c18bad63910a41f79e15360f88e4247ae5c0f5935f9688905fa7612df6440ba6b8cded63f2646acc56bbd3912bbffcd
data/HISTORY CHANGED
@@ -1,5 +1,13 @@
1
1
  == current
2
2
 
3
+ == 2015-03-12, v0.3.0
4
+ - Fixed bugs in Route53:
5
+ - new param added to ChangeResourceRecordSets: HostedZoneId -> TargetHostedZoneId
6
+ - method renamed: CreateHostedZones -> CreateHostedZone
7
+ - Route53 API 2013-04-01 support added
8
+ - Route53 Domain API v20140515 support added
9
+ - Switched to the newer version of right_cloud_api_base gem
10
+
3
11
  == 2015-01-16, v0.2.3
4
12
  - Added an ability to not use DNS like buckets in AWS S3
5
13
  - Added support for S3 folders creation
data/README.md CHANGED
@@ -33,6 +33,7 @@ The gem supports the following AWS services out of the box:
33
33
  - {RightScale::CloudApi::AWS::IAM::Manager Identity and Access Management (IAM)}
34
34
  - {RightScale::CloudApi::AWS::RDS::Manager Relational Database Service (RDS)}
35
35
  - {RightScale::CloudApi::AWS::Route53::Manager Route 53 (Route53)}
36
+ - {RightScale::CloudApi::AWS::Route53::Domain::Manager Route 53 Domain (Route53Domain)}
36
37
  - {RightScale::CloudApi::AWS::S3::Manager Simple Storage Service (S3)}
37
38
  - {RightScale::CloudApi::AWS::SDB::Manager Simple DB (SDB)}
38
39
  - {RightScale::CloudApi::AWS::SNS::Manager Simple Notification Service (SNS)}
@@ -55,7 +56,7 @@ call and you know what params it accepts - just call the method with those param
55
56
 
56
57
  key = ENV['AWS_ACCESS_KEY_ID']
57
58
  secret = ENV['AWS_SECRET_ACCESS_KEY']
58
- endpoint = 'https://us-east-1.ec2.amazonaws.com'
59
+ endpoint = 'https://ec2.us-east-1.amazonaws.com'
59
60
  ec2 = RightScale::CloudApi::AWS::EC2::Manager.new(key, secret, endpoint)
60
61
 
61
62
  ec2.ThisCallMustBeSupportedByEc2('Param.1' => 'A', 'Param.2' => 'B')
@@ -201,6 +201,7 @@ module RightScale
201
201
  result =
202
202
  case
203
203
  when host[ /^iam\.amazonaws\.com$/i ] then ['iam', 'us-east-1']
204
+ when host[ /^route53\.amazonaws\.com$/i ] then ['route53', 'us-east-1']
204
205
  when host[ /^(.*\.)?s3\.amazonaws\.com$/i ] then ['s3', 'us-east-1']
205
206
  when host[ /^(.*\.)?s3-external-1\.amazonaws\.com$/i ] then ['s3', 'us-east-1']
206
207
  when host[ /s3-website-([^.]+)\.amazonaws\.com$/i ] then ['s3', $1]
@@ -35,21 +35,21 @@ module RightScale
35
35
  # require "right_aws_api"
36
36
  #
37
37
  # # Create a manager to access EC2.
38
- # ec2 = RightScale::CloudApi::AWS::EC2::Manager::new(key, secret, 'https://us-east-1.ec2.amazonaws.com')
38
+ # ec2 = RightScale::CloudApi::AWS::EC2::Manager::new(key, secret, 'https://ec2.us-east-1.amazonaws.com')
39
39
  #
40
40
  # ec2.ThisCallMustBeSupportedByEc2('Param.1' => 'A', 'Param.2' => 'B')
41
41
  #
42
42
  # If there is a new API version just pass it to the manager and woohoo!
43
43
  #
44
44
  # @example
45
- # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://us-east-1.ec2.amazonaws.com', :api_version => "2010-08-31" )
45
+ # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://ec2.us-east-1.amazonaws.com', :api_version => "2010-08-31" )
46
46
  # ec2.DescribeInternetGateways # => Gateways list
47
47
  #
48
- # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://us-east-1.ec2.amazonaws.com', :api_version => "2011-05-15" )
48
+ # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://ec2.us-east-1.amazonaws.com', :api_version => "2011-05-15" )
49
49
  # ec2.DescribeInternetGateways # => Exception
50
50
  #
51
51
  # # Or even pass a different API version when making a call!
52
- # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://us-east-1.ec2.amazonaws.com', :api_version => "2010-08-31" )
52
+ # ec2 = RightScale::CloudApi::AWS::EC2::new(key, secret, 'https://ec2.us-east-1.amazonaws.com', :api_version => "2010-08-31" )
53
53
  # ec2.DescribeInternetGateways("InternetGatewayId"=>"igw-55660000") # => Exception
54
54
  # ec2.DescribeInternetGateways("InternetGatewayId"=>"igw-55660000", :options => { :api_version => "2011-05-15" }) #=> Gateway data
55
55
  #
@@ -0,0 +1,166 @@
1
+ #--
2
+ # Copyright (c) 2015 RightScale, Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # 'Software'), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ require "cloud/aws/base/helpers/utils"
25
+ require "cloud/aws/base/parsers/response_error"
26
+ require "cloud/aws/route53/domain/routines/request_signer"
27
+ require "cloud/aws/route53/domain/wrappers/default"
28
+
29
+ module RightScale
30
+ module CloudApi
31
+ module AWS
32
+
33
+ # Route 53 namespace
34
+ module Route53
35
+ module Domain
36
+
37
+ # Amazon Route 53 Domain compatible manager (thread safe).
38
+ #
39
+ # Supported API calls:
40
+ # - using get, post, put, etc methods:
41
+ # - any API call for any API version
42
+ # - using predefined methods in wrappers/default.rb (only API version 20140515):
43
+ # - CheckDomainAvailability
44
+ # - DeleteTagsForDomain
45
+ # - DisableDomainAutoRenew
46
+ # - DisableDomainTransferLock
47
+ # - EnableDomainAutoRenew
48
+ # - EnableDomainTransferLock
49
+ # - GetDomainDetail
50
+ # - GetOperationDetail
51
+ # - ListDomains
52
+ # - ListOperations
53
+ # - ListTagsForDomain
54
+ # - RegisterDomain
55
+ # - RetrieveDomainAuthCode
56
+ # - TransferDomain
57
+ # - UpdateDomainContact
58
+ # - UpdateDomainContactPrivacy
59
+ # - UpdateDomainNameservers
60
+ # - UpdateTagsForDomains
61
+ #
62
+ # @example
63
+ # require "right_aws_api"
64
+ #
65
+ # domain = RightScale::CloudApi::AWS::Route53::Domain::Manager::new(
66
+ # ENV['AWS_ACCESS_KEY_ID'],
67
+ # ENV['AWS_SECRET_ACCESS_KEY'],
68
+ # 'https://route53domains.us-east-1.amazonaws.com/'
69
+ # )
70
+ #
71
+ # # Using http verbs:
72
+ # domain.post('',
73
+ # :headers => {
74
+ # 'x-amz-target' => 'Route53Domains_v20140515.CheckDomainAvailability',
75
+ # 'content-type' => 'application/x-amz-json-1.1'
76
+ # },
77
+ # :body => { 'DomainName' => 'domain-name.com' }
78
+ # ) #=>
79
+ # {"Availability":"UNAVAILABLE"}
80
+ #
81
+ # # Using predefined methods:
82
+ # domain.CheckDomainAvailability("DomainName" => "foo-bar-weird.com") #=>
83
+ # {"Availability"=>"AVAILABLE"}
84
+ #
85
+ # @see ApiManager
86
+ # @see Wrapper::DEFAULT.extended Wrapper::DEFAULT.extended (click [View source])
87
+ # @see http://docs.aws.amazon.com/Route53/latest/APIReference/Welcome.html
88
+ #
89
+ class Manager < CloudApi::Manager
90
+ end
91
+
92
+
93
+ # Amazon Route 53 (Route) compatible manager (thread safe)
94
+ #
95
+ # @see Manager
96
+ #
97
+ class ApiManager < CloudApi::ApiManager
98
+
99
+ # RequestSigner Error
100
+ class Error < CloudApi::Error
101
+ end
102
+
103
+ # Default API version for Route53 service.
104
+ # To override the API version use :api_version key when instantiating a manager.
105
+ #
106
+ DEFAULT_API_VERSION = '20140515'
107
+
108
+ include Mixin::QueryApiPatterns
109
+
110
+ set_routine CloudApi::RetryManager
111
+ set_routine CloudApi::RequestInitializer
112
+ set_routine AWS::Route53::Domain::RequestSigner
113
+ set_routine CloudApi::RequestGenerator
114
+ set_routine CloudApi::ConnectionProxy
115
+ set_routine CloudApi::ResponseAnalyzer
116
+ set_routine CloudApi::ResponseParser
117
+ set_routine CloudApi::ResultWrapper
118
+
119
+ set :response_error_parser => Parser::AWS::ResponseErrorV2
120
+
121
+
122
+ # Constructor
123
+ #
124
+ # @param [String] aws_access_key_id
125
+ # @param [String] aws_secret_access_key
126
+ # @param [String] endpoint
127
+ # @param [Hash] options
128
+ #
129
+ # @example
130
+ # # see Manager class usage
131
+ #
132
+ # @see Manager
133
+ #
134
+ def initialize(aws_access_key_id, aws_secret_access_key, endpoint, options={})
135
+ credentials = { :aws_access_key_id => aws_access_key_id,
136
+ :aws_secret_access_key => aws_secret_access_key }
137
+ super(credentials, endpoint, options)
138
+ end
139
+
140
+
141
+ # Makes an API call to AWS::Route53 compatible cloud
142
+ #
143
+ # @param [String,Symbol] verb
144
+ # @param [Objects] args
145
+ #
146
+ # @return [Object]
147
+ #
148
+ # @example
149
+ # api(verb, opts={})
150
+ # # Where opts may have next keys: :options, :headers, :params
151
+ # api(verb, 'path', opts={})
152
+ #
153
+ def api(verb, *args, &block)
154
+ relative_path = args.first.is_a?(String) ? args.shift : ''
155
+ opts = args.shift || {}
156
+ raise Error::new("Opts must be Hash not #{opts.class.name}") unless opts.is_a?(Hash)
157
+ process_api_request(verb, relative_path, opts, &block)
158
+ end
159
+
160
+ end
161
+
162
+ end
163
+ end
164
+ end
165
+ end
166
+ end
@@ -0,0 +1,76 @@
1
+ #--
2
+ # Copyright (c) 2013 RightScale, Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # 'Software'), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ module RightScale
25
+ module CloudApi
26
+ module AWS
27
+ module Route53
28
+ module Domain
29
+
30
+ # Route 53 request signer
31
+ class RequestSigner < CloudApi::Routine
32
+
33
+ # Route53 RequestSigner Error
34
+ class Error < CloudApi::Error
35
+ end
36
+
37
+ # Authenticates a Route53 request
38
+ #
39
+ # @return [void]
40
+ #
41
+ # @example
42
+ # # no example
43
+ #
44
+ def process
45
+ # Fix body
46
+ unless @data[:request][:body]._blank?
47
+ # Make sure 'content-type' is set if we have a body
48
+ @data[:request][:headers].set_if_blank('content-type', 'application/x-amz-json-1.1' )
49
+ # Fix body if it is a Hash instance
50
+ if @data[:request][:body].is_a?(Hash)
51
+ @data[:request][:body] = Utils::contentify_body(@data[:request][:body], @data[:request][:headers]['content-type'])
52
+ end
53
+ # Calculate 'content-md5' when possible (some API calls wanna have it set)
54
+ if @data[:request][:body].is_a?(String)
55
+ @data[:request][:headers]['content-md5'] = Base64::encode64(Digest::MD5::digest(@data[:request][:body])).strip
56
+ end
57
+ end
58
+ # Set date
59
+ @data[:request][:headers].set_if_blank('x-amz-date', Time::now.utc.httpdate)
60
+ # Set path
61
+ @data[:request][:path] = Utils::join_urn(@data[:connection][:uri].path, @data[:request][:relative_path], @data[:request][:params])
62
+ # Sign a request
63
+ Utils::AWS::sign_v4_signature(
64
+ @data[:credentials][:aws_access_key_id],
65
+ @data[:credentials][:aws_secret_access_key],
66
+ @data[:connection][:uri].host,
67
+ @data[:request]
68
+ )
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,278 @@
1
+ #--
2
+ # Copyright (c) 2013 RightScale, Inc.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # 'Software'), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18
+ # IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19
+ # CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20
+ # TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21
+ # SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ module RightScale
25
+ module CloudApi
26
+ module AWS
27
+ module Route53
28
+ module Domain
29
+
30
+ # Route 53 Domain wrapper namespace
31
+ module Wrapper
32
+
33
+ # Default wrapper
34
+ module DEFAULT
35
+
36
+ # Defines QUERY API like methods for the service
37
+ #
38
+ # @return [void]
39
+ #
40
+ # @example
41
+ # # no example
42
+ #
43
+ def self.extended(base)
44
+
45
+ #----------------------
46
+ # Domain Registration
47
+ #----------------------
48
+
49
+ # Attention: host: route53domains.us-east-1.amazonaws.com
50
+
51
+ base.query_api_pattern 'CheckDomainAvailability', :post, '',
52
+ :headers => {
53
+ 'content-type' => 'application/x-amz-json-1.1',
54
+ 'x-amz-target' => 'Route53Domains_v20140515.CheckDomainAvailability'
55
+ },
56
+ :body => {
57
+ 'DomainName' => :DomainName
58
+ }
59
+
60
+ base.query_api_pattern 'RegisterDomain', :post, '',
61
+ :headers => {
62
+ 'content-type' => 'application/x-amz-json-1.1',
63
+ 'x-amz-target' => 'Route53Domains_v20140515.RegisterDomain'
64
+ },
65
+ :body => {
66
+ 'DomainName' => :DomainName,
67
+ 'DurationInYears' => :DurationInYears,
68
+ 'AutoRenew' => :AutoRenew,
69
+ 'RegistrantContact' => :RegistrantContact,
70
+ 'AdminContact' => :AdminContact,
71
+ 'TechContact' => :TechContact,
72
+ 'PrivacyProtectionRegistrantContact' => :PrivacyProtectionRegistrantContact,
73
+ 'PrivacyProtectionAdminContact' => :PrivacyProtectionAdminContact,
74
+ 'PrivacyProtectionTechContact' => :PrivacyProtectionTechContact
75
+ },
76
+ :defaults => {
77
+ :AutoRenew => Utils::NONE,
78
+ :PrivacyProtectionRegistrantContact => Utils::NONE,
79
+ :PrivacyProtectAdminContact => Utils::NONE,
80
+ :PrivacyProtectTechContact => Utils::NONE
81
+ }
82
+
83
+ base.query_api_pattern 'UpdateDomainContact', :post, '',
84
+ :headers => {
85
+ 'content-type' => 'application/x-amz-json-1.1',
86
+ 'x-amz-target' => 'Route53Domains_v20140515.UpdateDomainContact'
87
+ },
88
+ :body => {
89
+ 'DomainName' => :DomainName,
90
+ 'RegistrantContact' => :RegistrantContact,
91
+ 'AdminContact' => :AdminContact,
92
+ 'TechContact' => :TechContact
93
+ }
94
+
95
+ base.query_api_pattern 'UpdateDomainNameservers', :post, '',
96
+ :headers => {
97
+ 'content-type' => 'application/x-amz-json-1.1',
98
+ 'x-amz-target' => 'Route53Domains_v20140515.UpdateDomainNameservers'
99
+ },
100
+ :body => {
101
+ 'DomainName' => :DomainName,
102
+ 'Nameservers' => :Nameservers
103
+ }
104
+
105
+ base.query_api_pattern 'UpdateDomainContactPrivacy', :post, '',
106
+ :headers => {
107
+ 'content-type' => 'application/x-amz-json-1.1',
108
+ 'x-amz-target' => 'Route53Domains_v20140515.UpdateDomainContactPrivacy'
109
+ },
110
+ :body => {
111
+ 'DomainName' => :DomainName,
112
+ 'AdminPrivacy' => :AdminPrivacy,
113
+ 'RegistrantPrivacy' => :RegistrantPrivacy,
114
+ 'TechPrivacy' => :TechPrivacy
115
+ },
116
+ :defaults => {
117
+ :AdminPrivacy => Utils::NONE,
118
+ :RegistrantPrivacy => Utils::NONE,
119
+ :TechPrivacy => Utils::NONE
120
+ }
121
+
122
+ base.query_api_pattern 'EnableDomainAutoRenew', :post, '',
123
+ :headers => {
124
+ 'content-type' => 'application/x-amz-json-1.1',
125
+ 'x-amz-target' => 'Route53Domains_v20140515.EnableDomainAutoRenew'
126
+ },
127
+ :body => {
128
+ 'DomainName' => :DomainName
129
+ }
130
+
131
+ base.query_api_pattern 'DisableDomainAutoRenew', :post, '',
132
+ :headers => {
133
+ 'content-type' => 'application/x-amz-json-1.1',
134
+ 'x-amz-target' => 'Route53Domains_v20140515.DisableDomainAutoRenew'
135
+ },
136
+ :body => {
137
+ 'DomainName' => :DomainName
138
+ }
139
+
140
+ base.query_api_pattern 'ListDomains', :post, '',
141
+ :headers => {
142
+ 'content-type' => 'application/x-amz-json-1.1',
143
+ 'x-amz-target' => 'Route53Domains_v20140515.ListDomains'
144
+ },
145
+ :body => {
146
+ 'Marker' => :Marker,
147
+ 'MaxItems' => :MaxItems
148
+ },
149
+ :defaults => {
150
+ :Marker => Utils::NONE,
151
+ :MaxItems => Utils::NONE
152
+ }
153
+
154
+ base.query_api_pattern 'GetDomainDetail', :post, '',
155
+ :headers => {
156
+ 'content-type' => 'application/x-amz-json-1.1',
157
+ 'x-amz-target' => 'Route53Domains_v20140515.GetDomainDetail'
158
+ },
159
+ :body => {
160
+ 'DomainName' => :DomainName
161
+ }
162
+
163
+ base.query_api_pattern 'ListOperations', :post, '',
164
+ :headers => {
165
+ 'content-type' => 'application/x-amz-json-1.1',
166
+ 'x-amz-target' => 'Route53Domains_v20140515.ListOperations'
167
+ },
168
+ :body => {
169
+ 'Marker' => :Marker,
170
+ 'MaxItems' => :MaxItems
171
+ },
172
+ :defaults => {
173
+ :Marker => Utils::NONE,
174
+ :MaxItems => Utils::NONE
175
+ }
176
+
177
+
178
+ base.query_api_pattern 'GetOperationDetail', :post, '',
179
+ :headers => {
180
+ 'content-type' => 'application/x-amz-json-1.1',
181
+ 'x-amz-target' => 'Route53Domains_v20140515.GetOperationDetail'
182
+ },
183
+ :body => {
184
+ 'OperationId' => :OperationId
185
+ }
186
+
187
+ base.query_api_pattern 'DisableDomainTransferLock', :post, '',
188
+ :headers => {
189
+ 'content-type' => 'application/x-amz-json-1.1',
190
+ 'x-amz-target' => 'Route53Domains_v20140515.DisableDomainTransferLock'
191
+ },
192
+ :body => {
193
+ 'DomainName' => :DomainName
194
+ }
195
+
196
+ base.query_api_pattern 'EnableDomainTransferLock', :post, '',
197
+ :headers => {
198
+ 'content-type' => 'application/x-amz-json-1.1',
199
+ 'x-amz-target' => 'Route53Domains_v20140515.EnableDomainTransferLock'
200
+ },
201
+ :body => {
202
+ 'DomainName' => :DomainName
203
+ }
204
+
205
+ base.query_api_pattern 'RetrieveDomainAuthCode', :post, '',
206
+ :headers => {
207
+ 'content-type' => 'application/x-amz-json-1.1',
208
+ 'x-amz-target' => 'Route53Domains_v20140515.RetrieveDomainAuthCode'
209
+ },
210
+ :body => {
211
+ 'DomainName' => :DomainName
212
+ }
213
+
214
+ base.query_api_pattern 'TransferDomain', :post, '',
215
+ :headers => {
216
+ 'content-type' => 'application/x-amz-json-1.1',
217
+ 'x-amz-target' => 'Route53Domains_v20140515.TransferDomain'
218
+ },
219
+ :body => {
220
+ 'DomainName' => :DomainName,
221
+ 'DurationInYears' => :DurationInYears,
222
+ 'AuthCode' => :AuthCode,
223
+ 'AutoRenew' => :AutoRenew,
224
+ 'RegistrantContact' => :RegistrantContact,
225
+ 'AdminContact' => :AdminContact,
226
+ 'TechContact' => :TechContact,
227
+ 'PrivacyProtectionRegistrantContact' => :PrivacyProtectionRegistrantContact,
228
+ 'PrivacyProtectionAdminContact' => :PrivacyProtectionAdminContact,
229
+ 'PrivacyProtectionTechContact' => :PrivacyProtectionTechContact
230
+ },
231
+ :defaults => {
232
+ :AutoRenew => Utils::NONE,
233
+ :PrivacyProtectionRegistrantContact => Utils::NONE,
234
+ :PrivacyProtectAdminContact => Utils::NONE,
235
+ :PrivacyProtectTechContact => Utils::NONE
236
+ }
237
+
238
+ #----------------------
239
+ # Actions on Tags for Domains
240
+ #----------------------
241
+
242
+ base.query_api_pattern 'UpdateTagsForDomains', :post, '',
243
+ :headers => {
244
+ 'content-type' => 'application/x-amz-json-1.1',
245
+ 'x-amz-target' => 'Route53Domains_v20140515.UpdateTagsForDomains'
246
+ },
247
+ :body => {
248
+ 'DomainName' => :DomainName,
249
+ 'TagsToUpdate' => :TagsToUpdate
250
+ }
251
+
252
+ base.query_api_pattern 'ListTagsForDomain', :post, '',
253
+ :headers => {
254
+ 'content-type' => 'application/x-amz-json-1.1',
255
+ 'x-amz-target' => 'Route53Domains_v20140515.ListTagsForDomain'
256
+ },
257
+ :body => {
258
+ 'DomainName' => :DomainName
259
+ }
260
+
261
+ base.query_api_pattern 'DeleteTagsForDomain', :post, '',
262
+ :headers => {
263
+ 'content-type' => 'application/x-amz-json-1.1',
264
+ 'x-amz-target' => 'Route53Domains_v20140515.DeleteTagsForDomain'
265
+ },
266
+ :body => {
267
+ 'DomainName' => :DomainName,
268
+ 'TagsToDelete' => :TagsToDelete
269
+ }
270
+
271
+ end
272
+ end
273
+ end
274
+ end
275
+ end
276
+ end
277
+ end
278
+ end
@@ -35,6 +35,46 @@ module RightScale
35
35
 
36
36
  # Amazon Route 53 (Route53) compatible manager (thread safe).
37
37
  #
38
+ # Supported API calls:
39
+ # - using get, post, put, etc methods:
40
+ # - any API call for any API version
41
+ # - using predefined methods in wrappers/default.rb (only API version 2013-04-01):
42
+ # # Hosted Zones
43
+ # - AssociateVPCWithHostedZone
44
+ # - CreateHostedZone
45
+ # - DeleteHostedZone
46
+ # - DisassociateVPCFromHostedZone
47
+ # - GetHostedZone
48
+ # - GetHostedZoneCount
49
+ # - ListHostedZone
50
+ # - ListHostedZonesByName
51
+ # - UpdateHostedZoneComment
52
+ # # Resource Record Sets
53
+ # - ChangeResourceRecordSets
54
+ # - GetChange
55
+ # - GetGeoLocation
56
+ # - ListGeoLocations
57
+ # - ListResourceRecordSets
58
+ # # Reusable Delegation Sets
59
+ # - CreateReusableDelegationSet
60
+ # - DeleteReusableDelegationSet
61
+ # - GetReusableDelegationSet
62
+ # - ListReusableDelegationSets
63
+ # # Health Check
64
+ # - CreateHealthCheck
65
+ # - DeleteHealthCheck
66
+ # - GetCheckerIpRanges
67
+ # - GetHealthCheck
68
+ # - GetHealthCheckCount
69
+ # - GetHealthCheckLastFailureReason
70
+ # - GetHealthCheckStatus
71
+ # - ListHealthChecks
72
+ # - UpdateHealthCheck
73
+ # # Tags for Hosted Zones and Health Checks
74
+ # - ChangeTagsForResource
75
+ # - ListTagsForResource
76
+ # - ListTagsForResources
77
+ #
38
78
  # @example
39
79
  # require "right_aws_api"
40
80
  #
@@ -44,7 +84,7 @@ module RightScale
44
84
  # 'https://route53.amazonaws.com'
45
85
  # )
46
86
  #
47
- # r53.ListHostedZones #=>
87
+ # r53.ListHostedZones #=>
48
88
  # {"ListHostedZonesResponse"=>
49
89
  # {"IsTruncated"=>"false",
50
90
  # "HostedZones"=>
@@ -54,15 +94,15 @@ module RightScale
54
94
  # "Config"=>{"Comment"=>"This is RightScale test hosted zone."},
55
95
  # "Id"=>"/hostedzone/Z3AINKOIEY1X3X"}},
56
96
  # "MaxItems"=>"100",
57
- # "@xmlns"=>"https://route53.amazonaws.com/doc/2011-05-05/"}}
97
+ # "@xmlns"=>"https://route53.amazonaws.com/doc/2013-04-01/"}}
58
98
  #
59
99
  #
60
100
  # @example
61
- # r53.ListResourceRecordSets #=>
101
+ # r53.ListResourceRecordSets #=>
62
102
  # {"ListResourceRecordSetsResponse"=>
63
103
  # {"IsTruncated"=>"false",
64
104
  # "MaxItems"=>"100",
65
- # "@xmlns"=>"https://route53.amazonaws.com/doc/2011-05-05/",
105
+ # "@xmlns"=>"https://route53.amazonaws.com/doc/2013-04-01/",
66
106
  # "ResourceRecordSets"=>
67
107
  # {"ResourceRecordSet"=>
68
108
  # [{"ResourceRecords"=>
@@ -111,11 +151,11 @@ module RightScale
111
151
  # RequestSigner Error
112
152
  class Error < CloudApi::Error
113
153
  end
114
-
154
+
115
155
  # Default API version for Route53 service.
116
156
  # To override the API version use :api_version key when instantiating a manager.
117
157
  #
118
- DEFAULT_API_VERSION = '2011-05-05'
158
+ DEFAULT_API_VERSION = '2013-04-01'
119
159
 
120
160
  include Mixin::QueryApiPatterns
121
161
 
@@ -141,7 +181,7 @@ module RightScale
141
181
  # @example
142
182
  # # see Manager class usage
143
183
  #
144
- # @see Manager
184
+ # @see Manager
145
185
  #
146
186
  def initialize(aws_access_key_id, aws_secret_access_key, endpoint, options={})
147
187
  credentials = { :aws_access_key_id => aws_access_key_id,
@@ -168,7 +208,7 @@ module RightScale
168
208
  raise Error::new("Opts must be Hash not #{opts.class.name}") unless opts.is_a?(Hash)
169
209
  process_api_request(verb, relative_path, opts, &block)
170
210
  end
171
-
211
+
172
212
  end
173
213
 
174
214
  end
@@ -25,7 +25,7 @@ module RightScale
25
25
  module CloudApi
26
26
  module AWS
27
27
  module Route53
28
-
28
+
29
29
  # Route 53 request signer
30
30
  class RequestSigner < CloudApi::Routine
31
31
 
@@ -55,14 +55,18 @@ module RightScale
55
55
  end
56
56
  end
57
57
  # Set date
58
- @data[:request][:headers].set_if_blank('date', Time::now.utc.httpdate)
59
- # Sign a request
60
- signature = Utils::AWS::sign(@data[:credentials][:aws_secret_access_key], Utils::dearrayify(@data[:request][:headers]['date']))
61
- @data[:request][:headers]['x-amzn-authorization'] = "AWS3-HTTPS AWSAccessKeyId=#{@data[:credentials][:aws_access_key_id]},Algorithm=HmacSHA1,Signature=#{signature}"
58
+ @data[:request][:headers].set_if_blank('x-amz-date', Time::now.utc.httpdate)
62
59
  # Set path
63
60
  @data[:request][:path] = Utils::join_urn(@data[:connection][:uri].path, @data[:options][:api_version], @data[:request][:relative_path], @data[:request][:params])
61
+ # Sign a request
62
+ Utils::AWS::sign_v4_signature(
63
+ @data[:credentials][:aws_access_key_id],
64
+ @data[:credentials][:aws_secret_access_key],
65
+ @data[:connection][:uri].host,
66
+ @data[:request]
67
+ )
64
68
  end
65
-
69
+
66
70
  end
67
71
  end
68
72
  end
@@ -31,7 +31,7 @@ module RightScale
31
31
 
32
32
  # Default wrapper
33
33
  module DEFAULT
34
-
34
+
35
35
  # Defines QUERY API like methods for the service
36
36
  #
37
37
  # @return [void]
@@ -44,47 +44,89 @@ module RightScale
44
44
  #-----------------
45
45
  # Hosted Zones
46
46
  #-----------------
47
-
48
-
49
- base.query_api_pattern 'ListHostedZones', :get, 'hostedzone'
50
-
51
-
52
- base.query_api_pattern 'GetHostedZone', :get, 'hostedzone/{:HostedZoneId}'
53
47
 
54
-
55
- base.query_api_pattern 'CreateHostedZones', :post, 'hostedzone',
48
+ base.query_api_pattern 'CreateHostedZone', :post, 'hostedzone',
56
49
  :body => {
57
50
  'CreateHostedZoneRequest' => {
58
51
  'Name' => :Name,
59
52
  'CallerReference' => :CallerReference,
60
53
  'HostedZoneConfig{!remove-if-blank}' => {
61
54
  'Comment' => :Comment
55
+ },
56
+ 'DelegationSetId' => :DelegationSetId,
57
+ 'VPC{!remove-if-blank}' => {
58
+ 'VPCId' => :VPCId,
59
+ 'VPCRegion' => :VPCRegion
62
60
  }
63
61
  }
64
62
  },
65
63
  :defaults => {
66
- :Comment => Utils::NONE
64
+ :Comment => Utils::NONE,
65
+ :DelegationSetId => Utils::NONE,
66
+ :VPCId => Utils::NONE,
67
+ :VPCRegion => Utils::NONE
67
68
  }
68
-
69
-
69
+
70
+ base.query_api_pattern 'ListHostedZone', :get, 'hostedzone'
71
+
72
+ base.query_api_pattern 'ListHostedZonesByName', :get, 'hostedzonesbyname'
73
+
74
+ base.query_api_pattern 'GetHostedZone', :get, 'hostedzone/{:HostedZoneId}'
75
+
76
+ base.query_api_pattern 'GetHostedZoneCount', :get, 'hostedzonecount'
77
+
78
+ base.query_api_pattern 'UpdateHostedZoneComment', :post, 'hostedzone/{:HostedZoneId}',
79
+ :body => {
80
+ 'UpdateHostedZoneCommentRequest' => {
81
+ 'Comment' => :Comment
82
+ }
83
+ }
84
+
85
+ base.query_api_pattern 'AssociateVPCWithHostedZone', :post, 'hostedzone/{:HostedZoneId}/associatevpc',
86
+ :body => {
87
+ 'AssociateVPCWithHostedZoneRequest' => {
88
+ 'VPC{!remove-if-blank}' => {
89
+ 'VPCId' => :VPCId,
90
+ 'VPCRegion' => :VPCRegion
91
+ },
92
+ 'Comment' => :Comment
93
+ }
94
+ },
95
+ :defaults => {
96
+ :Comment => Utils::NONE,
97
+ }
98
+
99
+ base.query_api_pattern 'DisassociateVPCFromHostedZone', :post, 'hostedzone/{:HostedZoneId}/disassociatevpc',
100
+ :body => {
101
+ 'DisassociateVPCFromHostedZoneRequest' => {
102
+ 'VPC{!remove-if-blank}' => {
103
+ 'VPCId' => :VPCId,
104
+ 'VPCRegion' => :VPCRegion
105
+ },
106
+ 'Comment' => :Comment
107
+ }
108
+ },
109
+ :defaults => {
110
+ :Comment => Utils::NONE,
111
+ }
112
+
70
113
  base.query_api_pattern 'DeleteHostedZone', :delete, 'hostedzone/{:HostedZoneId}'
71
-
72
114
 
73
115
  #----------------------
74
116
  # Resource Record Sets
75
117
  #----------------------
76
118
 
77
-
78
119
  base.query_api_pattern 'ListResourceRecordSets', :get, 'hostedzone/{:HostedZoneId}/rrset'
79
-
80
120
 
81
121
  base.query_api_pattern 'GetChange', :get, 'change/{:ChangeId}'
82
-
83
-
122
+
123
+ base.query_api_pattern 'GetGeoLocation', :get, 'geolocation'
124
+
125
+ base.query_api_pattern 'ListGeoLocations', :get, 'geolocations'
126
+
84
127
  base.query_api_pattern 'ChangeResourceRecordSets', :post, 'hostedzone/{:HostedZoneId}/rrset',
85
128
  :body => {
86
129
  'ChangeResourceRecordSetsRequest' => {
87
- '@xmlns' => 'https://route53.amazonaws.com/doc/2011-05-05/',
88
130
  'ChangeBatch' => {
89
131
  'Comment' => :Comment,
90
132
  'Changes' => {
@@ -94,17 +136,25 @@ module RightScale
94
136
  'Name' => :Name,
95
137
  'Type' => :Type,
96
138
  'AliasTarget{!remove-if-blank}' => {
97
- 'HostedZoneId' => :HostedZoneId,
98
- 'DNSName' => :DNSName
139
+ 'HostedZoneId' => :TargetHostedZoneId,
140
+ 'DNSName' => :DNSName,
141
+ 'EvaluateTargetHealth' => :EvaluateTargetHealth
142
+ },
143
+ 'GeoLocation{!remove-if-blank}' => {
144
+ 'ContinentCode' => :ContinentCode,
145
+ 'CountryCode' => :CountryCode,
146
+ 'SubdivisionCode' => :SubdivisionCode
99
147
  },
100
148
  'SetIdentifier' => :SetIdentifier,
101
149
  'Weight' => :Weight,
102
150
  'TTL' => :TTL,
151
+ 'Failover' => :Failover,
103
152
  'ResourceRecords{!remove-if-blank}' => {
104
153
  'ResourceRecord{!remove-if-blank}' => {
105
154
  'Value' => :ResourceRecord
106
155
  }
107
- }
156
+ },
157
+ 'HealthCheckId' => :HealthCheckId
108
158
  }
109
159
  }
110
160
  }
@@ -112,19 +162,135 @@ module RightScale
112
162
  }
113
163
  },
114
164
  :defaults => {
115
- :Comment => Utils::NONE,
116
- :TTL => Utils::NONE,
117
- :DNSName => Utils::NONE,
118
- :HostedZoneId => Utils::NONE,
119
- :SetIdentifier => Utils::NONE,
120
- :Weight => Utils::NONE,
121
- :ResourceRecord => Utils::NONE
165
+ :Comment => Utils::NONE,
166
+ :TTL => Utils::NONE,
167
+ :DNSName => Utils::NONE,
168
+ :TargetHostedZoneId => Utils::NONE,
169
+ :SetIdentifier => Utils::NONE,
170
+ :Weight => Utils::NONE,
171
+ :ResourceRecord => Utils::NONE,
172
+ :HealthCheckId => Utils::NONE,
173
+ :EvaluateTargetHealth => Utils::NONE,
174
+ :Failover => Utils::NONE,
175
+ :ContinentCode => Utils::NONE,
176
+ :CountryCode => Utils::NONE,
177
+ :SubdivisionCode => Utils::NONE
122
178
  }
123
-
124
-
179
+
180
+ #----------------------
181
+ # Reusable Delegation Sets
182
+ #----------------------
183
+
184
+ base.query_api_pattern 'CreateReusableDelegationSet', :post, 'delegationset',
185
+ :body => {
186
+ 'CreateReusableDelegationSetRequest' => {
187
+ 'CallerReference' => :CallerReference,
188
+ 'HostedZoneId' => :HostedZoneId
189
+ }
190
+ }
191
+
192
+ base.query_api_pattern 'ListReusableDelegationSets', :get, 'delegationset'
193
+
194
+ base.query_api_pattern 'GetReusableDelegationSet', :get, 'delegationset/{:ReusableDelegationSetId}'
195
+
196
+ base.query_api_pattern 'DeleteReusableDelegationSet', :delete, 'delegationset/{:ReusableDelegationSetId}'
197
+
198
+ #----------------------
199
+ # Health Check
200
+ #----------------------
201
+
202
+ base.query_api_pattern 'CreateHealthCheck', :post, 'healthcheck',
203
+ :body => {
204
+ 'CreateHealthCheckRequest' => {
205
+ 'CallerReference' => :CallerReference,
206
+ 'HealthCheckConfig' => {
207
+ 'IPAddress' => :IPAddress,
208
+ 'Port' => :Port,
209
+ 'Type' => :Type,
210
+ 'FullyQualifiedDomainName' => :FullyQualifiedDomainName,
211
+ 'SearchString' => :SearchString,
212
+ 'RequestInterval' => :RequestInterval,
213
+ 'FailureThreshold' => :FailureThreshold
214
+ }
215
+ }
216
+ },
217
+ :defaults => {
218
+ :IPAddress => Utils::NONE,
219
+ :Port => Utils::NONE,
220
+ :ResourcePath => Utils::NONE,
221
+ :FullyQualifiedDomainName => Utils::NONE,
222
+ :SearchString => Utils::NONE,
223
+ :RequestInterval => Utils::NONE,
224
+ :FailureThreshold => Utils::NONE,
225
+ }
226
+
227
+ base.query_api_pattern 'UpdateHealthCheck', :post, 'healthcheck/{:HealthCheckId}',
228
+ :body => {
229
+ 'CreateHealthCheckRequest' => {
230
+ 'HealthCheckVersion' => :HealthCheckVersion,
231
+ 'IPAddress' => :IPAddress,
232
+ 'Port' => :Port,
233
+ 'FullyQualifiedDomainName' => :FullyQualifiedDomainName,
234
+ 'SearchString' => :SearchString,
235
+ 'RequestInterval' => :RequestInterval,
236
+ 'FailureThreshold' => :FailureThreshold
237
+ }
238
+ },
239
+ :defaults => {
240
+ :IPAddress => Utils::NONE,
241
+ :Port => Utils::NONE,
242
+ :ResourcePath => Utils::NONE,
243
+ :FullyQualifiedDomainName => Utils::NONE,
244
+ :SearchString => Utils::NONE,
245
+ :RequestInterval => Utils::NONE,
246
+ :FailureThreshold => Utils::NONE,
247
+ }
248
+
249
+ base.query_api_pattern 'ListHealthChecks', :get, 'healthcheck'
250
+
251
+ base.query_api_pattern 'GetHealthCheck', :get, 'healthcheck/{:HealthCheckId}'
252
+
253
+ base.query_api_pattern 'GetHealthCheckStatus', :get, 'healthcheck/{:HealthCheckId}/status'
254
+
255
+ base.query_api_pattern 'GetHealthCheckLastFailureReason', :get, 'healthcheck/{:HealthCheckId}/lastfailurereason'
256
+
257
+ base.query_api_pattern 'GetCheckerIpRanges', :get, 'checkeripranges'
258
+
259
+ base.query_api_pattern 'GetHealthCheckCount', :get, 'healthcheckcount'
260
+
261
+ base.query_api_pattern 'DeleteHealthCheck', :delete, 'healthcheck/{:HealthCheckId}'
262
+
263
+ #----------------------
264
+ # Tags for Hosted Zones and Health Checks
265
+ #----------------------
266
+
267
+ base.query_api_pattern 'ChangeTagsForResource', :post, 'tags/{:ResourceType}/{:ResourceId}',
268
+ :body => {
269
+ 'ChangeTagsForResourceRequest' => {
270
+ 'RemoveTagKeys' => :RemoveTagKeys,
271
+ 'AddTags{!remove-if-blank}' => {
272
+ 'Tag' => :Tag
273
+ }
274
+ }
275
+ },
276
+ :defaults => {
277
+ :RemoveTagKeys => Utils::NONE,
278
+ :Tag => Utils::NONE
279
+ }
280
+
281
+ base.query_api_pattern 'ListTagsForResource', :get, 'tags/{:ResourceType}/{:ResourceId}'
282
+
283
+ base.query_api_pattern 'ListTagsForResources', :get, 'tags/{:ResourceType}',
284
+ :body => {
285
+ 'ListTagsForResourcesRequest' => {
286
+ 'ResourceIds' => {
287
+ 'ResourceId' => :ResourceId
288
+ }
289
+ }
290
+ }
291
+
125
292
  end
126
-
127
- end
293
+ end
128
294
  end
129
295
  end
130
296
  end
@@ -196,7 +196,6 @@ module RightScale
196
196
  #
197
197
  # @param [String] bucket
198
198
  # @param [String] object
199
- # @param [Hash] params
200
199
  #
201
200
  # @return [String]
202
201
  #
@@ -39,6 +39,7 @@ require "cloud/aws/emr/manager"
39
39
  require "cloud/aws/iam/manager"
40
40
  require "cloud/aws/rds/manager"
41
41
  require "cloud/aws/route53/manager"
42
+ require "cloud/aws/route53/domain/manager"
42
43
  require "cloud/aws/s3/manager"
43
44
  require "cloud/aws/s3/link/manager"
44
45
  require "cloud/aws/sdb/manager"
@@ -33,7 +33,7 @@ module RightScale
33
33
  # Gem version namespace
34
34
  module VERSION
35
35
  # Current version
36
- STRING = '0.2.3'
36
+ STRING = '0.3.0'
37
37
  end
38
38
  end
39
39
  end
@@ -35,7 +35,7 @@ Gem::Specification.new do |spec|
35
35
  spec.require_path = 'lib'
36
36
  spec.required_ruby_version = '>= 1.8.7'
37
37
 
38
- spec.add_dependency 'right_cloud_api_base', '>= 0.2.1'
38
+ spec.add_dependency 'right_cloud_api_base', '>= 0.2.2'
39
39
 
40
40
  spec.add_development_dependency 'rake'
41
41
  spec.add_development_dependency 'rspec', '>= 3.0.0'
@@ -76,7 +76,7 @@ describe RightScale::CloudApi::AWS do
76
76
  ec2 = RightScale::CloudApi::AWS::EC2::Manager::new(
77
77
  ENV['AWS_ACCESS_KEY_ID'],
78
78
  ENV['AWS_SECRET_ACCESS_KEY'],
79
- 'https://us-east-1.ec2.amazonaws.com/',
79
+ 'https://ec2.us-east-1.amazonaws.com/',
80
80
  :api_version => '2011-07-15',
81
81
  :logger => nil )
82
82
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_aws_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RightScale, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-03 00:00:00.000000000 Z
11
+ date: 2015-05-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: right_cloud_api_base
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.1
19
+ version: 0.2.2
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.1
26
+ version: 0.2.2
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -100,6 +100,9 @@ files:
100
100
  - lib/cloud/aws/emr/manager.rb
101
101
  - lib/cloud/aws/iam/manager.rb
102
102
  - lib/cloud/aws/rds/manager.rb
103
+ - lib/cloud/aws/route53/domain/manager.rb
104
+ - lib/cloud/aws/route53/domain/routines/request_signer.rb
105
+ - lib/cloud/aws/route53/domain/wrappers/default.rb
103
106
  - lib/cloud/aws/route53/manager.rb
104
107
  - lib/cloud/aws/route53/routines/request_signer.rb
105
108
  - lib/cloud/aws/route53/wrappers/default.rb