fog 1.2.0 → 1.3.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/Rakefile +1 -0
- data/changelog.txt +91 -0
- data/fog.gemspec +3 -3
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/compute.rb +5 -4
- data/lib/fog/aws/models/compute/security_group.rb +7 -1
- data/lib/fog/aws/models/compute/subnet.rb +0 -1
- data/lib/fog/aws/parsers/compute/create_security_group.rb +24 -0
- data/lib/fog/aws/requests/cloud_watch/get_metric_statistics.rb +1 -1
- data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +19 -11
- data/lib/fog/aws/requests/compute/create_security_group.rb +5 -3
- data/lib/fog/aws/requests/compute/describe_security_groups.rb +1 -1
- data/lib/fog/aws/requests/storage/get_object_http_url.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_https_url.rb +2 -2
- data/lib/fog/aws/simpledb.rb +6 -1
- data/lib/fog/bin.rb +1 -0
- data/lib/fog/bin/ibm.rb +34 -0
- data/lib/fog/compute.rb +3 -0
- data/lib/fog/core/errors.rb +2 -0
- data/lib/fog/ibm.rb +176 -0
- data/lib/fog/ibm/compute.rb +233 -0
- data/lib/fog/ibm/models/compute/address.rb +62 -0
- data/lib/fog/ibm/models/compute/addresses.rb +28 -0
- data/lib/fog/ibm/models/compute/image.rb +61 -0
- data/lib/fog/ibm/models/compute/images.rb +27 -0
- data/lib/fog/ibm/models/compute/instance-type.rb +14 -0
- data/lib/fog/ibm/models/compute/instance-types.rb +15 -0
- data/lib/fog/ibm/models/compute/key.rb +35 -0
- data/lib/fog/ibm/models/compute/keys.rb +35 -0
- data/lib/fog/ibm/models/compute/location.rb +15 -0
- data/lib/fog/ibm/models/compute/locations.rb +27 -0
- data/lib/fog/ibm/models/compute/server.rb +193 -0
- data/lib/fog/ibm/models/compute/servers.rb +27 -0
- data/lib/fog/ibm/models/storage/offering.rb +18 -0
- data/lib/fog/ibm/models/storage/offerings.rb +19 -0
- data/lib/fog/ibm/models/storage/volume.rb +95 -0
- data/lib/fog/ibm/models/storage/volumes.rb +27 -0
- data/lib/fog/ibm/requests/compute/clone_image.rb +48 -0
- data/lib/fog/ibm/requests/compute/create_address.rb +50 -0
- data/lib/fog/ibm/requests/compute/create_image.rb +56 -0
- data/lib/fog/ibm/requests/compute/create_instance.rb +80 -0
- data/lib/fog/ibm/requests/compute/create_key.rb +61 -0
- data/lib/fog/ibm/requests/compute/delete_address.rb +46 -0
- data/lib/fog/ibm/requests/compute/delete_image.rb +43 -0
- data/lib/fog/ibm/requests/compute/delete_instance.rb +52 -0
- data/lib/fog/ibm/requests/compute/delete_key.rb +41 -0
- data/lib/fog/ibm/requests/compute/get_image.rb +67 -0
- data/lib/fog/ibm/requests/compute/get_image_agreement.rb +66 -0
- data/lib/fog/ibm/requests/compute/get_image_manifest.rb +39 -0
- data/lib/fog/ibm/requests/compute/get_instance.rb +76 -0
- data/lib/fog/ibm/requests/compute/get_instance_logs.rb +25 -0
- data/lib/fog/ibm/requests/compute/get_key.rb +49 -0
- data/lib/fog/ibm/requests/compute/get_location.rb +55 -0
- data/lib/fog/ibm/requests/compute/get_request.rb +78 -0
- data/lib/fog/ibm/requests/compute/list_address_offerings.rb +58 -0
- data/lib/fog/ibm/requests/compute/list_addresses.rb +53 -0
- data/lib/fog/ibm/requests/compute/list_images.rb +58 -0
- data/lib/fog/ibm/requests/compute/list_instances.rb +57 -0
- data/lib/fog/ibm/requests/compute/list_keys.rb +57 -0
- data/lib/fog/ibm/requests/compute/list_locations.rb +37 -0
- data/lib/fog/ibm/requests/compute/list_vlans.rb +52 -0
- data/lib/fog/ibm/requests/compute/modify_instance.rb +71 -0
- data/lib/fog/ibm/requests/compute/modify_key.rb +52 -0
- data/lib/fog/ibm/requests/storage/create_volume.rb +66 -0
- data/lib/fog/ibm/requests/storage/delete_volume.rb +42 -0
- data/lib/fog/ibm/requests/storage/get_volume.rb +72 -0
- data/lib/fog/ibm/requests/storage/list_offerings.rb +76 -0
- data/lib/fog/ibm/requests/storage/list_volumes.rb +47 -0
- data/lib/fog/ibm/storage.rb +82 -0
- data/lib/fog/ovirt/compute.rb +1 -0
- data/lib/fog/ovirt/models/compute/server.rb +5 -0
- data/lib/fog/ovirt/requests/compute/vm_ticket.rb +21 -0
- data/lib/fog/providers.rb +1 -0
- data/lib/fog/storage.rb +3 -0
- data/tests/aws/requests/compute/security_group_tests.rb +37 -39
- data/tests/compute/helper.rb +4 -0
- data/tests/compute/models/flavors_tests.rb +1 -1
- data/tests/helper.rb +1 -1
- data/tests/helpers/mock_helper.rb +2 -0
- data/tests/ibm/models/compute/image_tests.rb +10 -0
- data/tests/ibm/models/compute/key_tests.rb +23 -0
- data/tests/ibm/models/compute/keys_tests.rb +35 -0
- data/tests/ibm/models/compute/locations_tests.rb +18 -0
- data/tests/ibm/models/compute/server_tests.rb +88 -0
- data/tests/ibm/models/compute/servers_tests.rb +37 -0
- data/tests/ibm/models/storage/volume_tests.rb +60 -0
- data/tests/ibm/requests/compute/address_tests.rb +44 -0
- data/tests/ibm/requests/compute/image_tests.rb +110 -0
- data/tests/ibm/requests/compute/instance_tests.rb +102 -0
- data/tests/ibm/requests/compute/key_tests.rb +50 -0
- data/tests/ibm/requests/compute/location_tests.rb +28 -0
- data/tests/ibm/requests/storage/volume_tests.rb +100 -0
- metadata +122 -43
data/Rakefile
CHANGED
data/changelog.txt
CHANGED
@@ -1,3 +1,94 @@
|
|
1
|
+
1.3.0 03/21/2012 f78afe98242a60ae4dbbfcd8c5ab67ba71c6d773
|
2
|
+
=========================================================
|
3
|
+
|
4
|
+
Stats! { 'collaborators' => 32, 'downloads' => 513974, 'forks' => 387, 'open_issues' => 24, 'watchers' => 1893 }
|
5
|
+
|
6
|
+
MVP! Decklin Foster
|
7
|
+
|
8
|
+
[aws|cloud_watch]
|
9
|
+
GitHub Edit! s/prodide/provide/ :v:. thanks Dylan Egan
|
10
|
+
|
11
|
+
[aws|simpledb]
|
12
|
+
fix region/host for us-east-1. thanks geemus
|
13
|
+
|
14
|
+
[ibm]
|
15
|
+
Added Mocking and Tests. thanks Carl Hicks
|
16
|
+
Moar convenience methods for servers. thanks Carl Hicks
|
17
|
+
Update model for Volume. thanks Carl Hicks
|
18
|
+
Added request tests for addresses. thanks Carl Hicks
|
19
|
+
Initial IBM SmartCloud support. thanks Decklin Foster
|
20
|
+
Add Location model and requests. thanks Decklin Foster
|
21
|
+
Rename collection requests get->list so we have get_foo and list_foos. thanks Decklin Foster
|
22
|
+
Don't need json_body, so we can simplify requests; remove unused params. thanks Decklin Foster
|
23
|
+
Pass optional params to requests with hashes. thanks Decklin Foster
|
24
|
+
Add a InstanceType model, returned as part of Images. thanks Decklin Foster
|
25
|
+
Rename model test files into compute, storage dirs. thanks Decklin Foster
|
26
|
+
Remove trailing whitespace. thanks Decklin Foster
|
27
|
+
Update tests to match model arguments (attribs hash) and lower-level request methods. thanks Decklin Foster
|
28
|
+
Update mocks to reflect moving volume models from from compute to storage. thanks Decklin Foster
|
29
|
+
Add some missing mocks, fix list_instances. thanks Decklin Foster
|
30
|
+
Raise NotFound in mock instead of returning a 404. thanks Decklin Foster
|
31
|
+
Fix form_encode to stringify args (e.g. booleans) to URI.escape. thanks Decklin Foster
|
32
|
+
Typos in state names and status vs. state. thanks Decklin Foster
|
33
|
+
Fix key model for passing public_key, add setting/testing whether key is default. thanks Decklin Foster
|
34
|
+
Setting default key returns success, not key name. thanks Decklin Foster
|
35
|
+
Typo, assignment instead of equality, made some tests incorrectly pass. thanks Decklin Foster
|
36
|
+
Flesh out modify_instance and modify_key for different modes. thanks Decklin Foster
|
37
|
+
Restarting should return success, changing expiration should only return time. thanks Decklin Foster
|
38
|
+
Delete instance mock should return success. thanks Decklin Foster
|
39
|
+
Remove IBM from flavors tests. thanks Decklin Foster
|
40
|
+
Make names used in tests unique using current time. thanks Decklin Foster
|
41
|
+
Add vlan_id attrib so that it can be used in creating an instance. thanks Decklin Foster
|
42
|
+
Return nil for public_hostname if primary_ip unset (e.g. state is Failed). thanks Decklin Foster
|
43
|
+
Change default location and image ID. thanks Decklin Foster
|
44
|
+
Rename ibm_user_id -> ibm_username. thanks Decklin Foster
|
45
|
+
Create temporary keys in tests that need to create instances. thanks Decklin Foster
|
46
|
+
servers are not sorted, don't assume we can just take the last. thanks Decklin Foster
|
47
|
+
create_image should do a PUT, not a POST, and needs 'state' param. thanks Decklin Foster
|
48
|
+
Correct spelling of test volume format ('RAW') and fix parameter typo. thanks Decklin Foster
|
49
|
+
Rename data -> body. thanks Decklin Foster
|
50
|
+
Don't reboot or immediately expire, interferes with other tests. thanks Decklin Foster
|
51
|
+
Use Raleigh location for tests. thanks Decklin Foster
|
52
|
+
Nullable formats for attributes that may not be returned. thanks Decklin Foster
|
53
|
+
Set expire a few seconds in the future since it takes a while to process. thanks Decklin Foster
|
54
|
+
Return nil if instance_id is nil. thanks Decklin Foster
|
55
|
+
Can't access Fog::Compute::IBM::Location class from here, just check if ID returned. thanks Decklin Foster
|
56
|
+
servers.length will include already existing servers. thanks Decklin Foster
|
57
|
+
Add state and ready? method to Image. thanks Decklin Foster
|
58
|
+
Change public key format. thanks Decklin Foster
|
59
|
+
vlan is part of primaryIP. thanks Decklin Foster
|
60
|
+
Rename root_only -> is_mini_ephemeral. thanks Decklin Foster
|
61
|
+
Description is mandatory. thanks Decklin Foster
|
62
|
+
Wait for instance to be ready before deleting it or creating image. thanks Decklin Foster
|
63
|
+
Add state/ready? methods for Address. thanks Decklin Foster
|
64
|
+
Expiration time should be epoch in ms. thanks Decklin Foster
|
65
|
+
launched_at convenience method. thanks Decklin Foster
|
66
|
+
Don't set server to nil. thanks Decklin Foster
|
67
|
+
Set a longer timeout on all wait_for calls. thanks Decklin Foster
|
68
|
+
Generated key needs different name, supplied key only returns success. thanks Decklin Foster
|
69
|
+
Invalid instance creation will return a 412 and thus raise PreconditionFailed. thanks Decklin Foster
|
70
|
+
Don't calculate expiration time until ready to make the request. thanks Decklin Foster
|
71
|
+
Fix volume formats and mocks. thanks Decklin Foster
|
72
|
+
Wait for volume to be ready before deleting. thanks Decklin Foster
|
73
|
+
Mark volume attach/detach pending, won't create instance. thanks Decklin Foster
|
74
|
+
Return pending if provisioning times out in the real tests. thanks Decklin Foster
|
75
|
+
adding documentation. thanks Wyatt Walter
|
76
|
+
add bin helpers for storage. thanks geemus
|
77
|
+
|
78
|
+
[misc]
|
79
|
+
ovirt added support for 'set vm ticket'. This api call is needed for openning a console to the server. thanks Amos Benari
|
80
|
+
wrangled security tests into working. thanks Eric Stonfer
|
81
|
+
Changes to the security group handling: * CreateSecurityGroup now includes the group id in the reply, this patch makes the code store this * The patch also changes the delete call to use the group id if present (since you must use the id when deleting VPC groups). thanks MaF
|
82
|
+
Changes to the security group handling: * CreateSecurityGroup now includes the group id in the reply, this patch makes the code store this * The patch also changes the delete call to use the group id if present (since you must use the id when deleting VPC groups) * Fix teh security group mock and test code to handle this new behavior. thanks MaF
|
83
|
+
Removed merge commit. thanks MaF
|
84
|
+
|
85
|
+
[release]
|
86
|
+
add Kevin Menard to future MVP exclusion list. thanks geemus
|
87
|
+
|
88
|
+
[storage|aws]
|
89
|
+
fix hardcoded host in get_object_http(s)_url methods. thanks geemus
|
90
|
+
|
91
|
+
|
1
92
|
1.2.0 03/19/2012 70e0f48fa446dbf233ae31c4f055eb26ea2dadd1
|
2
93
|
=========================================================
|
3
94
|
|
data/fog.gemspec
CHANGED
@@ -6,8 +6,8 @@ Gem::Specification.new do |s|
|
|
6
6
|
## If your rubyforge_project name is different, then edit it and comment out
|
7
7
|
## the sub! line in the Rakefile
|
8
8
|
s.name = 'fog'
|
9
|
-
s.version = '1.
|
10
|
-
s.date = '2012-03-
|
9
|
+
s.version = '1.3.0'
|
10
|
+
s.date = '2012-03-21'
|
11
11
|
s.rubyforge_project = 'fog'
|
12
12
|
|
13
13
|
## Make sure your summary is short. The description may be as long
|
@@ -54,7 +54,7 @@ Gem::Specification.new do |s|
|
|
54
54
|
s.add_development_dependency('rdoc')
|
55
55
|
s.add_development_dependency('thor')
|
56
56
|
s.add_development_dependency('rspec', '~>1.3.1')
|
57
|
-
s.add_development_dependency('rbovirt', '>=0.0.
|
57
|
+
s.add_development_dependency('rbovirt', '>=0.0.9')
|
58
58
|
s.add_development_dependency('shindo', '~>0.3.4')
|
59
59
|
s.add_development_dependency('virtualbox', '~>0.9.1')
|
60
60
|
s.add_development_dependency('fission')
|
data/lib/fog.rb
CHANGED
data/lib/fog/aws/compute.rb
CHANGED
@@ -117,6 +117,7 @@ module Fog
|
|
117
117
|
@data ||= Hash.new do |hash, region|
|
118
118
|
hash[region] = Hash.new do |region_hash, key|
|
119
119
|
owner_id = Fog::AWS::Mock.owner_id
|
120
|
+
security_group_id = Fog::AWS::Mock.security_group_id
|
120
121
|
region_hash[key] = {
|
121
122
|
:deleted_at => {},
|
122
123
|
:addresses => {},
|
@@ -135,25 +136,25 @@ module Fog
|
|
135
136
|
'default' => {
|
136
137
|
'groupDescription' => 'default group',
|
137
138
|
'groupName' => 'default',
|
138
|
-
'groupId' =>
|
139
|
+
'groupId' => security_group_id,
|
139
140
|
'ipPermissionsEgress' => [],
|
140
141
|
'ipPermissions' => [
|
141
142
|
{
|
142
|
-
'groups' => [{'groupName' => 'default', 'userId' => owner_id}],
|
143
|
+
'groups' => [{'groupName' => 'default', 'userId' => owner_id, 'groupId' => security_group_id }],
|
143
144
|
'fromPort' => -1,
|
144
145
|
'toPort' => -1,
|
145
146
|
'ipProtocol' => 'icmp',
|
146
147
|
'ipRanges' => []
|
147
148
|
},
|
148
149
|
{
|
149
|
-
'groups' => [{'groupName' => 'default', 'userId' => owner_id}],
|
150
|
+
'groups' => [{'groupName' => 'default', 'userId' => owner_id, 'groupId' => security_group_id}],
|
150
151
|
'fromPort' => 0,
|
151
152
|
'toPort' => 65535,
|
152
153
|
'ipProtocol' => 'tcp',
|
153
154
|
'ipRanges' => []
|
154
155
|
},
|
155
156
|
{
|
156
|
-
'groups' => [{'groupName' => 'default', 'userId' => owner_id}],
|
157
|
+
'groups' => [{'groupName' => 'default', 'userId' => owner_id, 'groupId' => security_group_id}],
|
157
158
|
'fromPort' => 0,
|
158
159
|
'toPort' => 65535,
|
159
160
|
'ipProtocol' => 'udp',
|
@@ -101,7 +101,11 @@ module Fog
|
|
101
101
|
def destroy
|
102
102
|
requires :name
|
103
103
|
|
104
|
-
|
104
|
+
if group_id.nil?
|
105
|
+
connection.delete_security_group(name)
|
106
|
+
else
|
107
|
+
connection.delete_security_group(nil, group_id)
|
108
|
+
end
|
105
109
|
true
|
106
110
|
end
|
107
111
|
|
@@ -195,6 +199,8 @@ module Fog
|
|
195
199
|
def save
|
196
200
|
requires :description, :name
|
197
201
|
data = connection.create_security_group(name, description, vpc_id).body
|
202
|
+
new_attributes = data.reject {|key,value| key == 'requestId'}
|
203
|
+
merge_attributes(new_attributes)
|
198
204
|
true
|
199
205
|
end
|
200
206
|
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Compute
|
4
|
+
module AWS
|
5
|
+
|
6
|
+
class CreateSecurityGroup < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def end_element(name)
|
9
|
+
case name
|
10
|
+
when 'return'
|
11
|
+
if value == 'true'
|
12
|
+
@response[name] = true
|
13
|
+
else
|
14
|
+
@response[name] = false
|
15
|
+
end
|
16
|
+
when 'requestId', 'groupId'
|
17
|
+
@response[name] = value
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
#
|
27
27
|
def get_metric_statistics(options={})
|
28
28
|
%w{Statistics StartTime EndTime Period MetricName Namespace}.each do |required_parameter|
|
29
|
-
raise ArgumentError, "Must
|
29
|
+
raise ArgumentError, "Must provide #{required_parameter}" unless options.has_key?(required_parameter)
|
30
30
|
end
|
31
31
|
statistics = options.delete 'Statistics'
|
32
32
|
options.merge!(AWS.indexed_param('Statistics.member.%d', [*statistics]))
|
@@ -138,7 +138,7 @@ module Fog
|
|
138
138
|
if !is_vpc && options['IpProtocol'] && !['tcp', 'udp', 'icmp'].include?(options['IpProtocol'])
|
139
139
|
raise Fog::Compute::AWS::Error.new("InvalidPermission.Malformed => Unsupported IP protocol \"#{options['IpProtocol']}\" - supported: [tcp, udp, icmp]")
|
140
140
|
end
|
141
|
-
if options['IpProtocol'] && (!options['FromPort'] || !options['ToPort'])
|
141
|
+
if !is_vpc && (options['IpProtocol'] && (!options['FromPort'] || !options['ToPort']))
|
142
142
|
raise Fog::Compute::AWS::Error.new("InvalidPermission.Malformed => TCP/UDP port (-1) out of range")
|
143
143
|
end
|
144
144
|
if options.has_key?('IpPermissions')
|
@@ -151,14 +151,14 @@ module Fog
|
|
151
151
|
|
152
152
|
def normalize_permissions(options)
|
153
153
|
normalized_permissions = []
|
154
|
-
|
155
154
|
if options['SourceSecurityGroupName']
|
155
|
+
source_group_id=self.data[:security_groups][options['SourceSecurityGroupName']]['groupId']
|
156
156
|
['tcp', 'udp'].each do |protocol|
|
157
157
|
normalized_permissions << {
|
158
158
|
'ipProtocol' => protocol,
|
159
159
|
'fromPort' => 1,
|
160
160
|
'toPort' => 65535,
|
161
|
-
'groups' => [{'groupName' => options['SourceSecurityGroupName'], 'userId' => options['SourceSecurityGroupOwnerId'] || self.data[:owner_id]}],
|
161
|
+
'groups' => [{'groupName' => options['SourceSecurityGroupName'], 'userId' => options['SourceSecurityGroupOwnerId'] || self.data[:owner_id], 'groupId' => source_group_id }],
|
162
162
|
'ipRanges' => []
|
163
163
|
}
|
164
164
|
end
|
@@ -166,7 +166,7 @@ module Fog
|
|
166
166
|
'ipProtocol' => 'icmp',
|
167
167
|
'fromPort' => -1,
|
168
168
|
'toPort' => -1,
|
169
|
-
'groups' => [{'groupName' => options['SourceSecurityGroupName'], 'userId' => options['SourceSecurityGroupOwnerId'] || self.data[:owner_id]}],
|
169
|
+
'groups' => [{'groupName' => options['SourceSecurityGroupName'], 'userId' => options['SourceSecurityGroupOwnerId'] || self.data[:owner_id], 'groupId' => source_group_id }],
|
170
170
|
'ipRanges' => []
|
171
171
|
}
|
172
172
|
elsif options['CidrIp']
|
@@ -179,13 +179,21 @@ module Fog
|
|
179
179
|
}
|
180
180
|
elsif options['IpPermissions']
|
181
181
|
options['IpPermissions'].each do |permission|
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
182
|
+
if ['tcp', 'udp', 'icmp'].include?(permission['IpProtocol'])
|
183
|
+
normalized_permissions << {
|
184
|
+
'ipProtocol' => permission['IpProtocol'],
|
185
|
+
'fromPort' => Integer(permission['FromPort']),
|
186
|
+
'toPort' => Integer(permission['ToPort']),
|
187
|
+
'groups' => (permission['Groups'] || []).map {|g| {'groupName' => g['GroupName'], 'userId' => g['UserId'] || self.data[:owner_id], 'groupId' => self.data[:security_groups][g['GroupName']]['groupId']} },
|
188
|
+
'ipRanges' => (permission['IpRanges'] || []).map {|r| { 'cidrIp' => r['CidrIp'] } }
|
189
|
+
}
|
190
|
+
else
|
191
|
+
normalized_permissions << {
|
192
|
+
'ipProtocol' => permission['IpProtocol'],
|
193
|
+
'groups' => (permission['Groups'] || []).map {|g| {'groupName' => g['GroupName'], 'userId' => g['UserId'] || self.data[:owner_id], 'groupId' => self.data[:security_groups][g['GroupName']]['groupId']} },
|
194
|
+
'ipRanges' => (permission['IpRanges'] || []).map {|r| { 'cidrIp' => r['CidrIp'] } }
|
195
|
+
}
|
196
|
+
end
|
189
197
|
end
|
190
198
|
end
|
191
199
|
|
@@ -3,7 +3,7 @@ module Fog
|
|
3
3
|
class AWS
|
4
4
|
class Real
|
5
5
|
|
6
|
-
require 'fog/aws/parsers/compute/
|
6
|
+
require 'fog/aws/parsers/compute/create_security_group'
|
7
7
|
|
8
8
|
# Create a new security group
|
9
9
|
#
|
@@ -17,6 +17,7 @@ module Fog
|
|
17
17
|
# * body<~Hash>:
|
18
18
|
# * 'requestId'<~String> - Id of request
|
19
19
|
# * 'return'<~Boolean> - success?
|
20
|
+
# * 'groupId'<~String> - Id of created group
|
20
21
|
#
|
21
22
|
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-CreateSecurityGroup.html]
|
22
23
|
def create_security_group(name, description, vpc_id=nil)
|
@@ -24,8 +25,8 @@ module Fog
|
|
24
25
|
'Action' => 'CreateSecurityGroup',
|
25
26
|
'GroupName' => name,
|
26
27
|
'GroupDescription' => description,
|
27
|
-
|
28
|
-
|
28
|
+
'VpcId' => vpc_id,
|
29
|
+
:parser => Fog::Parsers::Compute::AWS::CreateSecurityGroup.new
|
29
30
|
)
|
30
31
|
end
|
31
32
|
|
@@ -48,6 +49,7 @@ module Fog
|
|
48
49
|
self.data[:security_groups][name] = data
|
49
50
|
response.body = {
|
50
51
|
'requestId' => Fog::AWS::Mock.request_id,
|
52
|
+
'groupId' => data['groupId'],
|
51
53
|
'return' => true
|
52
54
|
}
|
53
55
|
response
|
@@ -71,7 +71,7 @@ module Fog
|
|
71
71
|
}
|
72
72
|
for filter_key, filter_value in filters
|
73
73
|
if permission_key = filter_key.split('ip-permission.')[1]
|
74
|
-
if permission_key == 'group-name'
|
74
|
+
if permission_key == 'group-name'
|
75
75
|
security_group_info = security_group_info.reject{|security_group| !security_group['ipPermissions']['groups'].detect {|group| [*filter_value].include?(group['groupName'])}}
|
76
76
|
elsif permission_key == 'group-id'
|
77
77
|
security_group_info = security_group_info.reject{|security_group| !security_group['ipPermissions']['groups'].detect {|group| [*filter_value].include?(group['groupId'])}}
|
@@ -12,9 +12,9 @@ module Fog
|
|
12
12
|
raise ArgumentError.new('object_name is required')
|
13
13
|
end
|
14
14
|
host, path = if bucket_name =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
|
15
|
-
["#{bucket_name}
|
15
|
+
["#{bucket_name}.#{host}", object_name]
|
16
16
|
else
|
17
|
-
[
|
17
|
+
[@host, "#{bucket_name}/#{object_name}"]
|
18
18
|
end
|
19
19
|
http_url({
|
20
20
|
:headers => {},
|
@@ -12,9 +12,9 @@ module Fog
|
|
12
12
|
raise ArgumentError.new('object_name is required')
|
13
13
|
end
|
14
14
|
host, path = if bucket_name =~ /^(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
|
15
|
-
["#{bucket_name}
|
15
|
+
["#{bucket_name}.#{@host}", object_name]
|
16
16
|
else
|
17
|
-
[
|
17
|
+
[@host, "#{bucket_name}/#{object_name}"]
|
18
18
|
end
|
19
19
|
https_url({
|
20
20
|
:headers => {},
|
data/lib/fog/aws/simpledb.rb
CHANGED
@@ -76,7 +76,12 @@ module Fog
|
|
76
76
|
@nil_string = options[:nil_string]|| 'nil'
|
77
77
|
|
78
78
|
options[:region] ||= 'us-east-1'
|
79
|
-
@host = options[:host] ||
|
79
|
+
@host = options[:host] || case options[:region]
|
80
|
+
when 'us-east-1'
|
81
|
+
'sdb.amazonaws.com'
|
82
|
+
else
|
83
|
+
"sdb.#{options[:region]}.amazonaws.com"
|
84
|
+
end
|
80
85
|
@path = options[:path] || '/'
|
81
86
|
@persistent = options[:persistent] || false
|
82
87
|
@port = options[:port] || 443
|
data/lib/fog/bin.rb
CHANGED
data/lib/fog/bin/ibm.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
class IBM < Fog::Bin
|
2
|
+
class << self
|
3
|
+
|
4
|
+
def class_for(key)
|
5
|
+
case key
|
6
|
+
when :compute
|
7
|
+
Fog::Compute::IBM
|
8
|
+
when :storage
|
9
|
+
Fog::Storage::IBM
|
10
|
+
else
|
11
|
+
raise ArgumentError, "Unsupported #{self} service: #{key}"
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def [](service)
|
16
|
+
@@connections ||= Hash.new do |hash, key|
|
17
|
+
hash[key] = case key
|
18
|
+
when :compute
|
19
|
+
Fog::Compute.new(:provider => 'IBM')
|
20
|
+
when :storage
|
21
|
+
Fog::Storage.new(:provider => 'Storage')
|
22
|
+
else
|
23
|
+
raise ArgumentError, "Unrecognized service: #{service}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
@@connections[service]
|
27
|
+
end
|
28
|
+
|
29
|
+
def services
|
30
|
+
Fog::IBM.services
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
data/lib/fog/compute.rb
CHANGED
@@ -32,6 +32,9 @@ module Fog
|
|
32
32
|
when :gogrid
|
33
33
|
require 'fog/go_grid/compute'
|
34
34
|
Fog::Compute::GoGrid.new(attributes)
|
35
|
+
when :ibm
|
36
|
+
require 'fog/ibm/compute'
|
37
|
+
Fog::Compute::IBM.new(attributes)
|
35
38
|
when :joyent
|
36
39
|
require 'fog/joyent/compute'
|
37
40
|
Fog::Compute::Joyent.new(attributes)
|
data/lib/fog/core/errors.rb
CHANGED
@@ -84,6 +84,8 @@ An alternate file may be used by placing its path in the FOG_RC environment vari
|
|
84
84
|
:libvirt_password:
|
85
85
|
:libvirt_uri:
|
86
86
|
:libvirt_ip_command:
|
87
|
+
:ibm_username:
|
88
|
+
:ibm_password:
|
87
89
|
#
|
88
90
|
# End of Fog Credentials File
|
89
91
|
#######################################################
|