fog 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.document +5 -0
- data/.gitignore +6 -0
- data/LICENSE +20 -0
- data/README.rdoc +7 -0
- data/Rakefile +98 -0
- data/VERSION +1 -0
- data/benchs/fog_vs.rb +135 -0
- data/benchs/headers_split_vs_match.rb +18 -0
- data/benchs/params.rb +43 -0
- data/benchs/parse_vs_push.rb +60 -0
- data/benchs/stripping.rb +26 -0
- data/lib/fog.rb +21 -0
- data/lib/fog/aws.rb +145 -0
- data/lib/fog/aws/ec2.rb +173 -0
- data/lib/fog/aws/models/ec2/address.rb +31 -0
- data/lib/fog/aws/models/ec2/addresses.rb +36 -0
- data/lib/fog/aws/models/ec2/key_pair.rb +35 -0
- data/lib/fog/aws/models/ec2/key_pairs.rb +36 -0
- data/lib/fog/aws/models/ec2/volume.rb +47 -0
- data/lib/fog/aws/models/ec2/volumes.rb +36 -0
- data/lib/fog/aws/models/s3/bucket.rb +77 -0
- data/lib/fog/aws/models/s3/buckets.rb +83 -0
- data/lib/fog/aws/models/s3/object.rb +76 -0
- data/lib/fog/aws/models/s3/objects.rb +97 -0
- data/lib/fog/aws/models/s3/owner.rb +18 -0
- data/lib/fog/aws/parsers/ec2/allocate_address.rb +19 -0
- data/lib/fog/aws/parsers/ec2/attach_volume.rb +22 -0
- data/lib/fog/aws/parsers/ec2/basic.rb +25 -0
- data/lib/fog/aws/parsers/ec2/create_key_pair.rb +20 -0
- data/lib/fog/aws/parsers/ec2/create_snapshot.rb +22 -0
- data/lib/fog/aws/parsers/ec2/create_volume.rb +24 -0
- data/lib/fog/aws/parsers/ec2/describe_addresses.rb +30 -0
- data/lib/fog/aws/parsers/ec2/describe_availability_zones.rb +30 -0
- data/lib/fog/aws/parsers/ec2/describe_images.rb +49 -0
- data/lib/fog/aws/parsers/ec2/describe_instances.rb +73 -0
- data/lib/fog/aws/parsers/ec2/describe_key_pairs.rb +30 -0
- data/lib/fog/aws/parsers/ec2/describe_regions.rb +30 -0
- data/lib/fog/aws/parsers/ec2/describe_security_groups.rb +75 -0
- data/lib/fog/aws/parsers/ec2/describe_snapshots.rb +30 -0
- data/lib/fog/aws/parsers/ec2/describe_volumes.rb +57 -0
- data/lib/fog/aws/parsers/ec2/detach_volume.rb +22 -0
- data/lib/fog/aws/parsers/ec2/get_console_output.rb +28 -0
- data/lib/fog/aws/parsers/ec2/run_instances.rb +65 -0
- data/lib/fog/aws/parsers/ec2/terminate_instances.rb +55 -0
- data/lib/fog/aws/parsers/s3/copy_object.rb +22 -0
- data/lib/fog/aws/parsers/s3/get_bucket.rb +46 -0
- data/lib/fog/aws/parsers/s3/get_bucket_location.rb +20 -0
- data/lib/fog/aws/parsers/s3/get_request_payment.rb +20 -0
- data/lib/fog/aws/parsers/s3/get_service.rb +32 -0
- data/lib/fog/aws/parsers/simpledb/basic.rb +31 -0
- data/lib/fog/aws/parsers/simpledb/domain_metadata.rb +30 -0
- data/lib/fog/aws/parsers/simpledb/get_attributes.rb +34 -0
- data/lib/fog/aws/parsers/simpledb/list_domains.rb +28 -0
- data/lib/fog/aws/parsers/simpledb/select.rb +39 -0
- data/lib/fog/aws/requests/ec2/allocate_address.rb +50 -0
- data/lib/fog/aws/requests/ec2/associate_address.rb +59 -0
- data/lib/fog/aws/requests/ec2/attach_volume.rb +71 -0
- data/lib/fog/aws/requests/ec2/authorize_security_group_ingress.rb +32 -0
- data/lib/fog/aws/requests/ec2/create_key_pair.rb +60 -0
- data/lib/fog/aws/requests/ec2/create_security_group.rb +61 -0
- data/lib/fog/aws/requests/ec2/create_snapshot.rb +65 -0
- data/lib/fog/aws/requests/ec2/create_volume.rb +66 -0
- data/lib/fog/aws/requests/ec2/delete_key_pair.rb +49 -0
- data/lib/fog/aws/requests/ec2/delete_security_group.rb +52 -0
- data/lib/fog/aws/requests/ec2/delete_snapshot.rb +53 -0
- data/lib/fog/aws/requests/ec2/delete_volume.rb +55 -0
- data/lib/fog/aws/requests/ec2/describe_addresses.rb +61 -0
- data/lib/fog/aws/requests/ec2/describe_availability_zones.rb +64 -0
- data/lib/fog/aws/requests/ec2/describe_images.rb +41 -0
- data/lib/fog/aws/requests/ec2/describe_instances.rb +114 -0
- data/lib/fog/aws/requests/ec2/describe_key_pairs.rb +63 -0
- data/lib/fog/aws/requests/ec2/describe_regions.rb +61 -0
- data/lib/fog/aws/requests/ec2/describe_security_groups.rb +71 -0
- data/lib/fog/aws/requests/ec2/describe_snapshots.rb +78 -0
- data/lib/fog/aws/requests/ec2/describe_volumes.rb +85 -0
- data/lib/fog/aws/requests/ec2/detach_volume.rb +62 -0
- data/lib/fog/aws/requests/ec2/disassociate_address.rb +55 -0
- data/lib/fog/aws/requests/ec2/get_console_output.rb +26 -0
- data/lib/fog/aws/requests/ec2/reboot_instances.rb +24 -0
- data/lib/fog/aws/requests/ec2/release_address.rb +50 -0
- data/lib/fog/aws/requests/ec2/revoke_security_group_ingress.rb +32 -0
- data/lib/fog/aws/requests/ec2/run_instances.rb +134 -0
- data/lib/fog/aws/requests/ec2/terminate_instances.rb +80 -0
- data/lib/fog/aws/requests/s3/copy_object.rb +79 -0
- data/lib/fog/aws/requests/s3/delete_bucket.rb +53 -0
- data/lib/fog/aws/requests/s3/delete_object.rb +52 -0
- data/lib/fog/aws/requests/s3/get_bucket.rb +100 -0
- data/lib/fog/aws/requests/s3/get_bucket_location.rb +53 -0
- data/lib/fog/aws/requests/s3/get_object.rb +82 -0
- data/lib/fog/aws/requests/s3/get_request_payment.rb +53 -0
- data/lib/fog/aws/requests/s3/get_service.rb +58 -0
- data/lib/fog/aws/requests/s3/head_object.rb +61 -0
- data/lib/fog/aws/requests/s3/put_bucket.rb +69 -0
- data/lib/fog/aws/requests/s3/put_object.rb +76 -0
- data/lib/fog/aws/requests/s3/put_request_payment.rb +56 -0
- data/lib/fog/aws/requests/simpledb/batch_put_attributes.rb +31 -0
- data/lib/fog/aws/requests/simpledb/create_domain.rb +25 -0
- data/lib/fog/aws/requests/simpledb/delete_attributes.rb +34 -0
- data/lib/fog/aws/requests/simpledb/delete_domain.rb +25 -0
- data/lib/fog/aws/requests/simpledb/domain_metadata.rb +30 -0
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +35 -0
- data/lib/fog/aws/requests/simpledb/list_domains.rb +30 -0
- data/lib/fog/aws/requests/simpledb/put_attributes.rb +29 -0
- data/lib/fog/aws/requests/simpledb/select.rb +29 -0
- data/lib/fog/aws/s3.rb +157 -0
- data/lib/fog/aws/simpledb.rb +157 -0
- data/lib/fog/collection.rb +77 -0
- data/lib/fog/connection.rb +130 -0
- data/lib/fog/errors.rb +145 -0
- data/lib/fog/model.rb +72 -0
- data/lib/fog/parser.rb +30 -0
- data/lib/fog/response.rb +12 -0
- data/spec/aws/models/s3/bucket_spec.rb +130 -0
- data/spec/aws/models/s3/buckets_spec.rb +79 -0
- data/spec/aws/models/s3/object_spec.rb +121 -0
- data/spec/aws/models/s3/objects_spec.rb +112 -0
- data/spec/aws/models/s3/owner_spec.rb +18 -0
- data/spec/aws/requests/ec2/allocate_address_spec.rb +18 -0
- data/spec/aws/requests/ec2/associate_address_spec.rb +42 -0
- data/spec/aws/requests/ec2/attach_volume_spec.rb +53 -0
- data/spec/aws/requests/ec2/authorize_security_group_ingress_spec.rb +26 -0
- data/spec/aws/requests/ec2/create_key_pair_spec.rb +36 -0
- data/spec/aws/requests/ec2/create_security_group_spec.rb +34 -0
- data/spec/aws/requests/ec2/create_snapshot_spec.rb +37 -0
- data/spec/aws/requests/ec2/create_volume_spec.rb +23 -0
- data/spec/aws/requests/ec2/delete_key_pair_spec.rb +21 -0
- data/spec/aws/requests/ec2/delete_security_group_spec.rb +26 -0
- data/spec/aws/requests/ec2/delete_snapshot_spec.rb +35 -0
- data/spec/aws/requests/ec2/delete_volume_spec.rb +26 -0
- data/spec/aws/requests/ec2/describe_addresses_spec.rb +38 -0
- data/spec/aws/requests/ec2/describe_availability_zones_spec.rb +23 -0
- data/spec/aws/requests/ec2/describe_images_spec.rb +39 -0
- data/spec/aws/requests/ec2/describe_instances_spec.rb +86 -0
- data/spec/aws/requests/ec2/describe_key_pairs_spec.rb +42 -0
- data/spec/aws/requests/ec2/describe_regions_spec.rb +21 -0
- data/spec/aws/requests/ec2/describe_security_groups_spec.rb +51 -0
- data/spec/aws/requests/ec2/describe_snapshots_spec.rb +54 -0
- data/spec/aws/requests/ec2/describe_volumes_spec.rb +50 -0
- data/spec/aws/requests/ec2/detach_volume_spec.rb +43 -0
- data/spec/aws/requests/ec2/disassociate_address_spec.rb +35 -0
- data/spec/aws/requests/ec2/get_console_output_spec.rb +23 -0
- data/spec/aws/requests/ec2/reboot_instances_spec.rb +21 -0
- data/spec/aws/requests/ec2/release_address_spec.rb +26 -0
- data/spec/aws/requests/ec2/revoke_security_group_ingress_spec.rb +32 -0
- data/spec/aws/requests/ec2/run_instances_spec.rb +41 -0
- data/spec/aws/requests/ec2/terminate_instances_spec.rb +35 -0
- data/spec/aws/requests/s3/copy_object_spec.rb +62 -0
- data/spec/aws/requests/s3/delete_bucket_spec.rb +36 -0
- data/spec/aws/requests/s3/delete_object_spec.rb +37 -0
- data/spec/aws/requests/s3/get_bucket_location_spec.rb +30 -0
- data/spec/aws/requests/s3/get_bucket_spec.rb +110 -0
- data/spec/aws/requests/s3/get_object_spec.rb +45 -0
- data/spec/aws/requests/s3/get_request_payment_spec.rb +30 -0
- data/spec/aws/requests/s3/get_service_spec.rb +33 -0
- data/spec/aws/requests/s3/head_object_spec.rb +28 -0
- data/spec/aws/requests/s3/put_bucket_spec.rb +19 -0
- data/spec/aws/requests/s3/put_object_spec.rb +38 -0
- data/spec/aws/requests/s3/put_request_payment_spec.rb +29 -0
- data/spec/aws/requests/simpledb/batch_put_attributes_spec.rb +22 -0
- data/spec/aws/requests/simpledb/create_domain_spec.rb +21 -0
- data/spec/aws/requests/simpledb/delete_attributes_spec.rb +22 -0
- data/spec/aws/requests/simpledb/delete_domain_spec.rb +21 -0
- data/spec/aws/requests/simpledb/domain_metadata_spec.rb +43 -0
- data/spec/aws/requests/simpledb/get_attributes_spec.rb +31 -0
- data/spec/aws/requests/simpledb/list_domains_spec.rb +30 -0
- data/spec/aws/requests/simpledb/put_attributes_spec.rb +22 -0
- data/spec/aws/requests/simpledb/select_spec.rb +9 -0
- data/spec/lorem.txt +1 -0
- data/spec/spec.opts +1 -0
- data/spec/spec_helper.rb +66 -0
- metadata +309 -0
@@ -0,0 +1,114 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified instances
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * instance_id<~Array> - List of instance ids to describe, defaults to all
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'requestId'<~String> - Id of request
|
16
|
+
# * 'reservationSet'<~Array>:
|
17
|
+
# * 'groupSet'<~Array> - Group names for reservation
|
18
|
+
# * 'ownerId'<~String> - AWS Access Key ID of reservation owner
|
19
|
+
# * 'reservationId'<~String> - Id of the reservation
|
20
|
+
# * 'instancesSet'<~Array>:
|
21
|
+
# * instance<~Hash>:
|
22
|
+
# * 'amiLaunchIndex'<~Integer> - reference to instance in launch group
|
23
|
+
# * 'dnsName'<~String> - public dns name, blank until instance is running
|
24
|
+
# * 'imageId'<~String> - image id of ami used to launch instance
|
25
|
+
# * 'instanceId'<~String> - id of the instance
|
26
|
+
# * 'instanceState'<~Hash>:
|
27
|
+
# * 'code'<~Integer> - current status code
|
28
|
+
# * 'name'<~String> - current status name
|
29
|
+
# * 'instanceType'<~String> - type of instance
|
30
|
+
# * 'kernelId'<~String> - Id of kernel used to launch instance
|
31
|
+
# * 'keyName'<~String> - name of key used launch instances or blank
|
32
|
+
# * 'launchTime'<~Time> - time instance was launched
|
33
|
+
# * 'monitoring'<~Hash>:
|
34
|
+
# * 'state'<~Boolean - state of monitoring
|
35
|
+
# * 'placement'<~Hash>:
|
36
|
+
# * 'availabilityZone'<~String> - Availability zone of the instance
|
37
|
+
# * 'productCodes'<~Array> - Product codes for the instance
|
38
|
+
# * 'privateDnsName'<~String> - private dns name, blank until instance is running
|
39
|
+
# * 'ramdiskId'<~String> - Id of ramdisk used to launch instance
|
40
|
+
# * 'reason'<~String> - reason for most recent state transition, or blank
|
41
|
+
def describe_instances(instance_id = [])
|
42
|
+
params = indexed_params('InstanceId', instance_id)
|
43
|
+
request({
|
44
|
+
'Action' => 'DescribeInstances'
|
45
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeInstances.new)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
else
|
53
|
+
|
54
|
+
module Fog
|
55
|
+
module AWS
|
56
|
+
class EC2
|
57
|
+
|
58
|
+
def describe_instances(instance_id = {})
|
59
|
+
response = Fog::Response.new
|
60
|
+
instance_id = [*instance_id]
|
61
|
+
if instance_id != []
|
62
|
+
instance_set = Fog::AWS::EC2.data[:instances].reject {|key,value| !instance_id.include?(key)}.values
|
63
|
+
else
|
64
|
+
instance_set = Fog::AWS::EC2.data[:instances].values
|
65
|
+
end
|
66
|
+
|
67
|
+
instance_set.each do |instance|
|
68
|
+
case instance['instanceState']
|
69
|
+
when 'pending'
|
70
|
+
if Time.now - instance['launchTime'] > 2
|
71
|
+
instance['instanceState'] = { :code => 16, :name => 'running' }
|
72
|
+
end
|
73
|
+
when 'shutting-down'
|
74
|
+
if Time.now - Fog::AWS::EC2.data[:deleted_at][instance['instanceId']] > 2
|
75
|
+
instance['instanceState'] = { :code => 16, :name => 'terminating' }
|
76
|
+
end
|
77
|
+
when 'terminating'
|
78
|
+
if Time.now - Fog::AWS::EC2.data[:deleted_at][instance['instanceId']] > 4
|
79
|
+
Fog::AWS::EC2.data[:deleted_at].delete(instance['instanceId'])
|
80
|
+
Fog::AWS::EC2.data[:instances].delete(instance['instanceId'])
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
if instance_id.length == 0 || instance_id.length == instance_set.length
|
86
|
+
response.status = 200
|
87
|
+
|
88
|
+
reservation_set = {}
|
89
|
+
instance_set.each do |instance|
|
90
|
+
reservation_set[instance['reservationId']] ||= {
|
91
|
+
'groupSet' => instance['groupSet'],
|
92
|
+
'instancesSet' => [],
|
93
|
+
'ownerId' => instance['ownerId'],
|
94
|
+
'reservationId' => instance['reservationId']
|
95
|
+
}
|
96
|
+
reservation_set[instance['reservationId']]['instancesSet'] << instance.reject{|key,value| !['amiLaunchIndex', 'dnsName', 'imageId', 'instanceId', 'instanceState', 'instanceType', 'kernelId', 'keyName', 'launchTime', 'monitoring', 'placement', 'privateDnsName', 'productCodes', 'ramdiskId', 'reason'].include?(key)}
|
97
|
+
end
|
98
|
+
|
99
|
+
response.body = {
|
100
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
101
|
+
'reservationSet' => reservation_set.values
|
102
|
+
}
|
103
|
+
else
|
104
|
+
response.status = 400
|
105
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
106
|
+
end
|
107
|
+
response
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified key pairs
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * key_name<~Array>:: List of key names to describe, defaults to all
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'requestId'<~String> - Id of request
|
16
|
+
# * 'keySet'<~Array>:
|
17
|
+
# * 'keyName'<~String> - Name of key
|
18
|
+
# * 'keyFingerprint'<~String> - Fingerprint of key
|
19
|
+
def describe_key_pairs(key_name = [])
|
20
|
+
params = indexed_params('KeyName', key_name)
|
21
|
+
request({
|
22
|
+
'Action' => 'DescribeKeyPairs'
|
23
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeKeyPairs.new)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
|
32
|
+
module Fog
|
33
|
+
module AWS
|
34
|
+
class EC2
|
35
|
+
|
36
|
+
def describe_key_pairs(key_name = [])
|
37
|
+
response = Fog::Response.new
|
38
|
+
key_name = [*key_name]
|
39
|
+
if key_name != []
|
40
|
+
key_set = Fog::AWS::EC2.data[:key_pairs].reject {|key, value| !key_name.include?(key)}.values
|
41
|
+
else
|
42
|
+
key_set = Fog::AWS::EC2.data[:key_pairs].values
|
43
|
+
end
|
44
|
+
if key_name.length == 0 || key_name.length == key_set.length
|
45
|
+
response.status = 200
|
46
|
+
response.body = {
|
47
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
48
|
+
'keySet' => key_set.map do |key|
|
49
|
+
key.reject {|key,value| !['keyFingerprint', 'keyName'].include?(key)}
|
50
|
+
end
|
51
|
+
}
|
52
|
+
else
|
53
|
+
response.status = 400
|
54
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
55
|
+
end
|
56
|
+
response
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified regions
|
8
|
+
#
|
9
|
+
# ==== Params
|
10
|
+
# * region_name<~String> - List of regions to describe, defaults to all
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'requestId'<~String> - Id of request
|
16
|
+
# * 'regionInfo'<~Array>:
|
17
|
+
# * 'regionName'<~String> - Name of region
|
18
|
+
# * 'regionEndpoint'<~String> - Service endpoint for region
|
19
|
+
def describe_regions(region_name = [])
|
20
|
+
params = indexed_params('RegionName', region_name)
|
21
|
+
request({
|
22
|
+
'Action' => 'DescribeRegions'
|
23
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeRegions.new)
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
else
|
31
|
+
|
32
|
+
module Fog
|
33
|
+
module AWS
|
34
|
+
class EC2
|
35
|
+
|
36
|
+
def describe_regions(region_name = [])
|
37
|
+
response = Fog::Response.new
|
38
|
+
region_name = [*region_name]
|
39
|
+
regions = {
|
40
|
+
'eu-west-1' => {"regionName"=>"eu-west-1", "regionEndpoint"=>"eu-west-1.ec2.amazonaws.com"},
|
41
|
+
'us-east-1' => {"regionName"=>"us-east-1", "regionEndpoint"=>"us-east-1.ec2.amazonaws.com"}
|
42
|
+
}
|
43
|
+
if region_name != []
|
44
|
+
region_info = regions.reject {|key, value| !region_name.include?(key)}.values
|
45
|
+
else
|
46
|
+
region_info = regions.values
|
47
|
+
end
|
48
|
+
|
49
|
+
response.status = 200
|
50
|
+
response.body = {
|
51
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
52
|
+
'regionInfo' => region_info
|
53
|
+
}
|
54
|
+
response
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified security groups
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * group_name<~Array> - List of groups to describe, defaults to all
|
11
|
+
#
|
12
|
+
# === Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'requestId'<~String> - Id of request
|
16
|
+
# * 'securityGroupInfo'<~Array>:
|
17
|
+
# * 'groupDescription'<~String> - Description of security group
|
18
|
+
# * 'groupName'<~String> - Name of security group
|
19
|
+
# * 'ipPermissions'<~Array>:
|
20
|
+
# * 'fromPort'<~Integer> - Start of port range (or -1 for ICMP wildcard)
|
21
|
+
# * 'groups'<~Array>:
|
22
|
+
# * 'groupName'<~String> - Name of security group
|
23
|
+
# * 'userId'<~String> - AWS User Id of account
|
24
|
+
# * 'ipProtocol'<~String> - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
25
|
+
# * 'ipRanges'<~Array>:
|
26
|
+
# * 'cidrIp'<~String> - CIDR range
|
27
|
+
# * 'toPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
28
|
+
# * 'ownerId'<~String> - AWS Access Key Id of the owner of the security group
|
29
|
+
def describe_security_groups(group_name = [])
|
30
|
+
params = indexed_params('GroupName', group_name)
|
31
|
+
request({
|
32
|
+
'Action' => 'DescribeSecurityGroups',
|
33
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeSecurityGroups.new)
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
else
|
41
|
+
|
42
|
+
module Fog
|
43
|
+
module AWS
|
44
|
+
class EC2
|
45
|
+
|
46
|
+
def describe_security_groups(group_name = [])
|
47
|
+
response = Fog::Response.new
|
48
|
+
group_name = [*group_name]
|
49
|
+
if group_name != []
|
50
|
+
security_group_info = Fog::AWS::EC2.data[:security_groups].reject {|key, value| !group_name.include?(key)}.values
|
51
|
+
else
|
52
|
+
security_group_info = Fog::AWS::EC2.data[:security_groups].values
|
53
|
+
end
|
54
|
+
if group_name.length == 0 || group_name.length == security_group_info.length
|
55
|
+
response.status = 200
|
56
|
+
response.body = {
|
57
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
58
|
+
'securityGroupInfo' => security_group_info
|
59
|
+
}
|
60
|
+
else
|
61
|
+
response.status = 400
|
62
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
63
|
+
end
|
64
|
+
response
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified snapshots
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * snapshot_id<~Array> - List of snapshots to describe, defaults to all
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'requestId'<~String> - Id of request
|
16
|
+
# * 'snapshotSet'<~Array>:
|
17
|
+
# * 'progress'<~String>: The percentage progress of the snapshot
|
18
|
+
# * 'snapshotId'<~String>: Id of the snapshot
|
19
|
+
# * 'startTime'<~Time>: Timestamp of when snapshot was initiated
|
20
|
+
# * 'status'<~String>: Snapshot state, in ['pending', 'completed']
|
21
|
+
# * 'volumeId'<~String>: Id of volume that snapshot contains
|
22
|
+
def describe_snapshots(snapshot_id = [])
|
23
|
+
params = indexed_params('SnapshotId', snapshot_id)
|
24
|
+
request({
|
25
|
+
'Action' => 'DescribeSnapshots'
|
26
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeSnapshots.new)
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
else
|
34
|
+
|
35
|
+
module Fog
|
36
|
+
module AWS
|
37
|
+
class EC2
|
38
|
+
|
39
|
+
def describe_snapshots(snapshot_id = [])
|
40
|
+
response = Fog::Response.new
|
41
|
+
snapshot_id = [*snapshot_id]
|
42
|
+
if snapshot_id != []
|
43
|
+
snapshot_set = Fog::AWS::EC2.data[:snapshots].reject {|key,value| !snapshot_id.include?(key)}.values
|
44
|
+
else
|
45
|
+
snapshot_set = Fog::AWS::EC2.data[:snapshots].values
|
46
|
+
end
|
47
|
+
|
48
|
+
snapshot_set.each do |snapshot|
|
49
|
+
case snapshot['status']
|
50
|
+
when 'creating'
|
51
|
+
if Time.now - volume['createTime'] > 2
|
52
|
+
snapshot['progress'] = '100%'
|
53
|
+
snapshot['status'] = 'completed'
|
54
|
+
else
|
55
|
+
snapshot['progress'] = '50%'
|
56
|
+
snapshot['status'] = 'in progress'
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
if snapshot_id.length == 0 || snapshot_id.length == snapshot_set.length
|
62
|
+
response.status = 200
|
63
|
+
response.body = {
|
64
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
65
|
+
'snapshotSet' => snapshot_set
|
66
|
+
}
|
67
|
+
else
|
68
|
+
response.status = 400
|
69
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
70
|
+
end
|
71
|
+
response
|
72
|
+
end
|
73
|
+
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
@@ -0,0 +1,85 @@
|
|
1
|
+
unless Fog.mocking?
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class EC2
|
6
|
+
|
7
|
+
# Describe all or specified volumes.
|
8
|
+
#
|
9
|
+
# ==== Parameters
|
10
|
+
# * volume_id<~Array> - List of volumes to describe, defaults to all
|
11
|
+
#
|
12
|
+
# ==== Returns
|
13
|
+
# * response<~Fog::AWS::Response>:
|
14
|
+
# * body<~Hash>:
|
15
|
+
# * 'volumeSet'<~Array>:
|
16
|
+
# * 'availabilityZone'<~String> - Availability zone for volume
|
17
|
+
# * 'createTime'<~Time> - Timestamp for creation
|
18
|
+
# * 'size'<~Integer> - Size in GiBs for volume
|
19
|
+
# * 'snapshotId'<~String> - Snapshot volume was created from, if any
|
20
|
+
# * 'status'<~String> - State of volume
|
21
|
+
# * 'volumeId'<~String> - Reference to volume
|
22
|
+
# * 'attachmentSet'<~Array>:
|
23
|
+
# * 'attachmentTime'<~Time> - Timestamp for attachment
|
24
|
+
# * 'device'<~String> - How value is exposed to instance
|
25
|
+
# * 'instanceId'<~String> - Reference to attached instance
|
26
|
+
# * 'status'<~String> - Attachment state
|
27
|
+
# * 'volumeId'<~String> - Reference to volume
|
28
|
+
def describe_volumes(volume_id = [])
|
29
|
+
params = indexed_params('VolumeId', volume_id)
|
30
|
+
request({
|
31
|
+
'Action' => 'DescribeVolumes'
|
32
|
+
}.merge!(params), Fog::Parsers::AWS::EC2::DescribeVolumes.new)
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
else
|
40
|
+
|
41
|
+
module Fog
|
42
|
+
module AWS
|
43
|
+
class EC2
|
44
|
+
|
45
|
+
def describe_volumes(volume_id = [])
|
46
|
+
response = Fog::Response.new
|
47
|
+
volume_id = [*volume_id]
|
48
|
+
if volume_id != []
|
49
|
+
volume_set = Fog::AWS::EC2.data[:volumes].reject {|key,value| !volume_id.include?(key)}.values
|
50
|
+
else
|
51
|
+
volume_set = Fog::AWS::EC2.data[:volumes].values
|
52
|
+
end
|
53
|
+
|
54
|
+
volume_set.each do |volume|
|
55
|
+
case volume['status']
|
56
|
+
when 'creating'
|
57
|
+
if Time.now - volume['createTime'] > 2
|
58
|
+
volume['status'] = 'available'
|
59
|
+
end
|
60
|
+
when 'deleting'
|
61
|
+
if Time.now - Fog::AWS::EC2.data[:deleted_at][volume['volumeId']] > 2
|
62
|
+
Fog::AWS::EC2.data[:deleted_at].delete(volume['volumeId'])
|
63
|
+
Fog::AWS::EC2.data[:volumes].delete(volume['volumeId'])
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
if volume_id.length == 0 || volume_id.length == volume_set.length
|
69
|
+
response.status = 200
|
70
|
+
response.body = {
|
71
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
72
|
+
'volumeSet' => volume_set
|
73
|
+
}
|
74
|
+
else
|
75
|
+
response.status = 400
|
76
|
+
raise(Fog::Errors.status_error(200, 400, response))
|
77
|
+
end
|
78
|
+
response
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|