fog 1.0.0 → 1.1.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/README.rdoc +2 -9
- data/Rakefile +3 -2
- data/docs/_layouts/default.html +13 -13
- data/docs/about/contributing.markdown +1 -1
- data/docs/about/getting_started.markdown +28 -3
- data/docs/dns/index.markdown +4 -4
- data/docs/index.markdown +2 -10
- data/docs/public/css/fog.css +14 -1
- data/docs/storage/index.markdown +2 -2
- data/fog.gemspec +6 -5
- data/lib/fog.rb +1 -1
- data/lib/fog/aws.rb +26 -1
- data/lib/fog/aws/auto_scaling.rb +3 -1
- data/lib/fog/aws/cloud_formation.rb +3 -0
- data/lib/fog/aws/cloud_watch.rb +17 -1
- data/lib/fog/aws/compute.rb +50 -18
- data/lib/fog/aws/elb.rb +4 -2
- data/lib/fog/aws/emr.rb +133 -0
- data/lib/fog/aws/models/cloud_watch/alarm.rb +12 -0
- data/lib/fog/aws/models/cloud_watch/alarm_data.rb +39 -0
- data/lib/fog/aws/models/cloud_watch/alarm_datum.rb +66 -0
- data/lib/fog/aws/models/cloud_watch/alarm_histories.rb +18 -0
- data/lib/fog/aws/models/cloud_watch/alarm_history.rb +16 -0
- data/lib/fog/aws/models/cloud_watch/alarms.rb +30 -0
- data/lib/fog/aws/models/compute/addresses.rb +1 -1
- data/lib/fog/aws/models/compute/key_pairs.rb +1 -1
- data/lib/fog/aws/models/compute/security_groups.rb +1 -1
- data/lib/fog/aws/models/compute/server.rb +4 -2
- data/lib/fog/aws/models/compute/servers.rb +1 -1
- data/lib/fog/aws/models/compute/snapshots.rb +1 -1
- data/lib/fog/aws/models/compute/spot_request.rb +21 -4
- data/lib/fog/aws/models/compute/spot_requests.rb +45 -1
- data/lib/fog/aws/models/compute/volumes.rb +1 -1
- data/lib/fog/aws/models/elb/load_balancer.rb +2 -0
- data/lib/fog/aws/models/storage/file.rb +1 -1
- data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +0 -1
- data/lib/fog/aws/parsers/cloud_formation/update_stack.rb +19 -0
- data/lib/fog/aws/parsers/cloud_watch/delete_alarms.rb +26 -0
- data/lib/fog/aws/parsers/cloud_watch/describe_alarm_history.rb +40 -0
- data/lib/fog/aws/parsers/cloud_watch/describe_alarms.rb +73 -0
- data/lib/fog/aws/parsers/cloud_watch/describe_alarms_for_metric.rb +71 -0
- data/lib/fog/aws/parsers/cloud_watch/disable_alarm_actions.rb +26 -0
- data/lib/fog/aws/parsers/cloud_watch/enable_alarm_actions.rb +26 -0
- data/lib/fog/aws/parsers/cloud_watch/get_metric_statistics.rb +1 -0
- data/lib/fog/aws/parsers/cloud_watch/put_metric_alarm.rb +26 -0
- data/lib/fog/aws/parsers/cloud_watch/set_alarm_state.rb +26 -0
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
- data/lib/fog/aws/parsers/emr/add_instance_groups.rb +28 -0
- data/lib/fog/aws/parsers/emr/add_job_flow_steps.rb +17 -0
- data/lib/fog/aws/parsers/emr/describe_job_flows.rb +140 -0
- data/lib/fog/aws/parsers/emr/modify_instance_groups.rb +17 -0
- data/lib/fog/aws/parsers/emr/run_job_flow.rb +19 -0
- data/lib/fog/aws/parsers/emr/set_termination_protection.rb +17 -0
- data/lib/fog/aws/parsers/emr/terminate_job_flows.rb +17 -0
- data/lib/fog/aws/rds.rb +3 -1
- data/lib/fog/aws/requests/cloud_formation/create_stack.rb +6 -0
- data/lib/fog/aws/requests/cloud_formation/update_stack.rb +62 -0
- data/lib/fog/aws/requests/cloud_watch/delete_alarms.rb +30 -0
- data/lib/fog/aws/requests/cloud_watch/describe_alarm_history.rb +33 -0
- data/lib/fog/aws/requests/cloud_watch/describe_alarms.rb +38 -0
- data/lib/fog/aws/requests/cloud_watch/describe_alarms_for_metric.rb +39 -0
- data/lib/fog/aws/requests/cloud_watch/disable_alarm_actions.rb +30 -0
- data/lib/fog/aws/requests/cloud_watch/enable_alarm_actions.rb +30 -0
- data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +84 -0
- data/lib/fog/aws/requests/cloud_watch/set_alarm_state.rb +31 -0
- data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +141 -36
- data/lib/fog/aws/requests/compute/create_snapshot.rb +2 -3
- data/lib/fog/aws/requests/compute/create_tags.rb +5 -3
- data/lib/fog/aws/requests/compute/create_volume.rb +0 -1
- data/lib/fog/aws/requests/compute/delete_security_group.rb +25 -0
- data/lib/fog/aws/requests/compute/delete_tags.rb +3 -4
- data/lib/fog/aws/requests/compute/describe_addresses.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +5 -2
- data/lib/fog/aws/requests/compute/describe_images.rb +6 -9
- data/lib/fog/aws/requests/compute/describe_instances.rb +17 -8
- data/lib/fog/aws/requests/compute/describe_key_pairs.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_regions.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +1 -1
- data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_snapshots.rb +7 -5
- data/lib/fog/aws/requests/compute/describe_volumes.rb +5 -4
- data/lib/fog/aws/requests/compute/modify_image_attribute.rb +32 -0
- data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +1 -1
- data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +1 -1
- data/lib/fog/aws/requests/compute/register_image.rb +0 -1
- data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +41 -29
- data/lib/fog/aws/requests/compute/run_instances.rb +1 -2
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/create_load_balancer_listeners.rb +1 -1
- data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_instance_health.rb +2 -2
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +3 -3
- data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +2 -2
- data/lib/fog/aws/requests/emr/add_instance_groups.rb +46 -0
- data/lib/fog/aws/requests/emr/add_job_flow_steps.rb +49 -0
- data/lib/fog/aws/requests/emr/describe_job_flows.rb +108 -0
- data/lib/fog/aws/requests/emr/modify_instance_groups.rb +40 -0
- data/lib/fog/aws/requests/emr/run_job_flow.rb +106 -0
- data/lib/fog/aws/requests/emr/set_termination_protection.rb +39 -0
- data/lib/fog/aws/requests/emr/terminate_job_flows.rb +37 -0
- data/lib/fog/aws/requests/iam/get_server_certificate.rb +5 -7
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +1 -0
- data/lib/fog/aws/requests/simpledb/get_attributes.rb +2 -2
- data/lib/fog/aws/requests/simpledb/select.rb +1 -1
- data/lib/fog/aws/requests/storage/copy_object.rb +1 -1
- data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/hash_to_acl.rb +35 -25
- data/lib/fog/aws/ses.rb +1 -1
- data/lib/fog/aws/simpledb.rb +2 -0
- data/lib/fog/aws/sns.rb +3 -1
- data/lib/fog/aws/sqs.rb +4 -2
- data/lib/fog/aws/storage.rb +12 -3
- data/lib/fog/bin.rb +1 -1
- data/lib/fog/bin/aws.rb +8 -4
- data/lib/fog/bin/bluebox.rb +2 -2
- data/lib/fog/bin/brightbox.rb +1 -1
- data/lib/fog/bin/dnsimple.rb +1 -1
- data/lib/fog/bin/dnsmadeeasy.rb +1 -1
- data/lib/fog/bin/ecloud.rb +1 -1
- data/lib/fog/bin/glesys.rb +1 -1
- data/lib/fog/bin/go_grid.rb +1 -1
- data/lib/fog/bin/google.rb +1 -1
- data/lib/fog/bin/libvirt.rb +1 -1
- data/lib/fog/bin/linode.rb +2 -2
- data/lib/fog/bin/local.rb +1 -1
- data/lib/fog/bin/new_servers.rb +1 -1
- data/lib/fog/bin/ninefold.rb +2 -2
- data/lib/fog/bin/openstack.rb +1 -1
- data/lib/fog/bin/rackspace.rb +3 -3
- data/lib/fog/bin/slicehost.rb +1 -1
- data/lib/fog/bin/stormondemand.rb +1 -1
- data/lib/fog/bin/virtual_box.rb +1 -1
- data/lib/fog/bin/vmfusion.rb +1 -1
- data/lib/fog/bin/voxel.rb +1 -1
- data/lib/fog/bin/zerigo.rb +1 -1
- data/lib/fog/brightbox/models/compute/account.rb +1 -1
- data/lib/fog/compute/models/server.rb +1 -2
- data/lib/fog/core/attributes.rb +5 -5
- data/lib/fog/core/connection.rb +1 -1
- data/lib/fog/core/deprecation.rb +2 -2
- data/lib/fog/core/logger.rb +8 -3
- data/lib/fog/core/mock.rb +4 -0
- data/lib/fog/core/provider.rb +7 -2
- data/lib/fog/core/service.rb +8 -2
- data/lib/fog/dnsmadeeasy/models/dns/record.rb +3 -2
- data/lib/fog/dynect/dns.rb +25 -3
- data/lib/fog/ecloud/compute.rb +2 -6
- data/lib/fog/go_grid/requests/compute/grid_server_power.rb +1 -1
- data/lib/fog/google/models/storage/file.rb +1 -1
- data/lib/fog/google/requests/storage/get_object_url.rb +2 -2
- data/lib/fog/google/storage.rb +1 -1
- data/lib/fog/libvirt/models/compute/uri.rb +7 -3
- data/lib/fog/linode/models/compute/server.rb +10 -0
- data/lib/fog/ninefold/models/storage/file.rb +8 -6
- data/lib/fog/ninefold/models/storage/files.rb +3 -2
- data/lib/fog/ninefold/requests/storage/head_namespace.rb +20 -0
- data/lib/fog/ninefold/storage.rb +4 -2
- data/lib/fog/openstack.rb +4 -3
- data/lib/fog/openstack/compute.rb +8 -5
- data/lib/fog/openstack/models/compute/server.rb +10 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +6 -8
- data/lib/fog/rackspace/load_balancers.rb +1 -0
- data/lib/fog/rackspace/models/dns/callback.rb +1 -1
- data/lib/fog/rackspace/models/dns/record.rb +1 -1
- data/lib/fog/rackspace/models/dns/zone.rb +1 -1
- data/lib/fog/slicehost/dns.rb +1 -0
- data/lib/fog/slicehost/models/dns/record.rb +7 -3
- data/lib/fog/slicehost/models/dns/zone.rb +1 -1
- data/lib/fog/slicehost/parsers/dns/create_record.rb +8 -2
- data/lib/fog/slicehost/parsers/dns/get_record.rb +17 -5
- data/lib/fog/slicehost/parsers/dns/get_records.rb +10 -2
- data/lib/fog/slicehost/requests/dns/get_record.rb +1 -1
- data/lib/fog/slicehost/requests/dns/get_records.rb +7 -8
- data/lib/fog/slicehost/requests/dns/update_record.rb +43 -0
- data/lib/fog/storm_on_demand/models/compute/balancers.rb +1 -1
- data/lib/fog/storm_on_demand/models/compute/configs.rb +1 -1
- data/lib/fog/storm_on_demand/models/compute/images.rb +1 -1
- data/lib/fog/storm_on_demand/models/compute/servers.rb +1 -1
- data/lib/fog/storm_on_demand/models/compute/templates.rb +1 -1
- data/lib/fog/terremark/vcloud.rb +1 -1
- data/lib/fog/vsphere/compute.rb +40 -23
- data/lib/fog/vsphere/models/compute/server.rb +1 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +36 -4
- data/lib/fog/zerigo/dns.rb +14 -3
- data/lib/fog/zerigo/models/dns/record.rb +1 -1
- data/lib/fog/zerigo/models/dns/records.rb +5 -0
- data/lib/fog/zerigo/models/dns/zones.rb +2 -2
- data/lib/fog/zerigo/requests/dns/count_hosts.rb +20 -1
- data/lib/fog/zerigo/requests/dns/count_zones.rb +12 -1
- data/lib/fog/zerigo/requests/dns/create_host.rb +67 -1
- data/lib/fog/zerigo/requests/dns/create_zone.rb +44 -1
- data/lib/fog/zerigo/requests/dns/delete_host.rb +19 -0
- data/lib/fog/zerigo/requests/dns/delete_zone.rb +17 -0
- data/lib/fog/zerigo/requests/dns/find_hosts.rb +22 -1
- data/lib/fog/zerigo/requests/dns/get_host.rb +18 -1
- data/lib/fog/zerigo/requests/dns/get_zone.rb +19 -2
- data/lib/fog/zerigo/requests/dns/get_zone_stats.rb +23 -0
- data/lib/fog/zerigo/requests/dns/list_hosts.rb +20 -1
- data/lib/fog/zerigo/requests/dns/list_zones.rb +15 -0
- data/lib/fog/zerigo/requests/dns/update_host.rb +20 -1
- data/lib/fog/zerigo/requests/dns/update_zone.rb +20 -1
- data/tests/aws/models/cloud_watch/alarm_data_tests.rb +42 -0
- data/tests/aws/models/cloud_watch/alarm_history_tests.rb +22 -0
- data/tests/aws/models/compute/security_group_tests.rb +15 -10
- data/tests/aws/models/elb/model_tests.rb +4 -4
- data/tests/aws/requests/cloud_formation/stack_tests.rb +14 -0
- data/tests/aws/requests/cloud_watch/list_metrics_test.rb +5 -5
- data/tests/aws/requests/compute/image_tests.rb +33 -2
- data/tests/aws/requests/compute/instance_tests.rb +16 -1
- data/tests/aws/requests/compute/security_group_tests.rb +251 -32
- data/tests/aws/requests/compute/tag_tests.rb +42 -2
- data/tests/aws/requests/emr/helper.rb +172 -0
- data/tests/aws/requests/emr/instance_group_tests.rb +106 -0
- data/tests/aws/requests/emr/job_flow_tests.rb +88 -0
- data/tests/aws/requests/iam/server_certificate_tests.rb +20 -7
- data/tests/aws/requests/storage/bucket_tests.rb +82 -54
- data/tests/aws/requests/storage/hash_to_acl_tests.rb +173 -0
- data/tests/aws/requests/storage/object_tests.rb +44 -24
- data/tests/brightbox/requests/compute/helper.rb +15 -6
- data/tests/core/attribute_tests.rb +29 -0
- data/tests/core/mocking_tests.rb +60 -0
- data/tests/dns/models/record_tests.rb +4 -2
- data/tests/dns/models/records_tests.rb +4 -2
- data/tests/dns/models/zone_tests.rb +3 -1
- data/tests/dns/models/zones_tests.rb +4 -2
- data/tests/helper.rb +4 -0
- data/tests/rackspace/requests/dns/dns_tests.rb +16 -12
- data/tests/rackspace/requests/dns/records_tests.rb +13 -11
- data/tests/slicehost/requests/dns/dns_tests.rb +58 -11
- data/tests/vsphere/compute_tests.rb +18 -10
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +1 -1
- metadata +214 -221
|
@@ -34,7 +34,7 @@ module Fog
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def modify_instance_attributes(instance_id, attributes)
|
|
37
|
-
Fog::Logger.
|
|
37
|
+
Fog::Logger.deprecation("modify_instance_attributes method is deprecated, use 'modify_instance_attribute' instead")
|
|
38
38
|
modify_instance_attribute(instance_id, attributes)
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -37,7 +37,7 @@ module Fog
|
|
|
37
37
|
|
|
38
38
|
# Need to implement filters in the mock to find this there instead of here
|
|
39
39
|
# Also there's no information about what to do when the specified reserved_instances_offering_id doesn't exist
|
|
40
|
-
raise unless reserved_instance_offering =
|
|
40
|
+
raise unless reserved_instance_offering = describe_reserved_instances_offerings.body["reservedInstancesOfferingsSet"].find { |offering| offering["reservedInstancesOfferingId"] == reserved_instances_offering_id }
|
|
41
41
|
|
|
42
42
|
reserved_instances_id = Fog::AWS::Mock.reserved_instances_id
|
|
43
43
|
reserved_instance_offering.delete('reservedInstancesOfferingId')
|
|
@@ -8,15 +8,28 @@ module Fog
|
|
|
8
8
|
# Remove permissions from a security group
|
|
9
9
|
#
|
|
10
10
|
# ==== Parameters
|
|
11
|
-
# *
|
|
11
|
+
# * group_name<~String> - Name of group
|
|
12
12
|
# * options<~Hash>:
|
|
13
13
|
# * 'SourceSecurityGroupName'<~String> - Name of security group to authorize
|
|
14
14
|
# * 'SourceSecurityGroupOwnerId'<~String> - Name of owner to authorize
|
|
15
15
|
# or
|
|
16
|
-
# * 'CidrIp' - CIDR range
|
|
17
|
-
# * 'FromPort' - Start of port range (or -1 for ICMP wildcard)
|
|
18
|
-
# * 'IpProtocol' - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
|
19
|
-
# * 'ToPort' - End of port range (or -1 for ICMP wildcard)
|
|
16
|
+
# * 'CidrIp'<~String> - CIDR range
|
|
17
|
+
# * 'FromPort'<~Integer> - Start of port range (or -1 for ICMP wildcard)
|
|
18
|
+
# * 'IpProtocol'<~String> - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
|
19
|
+
# * 'ToPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
|
20
|
+
# or
|
|
21
|
+
# * 'IpPermissions'<~Array>:
|
|
22
|
+
# * permission<~Hash>:
|
|
23
|
+
# * 'FromPort'<~Integer> - Start of port range (or -1 for ICMP wildcard)
|
|
24
|
+
# * 'Groups'<~Array>:
|
|
25
|
+
# * group<~Hash>:
|
|
26
|
+
# * 'GroupName'<~String> - Name of security group to authorize
|
|
27
|
+
# * 'UserId'<~String> - Name of owner to authorize
|
|
28
|
+
# * 'IpProtocol'<~String> - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
|
29
|
+
# * 'IpRanges'<~Array>:
|
|
30
|
+
# * ip_range<~Hash>:
|
|
31
|
+
# * 'CidrIp'<~String> - CIDR range
|
|
32
|
+
# * 'ToPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
|
20
33
|
#
|
|
21
34
|
# === Returns
|
|
22
35
|
# * response<~Excon::Response>:
|
|
@@ -27,10 +40,15 @@ module Fog
|
|
|
27
40
|
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-RevokeSecurityGroupIngress.html]
|
|
28
41
|
def revoke_security_group_ingress(group_name, options = {})
|
|
29
42
|
if group_name.is_a?(Hash)
|
|
30
|
-
Fog::Logger.
|
|
43
|
+
Fog::Logger.deprecation("Fog::AWS::Compute#revoke_security_group_ingress now requires the 'group_name' parameter. Only specifying an options hash is now deprecated [light_black](#{caller.first})[/]")
|
|
31
44
|
options = group_name
|
|
32
|
-
group_name = options
|
|
45
|
+
group_name = options.delete('GroupName')
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
if ip_permissions = options.delete('IpPermissions')
|
|
49
|
+
options.merge!(indexed_ip_permissions_params(ip_permissions))
|
|
33
50
|
end
|
|
51
|
+
|
|
34
52
|
request({
|
|
35
53
|
'Action' => 'RevokeSecurityGroupIngress',
|
|
36
54
|
'GroupName' => group_name,
|
|
@@ -45,36 +63,30 @@ module Fog
|
|
|
45
63
|
|
|
46
64
|
def revoke_security_group_ingress(group_name, options = {})
|
|
47
65
|
if group_name.is_a?(Hash)
|
|
48
|
-
Fog::Logger.
|
|
66
|
+
Fog::Logger.deprecation("Fog::AWS::Compute#revoke_security_group_ingress now requires the 'group_name' parameter. Only specifying an options hash is now deprecated [light_black](#{caller.first})[/]")
|
|
49
67
|
options = group_name
|
|
50
|
-
group_name = options
|
|
68
|
+
group_name = options.delete('GroupName')
|
|
51
69
|
end
|
|
70
|
+
|
|
71
|
+
verify_permission_options(options)
|
|
72
|
+
|
|
52
73
|
response = Excon::Response.new
|
|
53
74
|
group = self.data[:security_groups][group_name]
|
|
75
|
+
|
|
54
76
|
if group
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
77
|
+
normalized_permissions = normalize_permissions(options)
|
|
78
|
+
|
|
79
|
+
normalized_permissions.each do |permission|
|
|
80
|
+
if matching_permission = find_matching_permission(group, permission)
|
|
81
|
+
matching_permission['ipRanges'] -= permission['ipRanges']
|
|
82
|
+
matching_permission['groups'] -= permission['groups']
|
|
83
|
+
|
|
84
|
+
if matching_permission['ipRanges'].empty? && matching_permission['groups'].empty?
|
|
85
|
+
group['ipPermissions'].delete(matching_permission)
|
|
61
86
|
end
|
|
62
87
|
end
|
|
63
|
-
else
|
|
64
|
-
ingress = group['ipPermissions'].select {|permission|
|
|
65
|
-
permission['fromPort'] == options['FromPort'] &&
|
|
66
|
-
permission['ipProtocol'] == options['IpProtocol'] &&
|
|
67
|
-
permission['toPort'] == options['ToPort'] &&
|
|
68
|
-
(
|
|
69
|
-
permission['ipRanges'].empty? ||
|
|
70
|
-
(
|
|
71
|
-
permission['ipRanges'].first &&
|
|
72
|
-
permission['ipRanges'].first['cidrIp'] == options['CidrIp']
|
|
73
|
-
)
|
|
74
|
-
)
|
|
75
|
-
}.first
|
|
76
|
-
group['ipPermissions'].delete(ingress)
|
|
77
88
|
end
|
|
89
|
+
|
|
78
90
|
response.status = 200
|
|
79
91
|
response.body = {
|
|
80
92
|
'requestId' => Fog::AWS::Mock.request_id,
|
|
@@ -56,7 +56,7 @@ module Fog
|
|
|
56
56
|
|
|
57
57
|
raise Fog::AWS::ELB::IdentifierTaken if self.data[:load_balancers].has_key? lb_name
|
|
58
58
|
|
|
59
|
-
certificate_ids = Fog::AWS::IAM.
|
|
59
|
+
certificate_ids = Fog::AWS::IAM::Mock.data[@aws_access_key_id][:server_certificates].map {|n, c| c['Arn'] }
|
|
60
60
|
|
|
61
61
|
listeners = [*listeners].map do |listener|
|
|
62
62
|
if listener['SSLCertificateId'] and !certificate_ids.include? listener['SSLCertificateId']
|
|
@@ -52,7 +52,7 @@ module Fog
|
|
|
52
52
|
if load_balancer = self.data[:load_balancers][lb_name]
|
|
53
53
|
response = Excon::Response.new
|
|
54
54
|
|
|
55
|
-
certificate_ids = Fog::AWS::IAM.
|
|
55
|
+
certificate_ids = Fog::AWS::IAM::Mock.data[@aws_access_key_id][:server_certificates].map {|n, c| c['Arn'] }
|
|
56
56
|
|
|
57
57
|
listeners.each do |listener|
|
|
58
58
|
if listener['SSLCertificateId'] and !certificate_ids.include? listener['SSLCertificateId']
|
|
@@ -37,7 +37,7 @@ module Fog
|
|
|
37
37
|
raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
|
|
38
38
|
instance_ids = [*instance_ids]
|
|
39
39
|
instance_ids.each do |instance|
|
|
40
|
-
raise Fog::AWS::ELB::InvalidInstance unless Compute[:
|
|
40
|
+
raise Fog::AWS::ELB::InvalidInstance unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][instance]
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
response = Excon::Response.new
|
|
@@ -40,13 +40,13 @@ module Fog
|
|
|
40
40
|
instance_ids = [*instance_ids]
|
|
41
41
|
instance_ids = load_balancer['Instances'].collect { |i| i['InstanceId'] } unless instance_ids.any?
|
|
42
42
|
data = instance_ids.map do |id|
|
|
43
|
-
unless
|
|
43
|
+
unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][id]
|
|
44
44
|
raise Fog::AWS::ELB::InvalidInstance
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
{
|
|
48
48
|
'Description' => "",
|
|
49
|
-
'InstanceId' =>
|
|
49
|
+
'InstanceId' => id,
|
|
50
50
|
'ReasonCode' => "",
|
|
51
51
|
'State' => 'OutOfService'
|
|
52
52
|
}
|
|
@@ -59,10 +59,10 @@ module Fog
|
|
|
59
59
|
lb_names.map do |lb_name|
|
|
60
60
|
lb = self.data[:load_balancers].find { |name, data| name == lb_name }
|
|
61
61
|
raise Fog::AWS::ELB::NotFound unless lb
|
|
62
|
-
lb[1]
|
|
62
|
+
lb[1].dup
|
|
63
63
|
end.compact
|
|
64
64
|
else
|
|
65
|
-
self.data[:load_balancers].values
|
|
65
|
+
self.data[:load_balancers].map { |lb, values| values.dup }
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
response = Excon::Response.new
|
|
@@ -73,7 +73,7 @@ module Fog
|
|
|
73
73
|
'RequestId' => Fog::AWS::Mock.request_id
|
|
74
74
|
},
|
|
75
75
|
'DescribeLoadBalancersResult' => {
|
|
76
|
-
'LoadBalancerDescriptions' => load_balancers
|
|
76
|
+
'LoadBalancerDescriptions' => load_balancers.map { |lb| lb['Instances'] = lb['Instances'].map { |i| i['InstanceId'] }; lb }
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
|
|
@@ -37,14 +37,14 @@ module Fog
|
|
|
37
37
|
raise Fog::AWS::ELB::NotFound unless load_balancer = self.data[:load_balancers][lb_name]
|
|
38
38
|
instance_ids = [*instance_ids]
|
|
39
39
|
instances = instance_ids.map do |instance|
|
|
40
|
-
raise Fog::AWS::ELB::InvalidInstance unless Compute[:
|
|
40
|
+
raise Fog::AWS::ELB::InvalidInstance unless Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:instances][instance]
|
|
41
41
|
{'InstanceId' => instance}
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
response = Excon::Response.new
|
|
45
45
|
response.status = 200
|
|
46
46
|
|
|
47
|
-
load_balancer['Instances'] = instances.dup
|
|
47
|
+
load_balancer['Instances'] = load_balancer['Instances'] | instances.dup
|
|
48
48
|
|
|
49
49
|
response.body = {
|
|
50
50
|
'ResponseMetadata' => {
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module AWS
|
|
3
|
+
class EMR
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/aws/parsers/emr/add_instance_groups'
|
|
7
|
+
|
|
8
|
+
# adds an instance group to a running cluster
|
|
9
|
+
# http://docs.amazonwebservices.com/ElasticMapReduce/latest/API/API_AddInstanceGroups.html
|
|
10
|
+
# ==== Parameters
|
|
11
|
+
# * JobFlowId <~String> - Job flow in which to add the instance groups
|
|
12
|
+
# * InstanceGroups<~Array> - Instance Groups to add
|
|
13
|
+
# * 'BidPrice'<~String> - Bid price for each Amazon EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.
|
|
14
|
+
# * 'InstanceCount'<~Integer> - Target number of instances for the instance group
|
|
15
|
+
# * 'InstanceRole'<~String> - MASTER | CORE | TASK The role of the instance group in the cluster
|
|
16
|
+
# * 'InstanceType'<~String> - The Amazon EC2 instance type for all instances in the instance group
|
|
17
|
+
# * 'MarketType'<~String> - ON_DEMAND | SPOT Market type of the Amazon EC2 instances used to create a cluster node
|
|
18
|
+
# * 'Name'<~String> - Friendly name given to the instance group.
|
|
19
|
+
#
|
|
20
|
+
# ==== Returns
|
|
21
|
+
# * response<~Excon::Response>:
|
|
22
|
+
# * body<~Hash>:
|
|
23
|
+
def add_instance_groups(job_flow_id, options={})
|
|
24
|
+
|
|
25
|
+
if instance_groups = options.delete('InstanceGroups')
|
|
26
|
+
options.merge!(Fog::AWS.indexed_param('InstanceGroups.member.%d', [*instance_groups]))
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
request({
|
|
30
|
+
'Action' => 'AddInstanceGroups',
|
|
31
|
+
'JobFlowId' => job_flow_id,
|
|
32
|
+
:parser => Fog::Parsers::AWS::EMR::AddInstanceGroups.new,
|
|
33
|
+
}.merge(options))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class Mock
|
|
39
|
+
def add_instance_groups(job_flow_id, options={})
|
|
40
|
+
Fog::Mock.not_implemented
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module AWS
|
|
3
|
+
class EMR
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/aws/parsers/emr/add_job_flow_steps'
|
|
7
|
+
|
|
8
|
+
# adds new steps to a running job flow.
|
|
9
|
+
# http://docs.amazonwebservices.com/ElasticMapReduce/latest/API/API_AddJobFlowSteps.html
|
|
10
|
+
# ==== Parameters
|
|
11
|
+
# * JobFlowId <~String> - A string that uniquely identifies the job flow
|
|
12
|
+
# * Steps <~Array> - A list of steps to be executed by the job flow
|
|
13
|
+
# * 'ActionOnFailure'<~String> - TERMINATE_JOB_FLOW | CANCEL_AND_WAIT | CONTINUE Specifies the action to take if the job flow step fails
|
|
14
|
+
# * 'HadoopJarStep'<~Array> - Specifies the JAR file used for the job flow step
|
|
15
|
+
# * 'Args'<~String list> - A list of command line arguments passed to the JAR file's main function when executed.
|
|
16
|
+
# * 'Jar'<~String> - A path to a JAR file run during the step.
|
|
17
|
+
# * 'MainClass'<~String> - The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file
|
|
18
|
+
# * 'Properties'<~Array> - A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function
|
|
19
|
+
# * 'Key'<~String> - The unique identifier of a key value pair
|
|
20
|
+
# * 'Value'<~String> - The value part of the identified key
|
|
21
|
+
# * 'Name'<~String> - The name of the job flow step
|
|
22
|
+
#
|
|
23
|
+
# ==== Returns
|
|
24
|
+
# * response<~Excon::Response>:
|
|
25
|
+
# * body<~Hash>:
|
|
26
|
+
def add_job_flow_steps(job_flow_id, options={})
|
|
27
|
+
|
|
28
|
+
if steps = options.delete('Steps')
|
|
29
|
+
options.merge!(Fog::AWS.serialize_keys('Steps', steps))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
request({
|
|
33
|
+
'Action' => 'AddJobFlowSteps',
|
|
34
|
+
'JobFlowId' => job_flow_id,
|
|
35
|
+
:parser => Fog::Parsers::AWS::EMR::AddJobFlowSteps.new,
|
|
36
|
+
}.merge(options))
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class Mock
|
|
41
|
+
|
|
42
|
+
def add_job_flow_steps(db_name, options={})
|
|
43
|
+
Fog::Mock.not_implemented
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module AWS
|
|
3
|
+
class EMR
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/aws/parsers/emr/describe_job_flows'
|
|
7
|
+
|
|
8
|
+
# returns a list of job flows that match all of the supplied parameters.
|
|
9
|
+
# http://docs.amazonwebservices.com/ElasticMapReduce/latest/API/API_DescribeJobFlows.html
|
|
10
|
+
# ==== Parameters
|
|
11
|
+
# * CreatedAfter <~DateTime> - Return only job flows created after this date and time
|
|
12
|
+
# * CreatedBefore <~DateTime> - Return only job flows created before this date and time
|
|
13
|
+
# * JobFlowIds <~String list> - Return only job flows whose job flow ID is contained in this list
|
|
14
|
+
# * JobFlowStates <~String list> - RUNNING | WAITING | SHUTTING_DOWN | STARTING Return only job flows whose state is contained in this list
|
|
15
|
+
#
|
|
16
|
+
# ==== Returns
|
|
17
|
+
# * response<~Excon::Response>:
|
|
18
|
+
# * body<~Hash>:
|
|
19
|
+
# * JobFlows <~Array> - A list of job flows matching the parameters supplied.
|
|
20
|
+
# * AmiVersion <~String> - A list of bootstrap actions that will be run before Hadoop is started on the cluster nodes.
|
|
21
|
+
# * 'BootstrapActions'<~Array> - A list of the bootstrap actions run by the job flow
|
|
22
|
+
# * 'BootstrapConfig <~Array> - A description of the bootstrap action
|
|
23
|
+
# * 'Name' <~String> - The name of the bootstrap action
|
|
24
|
+
# * 'ScriptBootstrapAction' <~Array> - The script run by the bootstrap action.
|
|
25
|
+
# * 'Args' <~String list> - A list of command line arguments to pass to the bootstrap action script.
|
|
26
|
+
# * 'Path' <~String> - Location of the script to run during a bootstrap action.
|
|
27
|
+
# * 'ExecutionStatusDetail'<~Array> - Describes the execution status of the job flow
|
|
28
|
+
# * 'CreationDateTime <~DateTime> - The creation date and time of the job flow.
|
|
29
|
+
# * 'EndDateTime <~DateTime> - The completion date and time of the job flow.
|
|
30
|
+
# * 'LastStateChangeReason <~String> - Description of the job flow last changed state.
|
|
31
|
+
# * 'ReadyDateTime <~DateTime> - The date and time when the job flow was ready to start running bootstrap actions.
|
|
32
|
+
# * 'StartDateTime <~DateTime> - The start date and time of the job flow.
|
|
33
|
+
# * 'State <~DateTime> - COMPLETED | FAILED | TERMINATED | RUNNING | SHUTTING_DOWN | STARTING | WAITING | BOOTSTRAPPING The state of the job flow.
|
|
34
|
+
# * Instances <~Array> - A specification of the number and type of Amazon EC2 instances on which to run the job flow.
|
|
35
|
+
# * 'Ec2KeyName'<~String> - Specifies the name of the Amazon EC2 key pair that can be used to ssh to the master node as the user called "hadoop.
|
|
36
|
+
# * 'HadoopVersion'<~String> - "0.18" | "0.20" Specifies the Hadoop version for the job flow
|
|
37
|
+
# * 'InstanceCount'<~Integer> - The number of Amazon EC2 instances used to execute the job flow
|
|
38
|
+
# * 'InstanceGroups'<~Array> - Configuration for the job flow's instance groups
|
|
39
|
+
# * 'BidPrice' <~String> - Bid price for each Amazon EC2 instance in the instance group when launching nodes as Spot Instances, expressed in USD.
|
|
40
|
+
# * 'CreationDateTime' <~DateTime> - The date/time the instance group was created.
|
|
41
|
+
# * 'EndDateTime' <~DateTime> - The date/time the instance group was terminated.
|
|
42
|
+
# * 'InstanceGroupId' <~String> - Unique identifier for the instance group.
|
|
43
|
+
# * 'InstanceRequestCount'<~Integer> - Target number of instances for the instance group
|
|
44
|
+
# * 'InstanceRole'<~String> - MASTER | CORE | TASK The role of the instance group in the cluster
|
|
45
|
+
# * 'InstanceRunningCount'<~Integer> - Actual count of running instances
|
|
46
|
+
# * 'InstanceType'<~String> - The Amazon EC2 instance type for all instances in the instance group
|
|
47
|
+
# * 'LastStateChangeReason'<~String> - Details regarding the state of the instance group
|
|
48
|
+
# * 'Market'<~String> - ON_DEMAND | SPOT Market type of the Amazon EC2 instances used to create a cluster
|
|
49
|
+
# * 'Name'<~String> - Friendly name for the instance group
|
|
50
|
+
# * 'ReadyDateTime'<~DateTime> - The date/time the instance group was available to the cluster
|
|
51
|
+
# * 'StartDateTime'<~DateTime> - The date/time the instance group was started
|
|
52
|
+
# * 'State'<~String> - PROVISIONING | STARTING | BOOTSTRAPPING | RUNNING | RESIZING | ARRESTED | SHUTTING_DOWN | TERMINATED | FAILED | ENDED State of instance group
|
|
53
|
+
# * 'KeepJobFlowAliveWhenNoSteps' <~Boolean> - Specifies whether the job flow should terminate after completing all steps
|
|
54
|
+
# * 'MasterInstanceId'<~String> - The Amazon EC2 instance identifier of the master node
|
|
55
|
+
# * 'MasterInstanceType'<~String> - The EC2 instance type of the master node
|
|
56
|
+
# * 'MasterPublicDnsName'<~String> - The DNS name of the master node
|
|
57
|
+
# * 'NormalizedInstanceHours'<~Integer> - An approximation of the cost of the job flow, represented in m1.small/hours.
|
|
58
|
+
# * 'Placement'<~Array> - Specifies the Availability Zone the job flow will run in
|
|
59
|
+
# * 'AvailabilityZone' <~String> - The Amazon EC2 Availability Zone for the job flow.
|
|
60
|
+
# * 'SlaveInstanceType'<~String> - The EC2 instance type of the slave nodes
|
|
61
|
+
# * 'TerminationProtected'<~Boolean> - Specifies whether to lock the job flow to prevent the Amazon EC2 instances from being terminated by API call, user intervention, or in the event of a job flow error
|
|
62
|
+
# * LogUri <~String> - Specifies the location in Amazon S3 to write the log files of the job flow. If a value is not provided, logs are not created
|
|
63
|
+
# * Name <~String> - The name of the job flow
|
|
64
|
+
# * Steps <~Array> - A list of steps to be executed by the job flow
|
|
65
|
+
# * 'ExecutionStatusDetail'<~Array> - Describes the execution status of the job flow
|
|
66
|
+
# * 'CreationDateTime <~DateTime> - The creation date and time of the job flow.
|
|
67
|
+
# * 'EndDateTime <~DateTime> - The completion date and time of the job flow.
|
|
68
|
+
# * 'LastStateChangeReason <~String> - Description of the job flow last changed state.
|
|
69
|
+
# * 'ReadyDateTime <~DateTime> - The date and time when the job flow was ready to start running bootstrap actions.
|
|
70
|
+
# * 'StartDateTime <~DateTime> - The start date and time of the job flow.
|
|
71
|
+
# * 'State <~DateTime> - COMPLETED | FAILED | TERMINATED | RUNNING | SHUTTING_DOWN | STARTING | WAITING | BOOTSTRAPPING The state of the job flow.
|
|
72
|
+
# * StepConfig <~Array> - The step configuration
|
|
73
|
+
# * 'ActionOnFailure'<~String> - TERMINATE_JOB_FLOW | CANCEL_AND_WAIT | CONTINUE Specifies the action to take if the job flow step fails
|
|
74
|
+
# * 'HadoopJarStep'<~Array> - Specifies the JAR file used for the job flow step
|
|
75
|
+
# * 'Args'<~String list> - A list of command line arguments passed to the JAR file's main function when executed.
|
|
76
|
+
# * 'Jar'<~String> - A path to a JAR file run during the step.
|
|
77
|
+
# * 'MainClass'<~String> - The name of the main class in the specified Java file. If not specified, the JAR file should specify a Main-Class in its manifest file
|
|
78
|
+
# * 'Properties'<~Array> - A list of Java properties that are set when the step runs. You can use these properties to pass key value pairs to your main function
|
|
79
|
+
# * 'Key'<~String> - The unique identifier of a key value pair
|
|
80
|
+
# * 'Value'<~String> - The value part of the identified key
|
|
81
|
+
# * 'Name'<~String> - The name of the job flow step
|
|
82
|
+
def describe_job_flows(options={})
|
|
83
|
+
|
|
84
|
+
if job_ids = options.delete('JobFlowIds')
|
|
85
|
+
options.merge!(Fog::AWS.serialize_keys('JobFlowIds', job_ids))
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
if job_states = options.delete('JobFlowStates')
|
|
89
|
+
options.merge!(Fog::AWS.serialize_keys('JobFlowStates', job_states))
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
request({
|
|
93
|
+
'Action' => 'DescribeJobFlows',
|
|
94
|
+
:parser => Fog::Parsers::AWS::EMR::DescribeJobFlows.new,
|
|
95
|
+
}.merge(options))
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
class Mock
|
|
100
|
+
|
|
101
|
+
def describe_job_flows(db_name, options={})
|
|
102
|
+
Fog::Mock.not_implemented
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module AWS
|
|
3
|
+
class EMR
|
|
4
|
+
class Real
|
|
5
|
+
|
|
6
|
+
require 'fog/aws/parsers/emr/modify_instance_groups'
|
|
7
|
+
|
|
8
|
+
# modifies the number of nodes and configuration settings of an instance group..
|
|
9
|
+
# http://docs.amazonwebservices.com/ElasticMapReduce/latest/API/API_ModifyInstanceGroups.html
|
|
10
|
+
# ==== Parameters
|
|
11
|
+
# * InstanceGroups <~InstanceGroupModifyConfig list> - Instance groups to change
|
|
12
|
+
# * InstanceCount <~Integer> - Target size for instance group
|
|
13
|
+
# * InstanceGroupId <~String> - Unique ID of the instance group to expand or shrink
|
|
14
|
+
#
|
|
15
|
+
# ==== Returns
|
|
16
|
+
# * response<~Excon::Response>:
|
|
17
|
+
# * body<~Hash>
|
|
18
|
+
def modify_instance_groups(options={})
|
|
19
|
+
|
|
20
|
+
if job_ids = options.delete('InstanceGroups')
|
|
21
|
+
options.merge!(Fog::AWS.serialize_keys('InstanceGroups', job_ids))
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
request({
|
|
25
|
+
'Action' => 'ModifyInstanceGroups',
|
|
26
|
+
:parser => Fog::Parsers::AWS::EMR::ModifyInstanceGroups.new,
|
|
27
|
+
}.merge(options))
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class Mock
|
|
32
|
+
|
|
33
|
+
def modify_instance_groups(options={})
|
|
34
|
+
Fog::Mock.not_implemented
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|