fog 0.3.34 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +6 -6
- data/README.rdoc +26 -7
- data/Rakefile +7 -1
- data/examples/dns_tests.rb +76 -0
- data/examples/{storage.rb → storage_tests.rb} +15 -15
- data/fog.gemspec +4 -4
- data/lib/fog.rb +1 -1
- data/lib/fog/aws.rb +19 -54
- data/lib/fog/aws/dns.rb +5 -1
- data/lib/fog/aws/models/compute/security_group.rb +128 -0
- data/lib/fog/aws/models/dns/record.rb +64 -0
- data/lib/fog/aws/models/dns/records.rb +47 -0
- data/lib/fog/aws/models/dns/zone.rb +53 -0
- data/lib/fog/aws/models/dns/zones.rb +33 -0
- data/lib/fog/aws/models/storage/file.rb +14 -2
- data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +1 -1
- data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +3 -1
- data/lib/fog/aws/requests/simpledb/create_domain.rb +1 -0
- data/lib/fog/aws/requests/simpledb/delete_attributes.rb +0 -2
- data/lib/fog/aws/requests/simpledb/delete_domain.rb +1 -0
- data/lib/fog/aws/requests/simpledb/domain_metadata.rb +1 -0
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +1 -0
- data/lib/fog/aws/requests/simpledb/list_domains.rb +3 -2
- data/lib/fog/aws/requests/simpledb/put_attributes.rb +2 -2
- data/lib/fog/aws/requests/simpledb/select.rb +1 -0
- data/lib/fog/brightbox/compute.rb +9 -0
- data/lib/fog/brightbox/models/compute/load_balancer.rb +50 -0
- data/lib/fog/brightbox/models/compute/load_balancers.rb +28 -0
- data/lib/fog/brightbox/requests/compute/add_nodes_load_balancer.rb +28 -0
- data/lib/fog/brightbox/requests/compute/create_load_balancer.rb +27 -0
- data/lib/fog/brightbox/requests/compute/destroy_load_balancer.rb +28 -0
- data/lib/fog/brightbox/requests/compute/get_load_balancer.rb +28 -0
- data/lib/fog/brightbox/requests/compute/list_load_balancers.rb +27 -0
- data/lib/fog/brightbox/requests/compute/remove_nodes_load_balancer.rb +28 -0
- data/lib/fog/brightbox/requests/compute/update_load_balancer.rb +29 -0
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/dns.rb +25 -0
- data/lib/fog/core/mock.rb +34 -0
- data/lib/fog/google/models/storage/file.rb +14 -2
- data/lib/fog/linode/dns.rb +4 -0
- data/lib/fog/linode/models/dns/record.rb +69 -0
- data/lib/fog/linode/models/dns/records.rb +37 -0
- data/lib/fog/linode/models/dns/zone.rb +84 -0
- data/lib/fog/linode/models/dns/zones.rb +29 -0
- data/lib/fog/linode/requests/dns/domain_create.rb +2 -3
- data/lib/fog/linode/requests/dns/domain_resource_create.rb +3 -4
- data/lib/fog/linode/requests/dns/domain_resource_list.rb +5 -2
- data/lib/fog/linode/requests/dns/domain_resource_update.rb +2 -2
- data/lib/fog/linode/requests/dns/domain_update.rb +2 -2
- data/lib/fog/rackspace/requests/compute/create_image.rb +1 -1
- data/lib/fog/rackspace/requests/compute/create_server.rb +1 -1
- data/lib/fog/rackspace/requests/compute/get_flavor_details.rb +19 -1
- data/lib/fog/rackspace/requests/compute/list_flavors.rb +14 -1
- data/lib/fog/rackspace/requests/compute/list_flavors_detail.rb +14 -1
- data/lib/fog/slicehost/bin.rb +1 -1
- data/lib/fog/slicehost/dns.rb +4 -0
- data/lib/fog/slicehost/models/dns/record.rb +66 -0
- data/lib/fog/slicehost/models/dns/records.rb +36 -0
- data/lib/fog/slicehost/models/dns/zone.rb +69 -0
- data/lib/fog/slicehost/models/dns/zones.rb +28 -0
- data/lib/fog/slicehost/requests/dns/create_record.rb +2 -3
- data/lib/fog/slicehost/requests/dns/get_record.rb +1 -1
- data/lib/fog/vcloud/terremark/ecloud.rb +1 -1
- data/lib/fog/zerigo/models/dns/record.rb +14 -3
- data/lib/fog/zerigo/models/dns/records.rb +1 -1
- data/lib/fog/zerigo/models/dns/zone.rb +7 -1
- data/lib/fog/zerigo/models/dns/zones.rb +1 -1
- data/spec/spec_helper.rb +0 -24
- data/tests/aws/requests/iam/helper.rb +15 -0
- data/tests/aws/requests/simpledb/attributes_tests.rb +75 -0
- data/tests/aws/requests/simpledb/domain_tests.rb +51 -0
- data/tests/aws/requests/simpledb/helper.rb +16 -0
- data/tests/compute/helper.rb +36 -0
- data/tests/compute/models/flavors_tests.rb +9 -0
- data/tests/compute/models/server_tests.rb +9 -0
- data/tests/compute/models/servers_tests.rb +9 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/address_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/availability_zone_tests.rb +0 -0
- data/tests/{aws → compute/requests/aws}/helper.rb +0 -12
- data/tests/{aws/requests/compute → compute/requests/aws}/image_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/instance_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/key_pair_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/region_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/security_group_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/snapshot_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/tag_tests.rb +0 -0
- data/tests/{aws/requests/compute → compute/requests/aws}/volume_tests.rb +0 -0
- data/tests/{bluebox/requests/compute → compute/requests/bluebox}/block_tests.rb +0 -0
- data/tests/{bluebox → compute/requests/bluebox}/helper.rb +0 -0
- data/tests/{bluebox/requests/compute → compute/requests/bluebox}/product_tests.rb +0 -0
- data/tests/{bluebox/requests/compute → compute/requests/bluebox}/template_tests.rb +0 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/account_tests.rb +0 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/api_client_tests.rb +0 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/cloud_ip_tests.rb +15 -7
- data/tests/{brightbox → compute/requests/brightbox}/helper.rb +68 -22
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/image_tests.rb +0 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/interface_tests.rb +0 -0
- data/tests/compute/requests/brightbox/load_balancer_tests.rb +74 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_tests.rb +1 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/server_type_tests.rb +1 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/user_tests.rb +0 -0
- data/tests/{brightbox/requests/compute → compute/requests/brightbox}/zone_tests.rb +1 -0
- data/tests/{go_grid/requests/compute → compute/requests/go_grid}/image_tests.rb +0 -0
- data/tests/{linode/requests/compute → compute/requests/linode}/datacenter_tests.rb +0 -0
- data/tests/{linode/requests/compute → compute/requests/linode}/distribution_tests.rb +0 -0
- data/tests/{linode → compute/requests/linode}/helper.rb +0 -0
- data/tests/{linode/requests/compute → compute/requests/linode}/linode_tests.rb +0 -0
- data/tests/{linode/requests/compute → compute/requests/linode}/linodeplans_tests.rb +0 -0
- data/tests/{rackspace/requests/compute → compute/requests/rackspace}/address_tests.rb +0 -0
- data/tests/{rackspace/requests/compute → compute/requests/rackspace}/flavor_tests.rb +0 -0
- data/tests/{rackspace → compute/requests/rackspace}/helper.rb +0 -0
- data/tests/{rackspace/requests/compute → compute/requests/rackspace}/image_tests.rb +7 -9
- data/tests/compute/requests/rackspace/resize_tests.rb +33 -0
- data/tests/{rackspace/requests/compute → compute/requests/rackspace}/server_tests.rb +0 -0
- data/tests/{slicehost/requests/compute → compute/requests/slicehost}/backup_tests.rb +0 -0
- data/tests/{slicehost/requests/compute → compute/requests/slicehost}/flavor_tests.rb +0 -0
- data/tests/{slicehost/requests/compute → compute/requests/slicehost}/image_tests.rb +0 -0
- data/tests/{slicehost/requests/compute → compute/requests/slicehost}/slice_tests.rb +0 -0
- data/tests/dns/helper.rb +19 -0
- data/tests/dns/models/record_tests.rb +25 -0
- data/tests/dns/models/records_tests.rb +25 -0
- data/tests/dns/models/zone_tests.rb +13 -0
- data/tests/dns/models/zones_tests.rb +13 -0
- data/tests/{aws/requests/dns → dns/requests/aws}/dns_tests.rb +0 -0
- data/tests/{linode/requests/dns → dns/requests/linode}/dns_tests.rb +0 -0
- data/tests/{slicehost/requests/dns_tests → dns/requests/slicehost}/dns_tests.rb +0 -0
- data/tests/{zerigo/requests/dns → dns/requests/zerigo}/dns_tests.rb +0 -0
- data/tests/helper.rb +1 -100
- data/tests/helpers/{collection_tests.rb → collection_helper.rb} +0 -0
- data/tests/helpers/compute/{flavors_tests.rb → flavors_helper.rb} +0 -0
- data/tests/helpers/compute/{server_tests.rb → server_helper.rb} +0 -0
- data/tests/helpers/compute/{servers_tests.rb → servers_helper.rb} +0 -0
- data/tests/helpers/formats_helper.rb +68 -0
- data/tests/{helper_tests.rb → helpers/formats_helper_tests.rb} +0 -0
- data/tests/helpers/{model_tests.rb → model_helper.rb} +0 -0
- data/tests/helpers/responds_to_helper.rb +13 -0
- data/tests/helpers/succeeds_helper.rb +12 -0
- data/tests/storage/helper.rb +16 -0
- data/tests/storage/models/directories_tests.rb +13 -0
- data/tests/storage/models/directory_test.rb +24 -0
- data/tests/storage/models/file_tests.rb +41 -0
- data/tests/storage/models/files_tests.rb +26 -0
- data/tests/{aws/requests/storage → storage/requests/aws}/bucket_tests.rb +0 -0
- data/tests/{aws/requests/storage → storage/requests/aws}/multipart_upload_tests.rb +0 -0
- data/tests/{aws/requests/storage → storage/requests/aws}/object_tests.rb +0 -0
- data/tests/{google/requests/storage → storage/requests/google}/bucket_tests.rb +0 -0
- data/tests/{google/requests/storage → storage/requests/google}/object_tests.rb +0 -0
- data/tests/{rackspace/requests/storage → storage/requests/rackspace}/container_tests.rb +0 -0
- data/tests/{rackspace/requests/storage → storage/requests/rackspace}/object_tests.rb +0 -0
- metadata +195 -224
- data/examples/bluebox_create.rb +0 -33
- data/examples/dns_methods.rb +0 -389
- data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +0 -31
- data/spec/aws/requests/simpledb/create_domain_spec.rb +0 -29
- data/spec/aws/requests/simpledb/delete_attributes_spec.rb +0 -39
- data/spec/aws/requests/simpledb/delete_domain_spec.rb +0 -28
- data/spec/aws/requests/simpledb/domain_metadata_spec.rb +0 -52
- data/spec/aws/requests/simpledb/get_attributes_spec.rb +0 -67
- data/spec/aws/requests/simpledb/list_domains_spec.rb +0 -30
- data/spec/aws/requests/simpledb/put_attributes_spec.rb +0 -49
- data/spec/aws/requests/simpledb/select_spec.rb +0 -27
- data/tests/aws/models/compute/flavors_tests.rb +0 -5
- data/tests/aws/models/compute/server_tests.rb +0 -6
- data/tests/aws/models/compute/servers_tests.rb +0 -6
- data/tests/aws/models/storage/directories_tests.rb +0 -5
- data/tests/aws/models/storage/directory_tests.rb +0 -5
- data/tests/aws/models/storage/file_tests.rb +0 -5
- data/tests/aws/models/storage/files_tests.rb +0 -5
- data/tests/bluebox/models/compute/flavors_tests.rb +0 -5
- data/tests/bluebox/models/compute/server_tests.rb +0 -5
- data/tests/bluebox/models/compute/servers_tests.rb +0 -6
- data/tests/brightbox/models/compute/flavors_tests.rb +0 -5
- data/tests/brightbox/models/compute/server_tests.rb +0 -6
- data/tests/brightbox/models/compute/servers_tests.rb +0 -6
- data/tests/go_grid/helper.rb +0 -0
- data/tests/google/models/storage/directories_tests.rb +0 -5
- data/tests/google/models/storage/directory_tests.rb +0 -5
- data/tests/google/models/storage/file_tests.rb +0 -5
- data/tests/google/models/storage/files_tests.rb +0 -5
- data/tests/helpers/storage/directories_tests.rb +0 -7
- data/tests/helpers/storage/directory_tests.rb +0 -18
- data/tests/helpers/storage/file_tests.rb +0 -27
- data/tests/helpers/storage/files_tests.rb +0 -13
- data/tests/local/models/storage/directories_tests.rb +0 -5
- data/tests/local/models/storage/directory_tests.rb +0 -5
- data/tests/local/models/storage/file_tests.rb +0 -5
- data/tests/local/models/storage/files_tests.rb +0 -5
- data/tests/rackspace/models/compute/flavors_tests.rb +0 -5
- data/tests/rackspace/models/compute/server_tests.rb +0 -6
- data/tests/rackspace/models/compute/servers_tests.rb +0 -6
- data/tests/rackspace/models/storage/directories_tests.rb +0 -5
- data/tests/rackspace/models/storage/directory_tests.rb +0 -5
- data/tests/rackspace/models/storage/file_tests.rb +0 -5
- data/tests/rackspace/models/storage/files_tests.rb +0 -5
- data/tests/rackspace/requests/compute/resize_tests.rb +0 -47
- data/tests/slicehost/helper.rb +0 -1
- data/tests/slicehost/models/compute/flavors_tests.rb +0 -5
- data/tests/slicehost/models/compute/server_tests.rb +0 -6
- data/tests/slicehost/models/compute/servers_tests.rb +0 -6
- data/tests/zerigo/helper.rb +0 -0
@@ -12,6 +12,32 @@ module Fog
|
|
12
12
|
attribute :ip_permissions, :aliases => 'ipPermissions'
|
13
13
|
attribute :owner_id, :aliases => 'ownerId'
|
14
14
|
|
15
|
+
# Authorize access by another security group
|
16
|
+
#
|
17
|
+
# >> g = AWS.security_groups.all(:description => "something").first
|
18
|
+
# >> g.authorize_group_and_owner("some_group_name", "1234567890")
|
19
|
+
#
|
20
|
+
# == Parameters:
|
21
|
+
# group::
|
22
|
+
# The name of the security group you're granting access to.
|
23
|
+
#
|
24
|
+
# owner::
|
25
|
+
# The owner id for security group you're granting access to.
|
26
|
+
#
|
27
|
+
# == Returns:
|
28
|
+
#
|
29
|
+
# An excon response object representing the result
|
30
|
+
#
|
31
|
+
# <Excon::Response:0x101fc2ae0
|
32
|
+
# @status=200,
|
33
|
+
# @body={"requestId"=>"some-id-string",
|
34
|
+
# "return"=>true},
|
35
|
+
# headers{"Transfer-Encoding"=>"chunked",
|
36
|
+
# "Date"=>"Mon, 27 Dec 2010 22:12:57 GMT",
|
37
|
+
# "Content-Type"=>"text/xml;charset=UTF-8",
|
38
|
+
# "Server"=>"AmazonEC2"}
|
39
|
+
#
|
40
|
+
|
15
41
|
def authorize_group_and_owner(group, owner)
|
16
42
|
requires :name
|
17
43
|
|
@@ -22,6 +48,34 @@ module Fog
|
|
22
48
|
)
|
23
49
|
end
|
24
50
|
|
51
|
+
# Authorize a new port range for a security group
|
52
|
+
#
|
53
|
+
# >> g = AWS.security_groups.all(:description => "something").first
|
54
|
+
# >> g.authorize_port_range(20..21)
|
55
|
+
#
|
56
|
+
# == Parameters:
|
57
|
+
# range::
|
58
|
+
# A Range object representing the port range you want to open up. E.g., 20..21
|
59
|
+
#
|
60
|
+
# options::
|
61
|
+
# A hash that can contain any of the following keys:
|
62
|
+
# :cidr_ip (defaults to "0.0.0.0/0")
|
63
|
+
# :ip_protocol (defaults to "tcp")
|
64
|
+
#
|
65
|
+
# == Returns:
|
66
|
+
#
|
67
|
+
# An excon response object representing the result
|
68
|
+
#
|
69
|
+
# <Excon::Response:0x101fc2ae0
|
70
|
+
# @status=200,
|
71
|
+
# @body={"requestId"=>"some-id-string",
|
72
|
+
# "return"=>true},
|
73
|
+
# headers{"Transfer-Encoding"=>"chunked",
|
74
|
+
# "Date"=>"Mon, 27 Dec 2010 22:12:57 GMT",
|
75
|
+
# "Content-Type"=>"text/xml;charset=UTF-8",
|
76
|
+
# "Server"=>"AmazonEC2"}
|
77
|
+
#
|
78
|
+
|
25
79
|
def authorize_port_range(range, options = {})
|
26
80
|
requires :name
|
27
81
|
|
@@ -34,6 +88,15 @@ module Fog
|
|
34
88
|
)
|
35
89
|
end
|
36
90
|
|
91
|
+
# Removes an existing security group
|
92
|
+
#
|
93
|
+
# security_group.destroy
|
94
|
+
#
|
95
|
+
# ==== Returns
|
96
|
+
#
|
97
|
+
# True or false depending on the result
|
98
|
+
#
|
99
|
+
|
37
100
|
def destroy
|
38
101
|
requires :name
|
39
102
|
|
@@ -41,6 +104,32 @@ module Fog
|
|
41
104
|
true
|
42
105
|
end
|
43
106
|
|
107
|
+
# Revoke access by another security group
|
108
|
+
#
|
109
|
+
# >> g = AWS.security_groups.all(:description => "something").first
|
110
|
+
# >> g.revoke_group_and_owner("some_group_name", "1234567890")
|
111
|
+
#
|
112
|
+
# == Parameters:
|
113
|
+
# group::
|
114
|
+
# The name of the security group you're revoking access to.
|
115
|
+
#
|
116
|
+
# owner::
|
117
|
+
# The owner id for security group you're revoking access access to.
|
118
|
+
#
|
119
|
+
# == Returns:
|
120
|
+
#
|
121
|
+
# An excon response object representing the result
|
122
|
+
#
|
123
|
+
# <Excon::Response:0x101fc2ae0
|
124
|
+
# @status=200,
|
125
|
+
# @body={"requestId"=>"some-id-string",
|
126
|
+
# "return"=>true},
|
127
|
+
# headers{"Transfer-Encoding"=>"chunked",
|
128
|
+
# "Date"=>"Mon, 27 Dec 2010 22:12:57 GMT",
|
129
|
+
# "Content-Type"=>"text/xml;charset=UTF-8",
|
130
|
+
# "Server"=>"AmazonEC2"}
|
131
|
+
#
|
132
|
+
|
44
133
|
def revoke_group_and_owner(group, owner)
|
45
134
|
requires :name
|
46
135
|
|
@@ -51,6 +140,34 @@ module Fog
|
|
51
140
|
)
|
52
141
|
end
|
53
142
|
|
143
|
+
# Revoke an existing port range for a security group
|
144
|
+
#
|
145
|
+
# >> g = AWS.security_groups.all(:description => "something").first
|
146
|
+
# >> g.revoke_port_range(20..21)
|
147
|
+
#
|
148
|
+
# == Parameters:
|
149
|
+
# range::
|
150
|
+
# A Range object representing the port range you want to open up. E.g., 20..21
|
151
|
+
#
|
152
|
+
# options::
|
153
|
+
# A hash that can contain any of the following keys:
|
154
|
+
# :cidr_ip (defaults to "0.0.0.0/0")
|
155
|
+
# :ip_protocol (defaults to "tcp")
|
156
|
+
#
|
157
|
+
# == Returns:
|
158
|
+
#
|
159
|
+
# An excon response object representing the result
|
160
|
+
#
|
161
|
+
# <Excon::Response:0x101fc2ae0
|
162
|
+
# @status=200,
|
163
|
+
# @body={"requestId"=>"some-id-string",
|
164
|
+
# "return"=>true},
|
165
|
+
# headers{"Transfer-Encoding"=>"chunked",
|
166
|
+
# "Date"=>"Mon, 27 Dec 2010 22:12:57 GMT",
|
167
|
+
# "Content-Type"=>"text/xml;charset=UTF-8",
|
168
|
+
# "Server"=>"AmazonEC2"}
|
169
|
+
#
|
170
|
+
|
54
171
|
def revoke_port_range(range, options = {})
|
55
172
|
requires :name
|
56
173
|
|
@@ -63,6 +180,17 @@ module Fog
|
|
63
180
|
)
|
64
181
|
end
|
65
182
|
|
183
|
+
# Create a security group
|
184
|
+
#
|
185
|
+
# >> g = AWS.security_groups.new(:name => "some_name", :description => "something")
|
186
|
+
# >> g.save
|
187
|
+
#
|
188
|
+
# == Returns:
|
189
|
+
#
|
190
|
+
# True or an exception depending on the result. Keep in mind that this *creates* a new security group.
|
191
|
+
# As such, it yields an InvalidGroup.Duplicate exception if you attempt to save an existing group.
|
192
|
+
#
|
193
|
+
|
66
194
|
def save
|
67
195
|
requires :description, :name
|
68
196
|
|
@@ -0,0 +1,64 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class DNS
|
6
|
+
|
7
|
+
class Record < Fog::Model
|
8
|
+
|
9
|
+
identity :id, :aliases => ['Id']
|
10
|
+
|
11
|
+
attribute :ip, :aliases => ['ResourceRecords']
|
12
|
+
attribute :name, :aliases => ['Name']
|
13
|
+
attribute :ttl, :aliases => ['TTL']
|
14
|
+
attribute :type, :aliases => ['Type']
|
15
|
+
attribute :status, :aliases => ['Status']
|
16
|
+
attribute :created_at, :aliases => ['SubmittedAt']
|
17
|
+
|
18
|
+
def initialize(attributes={})
|
19
|
+
self.ttl ||= 3600
|
20
|
+
super
|
21
|
+
end
|
22
|
+
|
23
|
+
def destroy
|
24
|
+
requires :ip, :name, :ttl, :type, :zone
|
25
|
+
options = {
|
26
|
+
:action => 'DELETE',
|
27
|
+
:name => name,
|
28
|
+
:resource_records => [*ip],
|
29
|
+
:ttl => ttl,
|
30
|
+
:type => type
|
31
|
+
}
|
32
|
+
connection.change_resource_record_sets(zone.id, [options])
|
33
|
+
true
|
34
|
+
end
|
35
|
+
|
36
|
+
def zone
|
37
|
+
@zone
|
38
|
+
end
|
39
|
+
|
40
|
+
def save
|
41
|
+
requires :ip, :name, :ttl, :type, :zone
|
42
|
+
options = {
|
43
|
+
:action => 'CREATE',
|
44
|
+
:name => name,
|
45
|
+
:resource_records => [*ip],
|
46
|
+
:ttl => ttl,
|
47
|
+
:type => type
|
48
|
+
}
|
49
|
+
data = connection.change_resource_record_sets(zone.id, [options]).body
|
50
|
+
merge_attributes(data)
|
51
|
+
true
|
52
|
+
end
|
53
|
+
|
54
|
+
private
|
55
|
+
|
56
|
+
def zone=(new_zone)
|
57
|
+
@zone = new_zone
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/aws/models/dns/record'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module AWS
|
6
|
+
class DNS
|
7
|
+
|
8
|
+
class Records < Fog::Collection
|
9
|
+
|
10
|
+
attribute :is_truncated, :aliases => ['IsTruncated']
|
11
|
+
attribute :max_items, :aliases => ['MaxItems']
|
12
|
+
attribute :name
|
13
|
+
attribute :next_record_name, :aliases => ['NextRecordName']
|
14
|
+
attribute :next_record_type, :aliases => ['NextRecordType']
|
15
|
+
attribute :type
|
16
|
+
|
17
|
+
attribute :zone
|
18
|
+
|
19
|
+
model Fog::AWS::DNS::Record
|
20
|
+
|
21
|
+
def all(options = {})
|
22
|
+
requires :zone
|
23
|
+
options['MaxItems'] ||= max_items
|
24
|
+
options['Name'] ||= name
|
25
|
+
options['Type'] ||= type
|
26
|
+
data = connection.list_resource_record_sets(zone.id, options).body
|
27
|
+
merge_attributes(data.reject {|key, value| !['IsTruncated', 'MaxItems', 'NextRecordName', 'NextRecordType'].include?(key)})
|
28
|
+
load(data['ResourceRecordSets'])
|
29
|
+
end
|
30
|
+
|
31
|
+
def get(record_id)
|
32
|
+
data = connection.get_change(record_id).body
|
33
|
+
new(data)
|
34
|
+
rescue Excon::Errors::BadRequest
|
35
|
+
nil
|
36
|
+
end
|
37
|
+
|
38
|
+
def new(attributes = {})
|
39
|
+
requires :zone
|
40
|
+
super({ :zone => zone }.merge!(attributes))
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'fog/core/model'
|
2
|
+
# require 'fog/aws/models/dns/records'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module AWS
|
6
|
+
class DNS
|
7
|
+
|
8
|
+
class Zone < Fog::Model
|
9
|
+
|
10
|
+
identity :id, :aliases => 'Id'
|
11
|
+
|
12
|
+
attribute :caller_reference, :aliases => 'CallerReference'
|
13
|
+
attribute :change_info, :aliases => 'ChangeInfo'
|
14
|
+
attribute :description, :aliases => 'Comment'
|
15
|
+
attribute :domain, :aliases => 'Name'
|
16
|
+
attribute :nameservers, :aliases => 'NameServers'
|
17
|
+
|
18
|
+
def destroy
|
19
|
+
requires :identity
|
20
|
+
connection.delete_hosted_zone(identity)
|
21
|
+
true
|
22
|
+
end
|
23
|
+
|
24
|
+
def records
|
25
|
+
@records ||= begin
|
26
|
+
Fog::AWS::DNS::Records.new(
|
27
|
+
:zone => self,
|
28
|
+
:connection => connection
|
29
|
+
)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
def save
|
34
|
+
requires :domain
|
35
|
+
options = {}
|
36
|
+
options[:caller_ref] = caller_reference if caller_reference
|
37
|
+
options[:comment] = description if description
|
38
|
+
data = connection.create_hosted_zone(domain, options).body
|
39
|
+
merge_attributes(data)
|
40
|
+
true
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
define_method(:HostedZone=) do |new_hosted_zone|
|
46
|
+
merge_attributes(new_hosted_zone)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'fog/core/collection'
|
2
|
+
require 'fog/aws/models/dns/zone'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module AWS
|
6
|
+
class DNS
|
7
|
+
|
8
|
+
class Zones < Fog::Collection
|
9
|
+
|
10
|
+
attribute :marker, :aliases => 'Marker'
|
11
|
+
attribute :max_items, :aliases => 'MaxItems'
|
12
|
+
|
13
|
+
model Fog::AWS::DNS::Zone
|
14
|
+
|
15
|
+
def all(options = {})
|
16
|
+
options['marker'] ||= marker
|
17
|
+
options['maxitems'] ||= max_items
|
18
|
+
data = connection.list_hosted_zones(options).body['HostedZones']
|
19
|
+
load(data)
|
20
|
+
end
|
21
|
+
|
22
|
+
def get(zone_id)
|
23
|
+
data = connection.get_hosted_zone(zone_id).body
|
24
|
+
new(data)
|
25
|
+
rescue Excon::Errors::BadRequest
|
26
|
+
nil
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -15,12 +15,13 @@ module Fog
|
|
15
15
|
attribute :cache_control, :aliases => 'Cache-Control'
|
16
16
|
attribute :content_disposition, :aliases => 'Content-Disposition'
|
17
17
|
attribute :content_encoding, :aliases => 'Content-Encoding'
|
18
|
-
attribute :content_length, :aliases => ['Content-Length', 'Size']
|
18
|
+
attribute :content_length, :aliases => ['Content-Length', 'Size']
|
19
19
|
attribute :content_md5, :aliases => 'Content-MD5'
|
20
20
|
attribute :content_type, :aliases => 'Content-Type'
|
21
21
|
attribute :etag, :aliases => ['Etag', 'ETag']
|
22
22
|
attribute :expires, :aliases => 'Expires'
|
23
|
-
attribute :last_modified, :aliases => ['Last-Modified', 'LastModified']
|
23
|
+
attribute :last_modified, :aliases => ['Last-Modified', 'LastModified']
|
24
|
+
attribute :metadata
|
24
25
|
attribute :owner, :aliases => 'Owner'
|
25
26
|
attribute :storage_class, :aliases => ['x-amz-storage-class', 'StorageClass']
|
26
27
|
|
@@ -61,6 +62,16 @@ module Fog
|
|
61
62
|
true
|
62
63
|
end
|
63
64
|
|
65
|
+
remove_method :metadata
|
66
|
+
def metadata
|
67
|
+
attributes.reject {|key, value| !(key.to_s =~ /^x-amz-meta-/)}
|
68
|
+
end
|
69
|
+
|
70
|
+
remove_method :metadata=
|
71
|
+
def metadata=(new_metadata)
|
72
|
+
merge_attributes(new_metadata)
|
73
|
+
end
|
74
|
+
|
64
75
|
remove_method :owner=
|
65
76
|
def owner=(new_owner)
|
66
77
|
if new_owner
|
@@ -105,6 +116,7 @@ module Fog
|
|
105
116
|
options['Content-MD5'] = content_md5 if content_md5
|
106
117
|
options['Content-Type'] = content_type if content_type
|
107
118
|
options['Expires'] = expires if expires
|
119
|
+
options.merge(metadata)
|
108
120
|
options['x-amz-storage-class'] = storage_class if storage_class
|
109
121
|
|
110
122
|
data = connection.put_object(directory.key, key, body, options)
|
@@ -17,7 +17,7 @@ module Fog
|
|
17
17
|
if @section == :hosted_zone
|
18
18
|
case name
|
19
19
|
when 'Id'
|
20
|
-
@hosted_zone[name]= @value.sub('/hostedzone/', '')
|
20
|
+
@hosted_zone[name] = @value.sub('/hostedzone/', '')
|
21
21
|
when 'Name', 'CallerReference', 'Comment'
|
22
22
|
@hosted_zone[name]= @value
|
23
23
|
when 'HostedZone'
|
@@ -13,7 +13,9 @@ module Fog
|
|
13
13
|
|
14
14
|
def end_element(name)
|
15
15
|
case name
|
16
|
-
when 'Id'
|
16
|
+
when 'Id'
|
17
|
+
@zone[name] = @value.sub('/hostedzone/', '')
|
18
|
+
when 'Name', 'CallerReference', 'Comment'
|
17
19
|
@zone[name] = @value
|
18
20
|
when 'HostedZone'
|
19
21
|
@hosted_zones << @zone
|