fog 1.14.0 → 1.15.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +1 -0
- data/Rakefile +2 -2
- data/changelog.txt +296 -0
- data/fog.gemspec +2 -2
- data/lib/fog/atmos/models/storage/file.rb +2 -2
- data/lib/fog/aws/compute.rb +42 -2
- data/lib/fog/aws/elb.rb +3 -0
- data/lib/fog/aws/elb/policy_types.rb +441 -430
- data/lib/fog/aws/models/auto_scaling/activities.rb +11 -3
- data/lib/fog/aws/models/auto_scaling/groups.rb +6 -3
- data/lib/fog/aws/models/auto_scaling/policies.rb +7 -3
- data/lib/fog/aws/models/compute/flavors.rb +19 -0
- data/lib/fog/aws/models/compute/volume.rb +1 -1
- data/lib/fog/aws/models/elb/backend_server_description.rb +11 -0
- data/lib/fog/aws/models/elb/backend_server_descriptions.rb +22 -0
- data/lib/fog/aws/models/elb/load_balancer.rb +15 -2
- data/lib/fog/aws/models/elb/policies.rb +28 -13
- data/lib/fog/aws/models/elb/policy.rb +20 -10
- data/lib/fog/aws/models/rds/instance_option.rb +21 -0
- data/lib/fog/aws/models/rds/instance_options.rb +30 -0
- data/lib/fog/aws/models/rds/server.rb +1 -0
- data/lib/fog/aws/parsers/auto_scaling/describe_policies.rb +5 -5
- data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +42 -0
- data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +44 -13
- data/lib/fog/aws/parsers/rds/db_parser.rb +28 -6
- data/lib/fog/aws/parsers/rds/describe_orderable_db_instance_options.rb +47 -0
- data/lib/fog/aws/rds.rb +5 -0
- data/lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb +9 -1
- data/lib/fog/aws/requests/auto_scaling/describe_policies.rb +15 -1
- data/lib/fog/aws/requests/compute/describe_account_attributes.rb +49 -0
- data/lib/fog/aws/requests/elb/create_app_cookie_stickiness_policy.rb +0 -2
- data/lib/fog/aws/requests/elb/create_lb_cookie_stickiness_policy.rb +0 -2
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +30 -9
- data/lib/fog/aws/requests/elb/create_load_balancer_policy.rb +11 -8
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +21 -1
- data/lib/fog/aws/requests/elb/set_load_balancer_policies_for_backend_server.rb +67 -0
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_orderable_db_instance_options.rb +76 -0
- data/lib/fog/aws/requests/ses/verify_domain_identity.rb +1 -1
- data/lib/fog/bin/rackspace.rb +4 -0
- data/lib/fog/brightbox/models/compute/collaboration.rb +10 -2
- data/lib/fog/brightbox/models/compute/collaborations.rb +26 -2
- data/lib/fog/brightbox/models/compute/user_collaboration.rb +16 -1
- data/lib/fog/brightbox/models/compute/user_collaborations.rb +10 -2
- data/lib/fog/cloudstack/models/compute/server.rb +4 -0
- data/lib/fog/cloudstack/models/compute/servers.rb +1 -1
- data/lib/fog/compute/models/server.rb +16 -10
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/collection.rb +18 -0
- data/lib/fog/core/credentials.rb +6 -1
- data/lib/fog/core/mock.rb +16 -0
- data/lib/fog/digitalocean/compute.rb +32 -3
- data/lib/fog/digitalocean/models/compute/server.rb +43 -14
- data/lib/fog/digitalocean/models/compute/servers.rb +27 -4
- data/lib/fog/digitalocean/models/compute/ssh_keys.rb +2 -3
- data/lib/fog/digitalocean/requests/compute/create_server.rb +9 -7
- data/lib/fog/digitalocean/requests/compute/destroy_server.rb +3 -0
- data/lib/fog/digitalocean/requests/compute/list_images.rb +6 -6
- data/lib/fog/dnsimple/dns.rb +4 -1
- data/lib/fog/dnsimple/models/dns/record.rb +3 -3
- data/lib/fog/dnsimple/requests/dns/create_domain.rb +36 -0
- data/lib/fog/dnsimple/requests/dns/create_record.rb +27 -0
- data/lib/fog/dnsimple/requests/dns/delete_domain.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/delete_record.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/get_domain.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/get_record.rb +24 -0
- data/lib/fog/dnsimple/requests/dns/list_domains.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/list_records.rb +12 -0
- data/lib/fog/dnsimple/requests/dns/update_record.rb +20 -0
- data/lib/fog/glesys/models/compute/server.rb +6 -0
- data/lib/fog/google/README.md +28 -0
- data/lib/fog/google/Rakefile +17 -0
- data/lib/fog/google/compute.rb +5 -0
- data/lib/fog/google/examples/bootstrap.rb +9 -0
- data/lib/fog/google/examples/create.rb +37 -0
- data/lib/fog/google/examples/eric-fail.rb +19 -0
- data/lib/fog/google/examples/get_list_images.rb +27 -0
- data/lib/fog/google/examples/get_list_snapshots.rb +20 -0
- data/lib/fog/google/examples/image_create.rb +18 -0
- data/lib/fog/google/examples/launch_micro_instance.rb +26 -0
- data/lib/fog/google/examples/metadata.rb +18 -0
- data/lib/fog/google/examples/network.rb +21 -0
- data/lib/fog/google/models/compute/disk.rb +16 -5
- data/lib/fog/google/models/compute/disks.rb +16 -6
- data/lib/fog/google/models/compute/flavors.rb +2 -1
- data/lib/fog/google/models/compute/image.rb +36 -18
- data/lib/fog/google/models/compute/images.rb +38 -5
- data/lib/fog/google/models/compute/server.rb +20 -6
- data/lib/fog/google/models/compute/servers.rb +8 -5
- data/lib/fog/google/models/compute/snapshot.rb +36 -0
- data/lib/fog/google/models/compute/snapshots.rb +28 -0
- data/lib/fog/google/models/storage/file.rb +7 -1
- data/lib/fog/google/parsers/storage/access_control_list.rb +2 -2
- data/lib/fog/google/requests/compute/delete_disk.rb +5 -1
- data/lib/fog/google/requests/compute/get_disk.rb +2 -1
- data/lib/fog/google/requests/compute/get_snapshot.rb +34 -0
- data/lib/fog/google/requests/compute/insert_disk.rb +23 -7
- data/lib/fog/google/requests/compute/insert_image.rb +16 -9
- data/lib/fog/google/requests/compute/insert_server.rb +22 -10
- data/lib/fog/google/requests/compute/list_disks.rb +1 -1
- data/lib/fog/google/requests/compute/list_images.rb +3 -2
- data/lib/fog/google/requests/compute/list_snapshots.rb +30 -0
- data/lib/fog/openstack.rb +11 -2
- data/lib/fog/openstack/network.rb +23 -0
- data/lib/fog/openstack/requests/compute/add_flavor_access.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_volume.rb +8 -7
- data/lib/fog/openstack/requests/compute/list_tenants_with_flavor_access.rb +1 -1
- data/lib/fog/openstack/requests/compute/remove_flavor_access.rb +1 -1
- data/lib/fog/openstack/requests/image/create_image.rb +23 -23
- data/lib/fog/openstack/requests/image/update_image.rb +31 -33
- data/lib/fog/openstack/requests/network/delete_quota.rb +26 -0
- data/lib/fog/openstack/requests/network/get_quota.rb +31 -0
- data/lib/fog/openstack/requests/network/get_quotas.rb +31 -0
- data/lib/fog/openstack/requests/network/update_quota.rb +33 -0
- data/lib/fog/openstack/requests/storage/get_object_https_url.rb +3 -3
- data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +1 -1
- data/lib/fog/openstack/requests/storage/put_object.rb +8 -5
- data/lib/fog/openstack/storage.rb +10 -9
- data/lib/fog/rackspace.rb +15 -5
- data/lib/fog/rackspace/block_storage.rb +8 -4
- data/lib/fog/rackspace/cdn.rb +21 -4
- data/lib/fog/rackspace/compute.rb +4 -4
- data/lib/fog/rackspace/compute_v2.rb +15 -4
- data/lib/fog/rackspace/databases.rb +4 -4
- data/lib/fog/rackspace/dns.rb +6 -6
- data/lib/fog/rackspace/errors.rb +12 -5
- data/lib/fog/rackspace/load_balancers.rb +4 -4
- data/lib/fog/rackspace/mock_data.rb +18 -7
- data/lib/fog/rackspace/models/compute_v2/key_pair.rb +56 -0
- data/lib/fog/rackspace/models/compute_v2/key_pairs.rb +43 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +7 -2
- data/lib/fog/rackspace/models/compute_v2/servers.rb +2 -1
- data/lib/fog/rackspace/models/identity/service_catalog.rb +34 -16
- data/lib/fog/rackspace/models/monitoring/agent_token.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/agent_tokens.rb +28 -0
- data/lib/fog/rackspace/models/monitoring/alarm.rb +59 -0
- data/lib/fog/rackspace/models/monitoring/alarm_example.rb +26 -0
- data/lib/fog/rackspace/models/monitoring/alarm_examples.rb +31 -0
- data/lib/fog/rackspace/models/monitoring/alarms.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/base.rb +30 -0
- data/lib/fog/rackspace/models/monitoring/check.rb +75 -0
- data/lib/fog/rackspace/models/monitoring/check_type.rb +15 -0
- data/lib/fog/rackspace/models/monitoring/check_types.rb +23 -0
- data/lib/fog/rackspace/models/monitoring/checks.rb +40 -0
- data/lib/fog/rackspace/models/monitoring/data_point.rb +18 -0
- data/lib/fog/rackspace/models/monitoring/data_points.rb +49 -0
- data/lib/fog/rackspace/models/monitoring/entities.rb +48 -0
- data/lib/fog/rackspace/models/monitoring/entity.rb +64 -0
- data/lib/fog/rackspace/models/monitoring/metric.rb +25 -0
- data/lib/fog/rackspace/models/monitoring/metrics.rb +27 -0
- data/lib/fog/rackspace/monitoring.rb +153 -0
- data/lib/fog/rackspace/requests/compute_v2/create_keypair.rb +53 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +10 -8
- data/lib/fog/rackspace/requests/compute_v2/delete_keypair.rb +36 -0
- data/lib/fog/rackspace/requests/compute_v2/get_keypair.rb +41 -0
- data/lib/fog/rackspace/requests/compute_v2/list_keypairs.rb +37 -0
- data/lib/fog/rackspace/requests/monitoring/create_agent_token.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_alarm.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_check.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/create_entity.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/delete_agent_token.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/delete_alarm.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/delete_check.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/delete_entity.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/evaluate_alarm_example.rb +21 -0
- data/lib/fog/rackspace/requests/monitoring/get_agent_token.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_alarm.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_alarm_example.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_check.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/get_entity.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_agent_tokens.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_alarm_examples.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_alarms.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_check_types.rb +17 -0
- data/lib/fog/rackspace/requests/monitoring/list_checks.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_data_points.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_entities.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/list_metrics.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_notification_plans.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/list_overview.rb +19 -0
- data/lib/fog/rackspace/requests/monitoring/update_alarm.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/update_check.rb +18 -0
- data/lib/fog/rackspace/requests/monitoring/update_entity.rb +18 -0
- data/lib/fog/rackspace/requests/storage/put_object.rb +1 -1
- data/lib/fog/rackspace/storage.rb +8 -4
- data/lib/fog/vcloud/compute.rb +1 -1
- data/lib/fog/vcloud/examples/README.md +54 -0
- data/lib/fog/vcloud/examples/creating_a_connection.md +20 -0
- data/lib/fog/vcloud/examples/creating_a_vapp.md +17 -0
- data/lib/fog/vcloud/examples/get_network_information.md +10 -0
- data/lib/fog/vcloud/examples/get_vapp_information.md +10 -0
- data/lib/fog/vcloud/examples/more_on_vapps.md +23 -0
- data/lib/fog/vcloud/requests/compute/configure_vm.rb +2 -2
- data/lib/fog/version.rb +1 -1
- data/lib/fog/vsphere/compute.rb +131 -0
- data/lib/fog/vsphere/models/compute/server.rb +5 -1
- data/lib/fog/vsphere/requests/compute/get_datacenter.rb +3 -1
- data/lib/fog/vsphere/requests/compute/get_virtual_machine.rb +21 -37
- data/lib/fog/vsphere/requests/compute/list_datacenters.rb +1 -0
- data/lib/fog/vsphere/requests/compute/list_virtual_machines.rb +8 -114
- data/lib/fog/vsphere/requests/compute/vm_clone.rb +18 -9
- data/lib/fog/vsphere/requests/compute/vm_power_off.rb +2 -0
- data/lib/fog/xenserver/compute.rb +14 -12
- data/lib/fog/xenserver/models/compute/console.rb +27 -0
- data/lib/fog/xenserver/models/compute/consoles.rb +25 -0
- data/lib/fog/xenserver/models/compute/server.rb +6 -2
- data/lib/fog/xenserver/models/compute/servers.rb +5 -0
- data/lib/fog/xenserver/requests/compute/create_server.rb +4 -0
- data/lib/fog/xml/sax_parser_connection.rb +3 -0
- data/lib/tasks/changelog_task.rb +1 -0
- data/tests/aws/models/compute/volume_tests.rb +1 -1
- data/tests/aws/models/elb/model_tests.rb +33 -1
- data/tests/aws/models/rds/instance_option_tests.rb +14 -0
- data/tests/aws/parsers/elb/describe_load_balancers.rb +65 -0
- data/tests/aws/requests/compute/client_tests.rb +25 -0
- data/tests/aws/requests/elb/helper.rb +2 -1
- data/tests/aws/requests/elb/listener_tests.rb +1 -1
- data/tests/aws/requests/elb/load_balancer_tests.rb +5 -1
- data/tests/aws/requests/elb/policy_tests.rb +85 -6
- data/tests/aws/requests/iam/helper.rb +4 -1
- data/tests/aws/requests/iam/server_certificate_tests.rb +2 -2
- data/tests/aws/requests/rds/helper.rb +22 -0
- data/tests/aws/requests/rds/instance_option_tests.rb +21 -0
- data/tests/core/credential_tests.rb +21 -0
- data/tests/core/mocking_tests.rb +15 -0
- data/tests/core/service_tests.rb +26 -0
- data/tests/digitalocean/helper.rb +23 -16
- data/tests/digitalocean/models/compute/flavor_tests.rb +2 -2
- data/tests/digitalocean/models/compute/image_tests.rb +2 -2
- data/tests/digitalocean/models/compute/region_tests.rb +2 -2
- data/tests/digitalocean/models/compute/server_tests.rb +11 -3
- data/tests/digitalocean/models/compute/servers_tests.rb +14 -28
- data/tests/digitalocean/models/compute/ssh_key_tests.rb +7 -3
- data/tests/digitalocean/models/compute/ssh_keys_tests.rb +5 -1
- data/tests/digitalocean/requests/compute/create_server_tests.rb +3 -6
- data/tests/digitalocean/requests/compute/destroy_server_tests.rb +1 -2
- data/tests/digitalocean/requests/compute/get_server_details_tests.rb +1 -1
- data/tests/digitalocean/requests/compute/get_ssh_key_tests.rb +4 -1
- data/tests/digitalocean/requests/compute/list_ssh_keys_tests.rb +5 -2
- data/tests/dnsimple/requests/dns/dns_tests.rb +30 -26
- data/tests/helper.rb +2 -2
- data/tests/helpers/collection_helper.rb +4 -4
- data/tests/helpers/mock_helper.rb +2 -0
- data/tests/openstack/authenticate_tests.rb +22 -0
- data/tests/openstack/requests/compute/flavor_tests.rb +27 -12
- data/tests/openstack/requests/compute/volume_tests.rb +10 -12
- data/tests/openstack/requests/image/image_tests.rb +30 -15
- data/tests/openstack/requests/network/quota_tests.rb +65 -0
- data/tests/openstack/requests/storage/object_tests.rb +27 -2
- data/tests/rackspace/block_storage_tests.rb +2 -1
- data/tests/rackspace/cdn_tests.rb +9 -0
- data/tests/rackspace/compute_v2_tests.rb +16 -15
- data/tests/rackspace/databases_tests.rb +1 -1
- data/tests/rackspace/load_balancer_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/keypairs_tests.rb +47 -0
- data/tests/rackspace/models/identity/service_catalog_tests.rb +54 -29
- data/tests/rackspace/models/monitoring/agent_token_tests.rb +9 -0
- data/tests/rackspace/models/monitoring/agent_tokens_tests.rb +9 -0
- data/tests/rackspace/models/monitoring/alarm_example_tests.rb +18 -0
- data/tests/rackspace/models/monitoring/alarm_examples_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/alarm_tests.rb +56 -0
- data/tests/rackspace/models/monitoring/alarms_tests.rb +25 -0
- data/tests/rackspace/models/monitoring/check_tests.rb +50 -0
- data/tests/rackspace/models/monitoring/check_types_tests.rb +14 -0
- data/tests/rackspace/models/monitoring/checks_tests.rb +16 -0
- data/tests/rackspace/models/monitoring/data_points_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/entities_tests.rb +14 -0
- data/tests/rackspace/models/monitoring/entity_tests.rb +26 -0
- data/tests/rackspace/models/monitoring/metric_tests.rb +19 -0
- data/tests/rackspace/models/monitoring/metrics_tests.rb +17 -0
- data/tests/rackspace/monitoring_tests.rb +72 -0
- data/tests/rackspace/requests/compute_v2/keypair_tests.rb +55 -0
- data/tests/rackspace/requests/monitoring/agent_tests.rb +34 -0
- data/tests/rackspace/requests/monitoring/alarm_example_tests.rb +30 -0
- data/tests/rackspace/requests/monitoring/alarm_tests.rb +55 -0
- data/tests/rackspace/requests/monitoring/check_tests.rb +40 -0
- data/tests/rackspace/requests/monitoring/entity_tests.rb +37 -0
- data/tests/rackspace/requests/monitoring/helper.rb +78 -0
- data/tests/rackspace/requests/monitoring/list_tests.rb +60 -0
- data/tests/vsphere/models/compute/server_tests.rb +1 -1
- data/tests/vsphere/requests/compute/list_virtual_machines_tests.rb +2 -2
- data/tests/vsphere/requests/compute/vm_clone_tests.rb +14 -8
- data/tests/xenserver/compute_tests.rb +5 -5
- data/tests/xenserver/models/compute/console_test.rb +35 -0
- data/tests/xenserver/models/compute/consoles_test.rb +19 -0
- data/tests/xenserver/models/compute/server_tests.rb +25 -18
- data/tests/xenserver/models/compute/servers_tests.rb +1 -0
- metadata +154 -3
@@ -33,6 +33,11 @@ module Fog
|
|
33
33
|
when 'DBParameterGroups'
|
34
34
|
@in_db_parameter_groups = true
|
35
35
|
@db_parameter_groups = []
|
36
|
+
when 'VpcSecurityGroupMembership'
|
37
|
+
@vpc_security_group = {}
|
38
|
+
when 'VpcSecurityGroups'
|
39
|
+
@in_vpc_security_groups = true
|
40
|
+
@vpc_security_groups = []
|
36
41
|
end
|
37
42
|
|
38
43
|
end
|
@@ -47,9 +52,9 @@ module Fog
|
|
47
52
|
'DBInstanceStatus', 'DBInstanceIdentifier', 'EngineVersion',
|
48
53
|
'PreferredBackupWindow', 'PreferredMaintenanceWindow',
|
49
54
|
'AvailabilityZone', 'MasterUsername', 'DBName', 'LicenseModel',
|
50
|
-
'DBSubnetGroupName'
|
55
|
+
'DBSubnetGroupName'
|
51
56
|
@db_instance[name] = value
|
52
|
-
when 'MultiAZ', 'AutoMinorVersionUpgrade'
|
57
|
+
when 'MultiAZ', 'AutoMinorVersionUpgrade', 'PubliclyAccessible'
|
53
58
|
if value == 'false'
|
54
59
|
@db_instance[name] = false
|
55
60
|
else
|
@@ -81,20 +86,37 @@ module Fog
|
|
81
86
|
when 'DBSecurityGroups'
|
82
87
|
@in_db_security_groups = false
|
83
88
|
@db_instance['DBSecurityGroups'] = @db_security_groups
|
84
|
-
when '
|
85
|
-
|
86
|
-
@db_security_group[name]=value
|
87
|
-
end
|
89
|
+
when 'DBSecurityGroupName'
|
90
|
+
@db_security_group[name]=value
|
88
91
|
when 'DBSecurityGroup'
|
89
92
|
@db_security_groups << @db_security_group
|
90
93
|
@db_security_group = {}
|
91
94
|
|
95
|
+
when 'VpcSecurityGroups'
|
96
|
+
@in_vpc_security_groups = false
|
97
|
+
@db_instance['VpcSecurityGroups'] = @vpc_security_groups
|
98
|
+
when 'VpcSecurityGroupMembership'
|
99
|
+
@vpc_security_groups << @vpc_security_group
|
100
|
+
@vpc_security_group = {}
|
101
|
+
when 'VpcSecurityGroupId'
|
102
|
+
@vpc_security_group[name] = value
|
92
103
|
when 'AllocatedStorage'
|
93
104
|
if @in_pending_modified_values
|
94
105
|
@pending_modified_values[name] = value.to_i
|
95
106
|
else
|
96
107
|
@db_instance[name] = value.to_i
|
97
108
|
end
|
109
|
+
|
110
|
+
when 'Status'
|
111
|
+
# Unfortunately, status is used in VpcSecurityGroupMemebership and
|
112
|
+
# DBSecurityGroups
|
113
|
+
if @in_db_security_groups
|
114
|
+
@db_security_group[name]=value
|
115
|
+
end
|
116
|
+
if @in_vpc_security_groups
|
117
|
+
@vpc_security_group[name] = value
|
118
|
+
end
|
119
|
+
|
98
120
|
when 'Address'
|
99
121
|
@endpoint[name] = value
|
100
122
|
when 'Port'
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module AWS
|
4
|
+
module RDS
|
5
|
+
|
6
|
+
class DescribeOrderableDBInstanceOptions < Fog::Parsers::Base
|
7
|
+
|
8
|
+
def reset
|
9
|
+
@response = { 'DescribeOrderableDBInstanceOptionsResult' => {'OrderableDBInstanceOptions' => []}, 'ResponseMetadata' => {} }
|
10
|
+
@db_instance_option = {}
|
11
|
+
@db_instance_options = []
|
12
|
+
end
|
13
|
+
|
14
|
+
def start_element(name, attrs = [])
|
15
|
+
case name
|
16
|
+
when 'AvailabilityZones' then @availability_zones = []
|
17
|
+
when 'AvailabilityZone' then @availability_zone = {}
|
18
|
+
end
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def end_element(name)
|
23
|
+
case name
|
24
|
+
when 'MultiAZCapable', 'ReadReplicaCapable', 'Vpc' then @db_instance_option[name] = to_boolean(value)
|
25
|
+
when 'Engine', 'LicenseModel', 'EngineVersion', 'DBInstanceClass' then @db_instance_option[name] = value
|
26
|
+
when 'AvailabilityZones' then @db_instance_option[name] = @availability_zones
|
27
|
+
when 'AvailabilityZone' then @availability_zones << @availability_zone unless @availability_zone.empty?
|
28
|
+
when 'Name' then @availability_zone[name] = value
|
29
|
+
when 'ProvisionedIopsCapable' then @availability_zone[name] = to_boolean(value)
|
30
|
+
when 'OrderableDBInstanceOption'
|
31
|
+
@db_instance_options << @db_instance_option
|
32
|
+
@db_instance_option = {}
|
33
|
+
when 'OrderableDBInstanceOptions'
|
34
|
+
@response['DescribeOrderableDBInstanceOptionsResult']['OrderableDBInstanceOptions'] = @db_instance_options
|
35
|
+
when 'Marker' then @response['DescribeOrderableDBInstanceOptionsResult'][name] = value
|
36
|
+
when 'RequestId' then @response['ResponseMetadata'][name] = value
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def to_boolean(v)
|
41
|
+
(v =~ /\A\s*(true|yes|1|y)\s*$/i) == 0
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/fog/aws/rds.rb
CHANGED
@@ -51,6 +51,8 @@ module Fog
|
|
51
51
|
request :describe_db_subnet_groups
|
52
52
|
# TODO: :delete_db_subnet_group, :modify_db_subnet_group
|
53
53
|
|
54
|
+
request :describe_orderable_db_instance_options
|
55
|
+
|
54
56
|
request :describe_db_log_files
|
55
57
|
request :download_db_logfile_portion
|
56
58
|
|
@@ -73,6 +75,9 @@ module Fog
|
|
73
75
|
model :subnet_group
|
74
76
|
collection :subnet_groups
|
75
77
|
|
78
|
+
model :instance_option
|
79
|
+
collection :instance_options
|
80
|
+
|
76
81
|
model :log_file
|
77
82
|
collection :log_files
|
78
83
|
|
@@ -111,7 +111,15 @@ module Fog
|
|
111
111
|
|
112
112
|
def describe_auto_scaling_groups(options = {})
|
113
113
|
results = { 'AutoScalingGroups' => [] }
|
114
|
-
self.data[:auto_scaling_groups]
|
114
|
+
asg_set = self.data[:auto_scaling_groups]
|
115
|
+
|
116
|
+
if !options["AutoScalingGroupNames"].nil?
|
117
|
+
asg_set = asg_set.reject do |asg_name, asg_data|
|
118
|
+
![*options["AutoScalingGroupNames"]].include?(asg_name)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
asg_set.each do |asg_name, asg_data|
|
115
123
|
results['AutoScalingGroups'] << {
|
116
124
|
'AutoScalingGroupName' => asg_name
|
117
125
|
}.merge!(asg_data)
|
@@ -76,7 +76,21 @@ module Fog
|
|
76
76
|
|
77
77
|
def describe_policies(options = {})
|
78
78
|
results = { 'ScalingPolicies' => [] }
|
79
|
-
self.data[:scaling_policies]
|
79
|
+
policy_set = self.data[:scaling_policies]
|
80
|
+
|
81
|
+
for opt_key, opt_value in options
|
82
|
+
if opt_key == "PolicyNames" && opt_value != nil && opt_value != ""
|
83
|
+
policy_set = policy_set.reject do |asp_name, asp_data|
|
84
|
+
![*options["PolicyNames"]].include?(asp_name)
|
85
|
+
end
|
86
|
+
elsif opt_key == "AutoScalingGroupName" && opt_value != nil && opt_value != ""
|
87
|
+
policy_set = policy_set.reject do |asp_name, asp_data|
|
88
|
+
options["AutoScalingGroupName"] != asp_data["AutoScalingGroupName"]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
policy_set.each do |asp_name, asp_data|
|
80
94
|
results['ScalingPolicies'] << {
|
81
95
|
'PolicyName' => asp_name
|
82
96
|
}.merge!(asp_data)
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module Fog
|
2
|
+
module Compute
|
3
|
+
class AWS
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/aws/parsers/compute/describe_account_attributes'
|
7
|
+
|
8
|
+
# Describe account attributes
|
9
|
+
#
|
10
|
+
# ==== Parameters
|
11
|
+
# * filters<~Hash> - List of filters to limit results with
|
12
|
+
#
|
13
|
+
# ==== Returns
|
14
|
+
# * response<~Excon::Response>:
|
15
|
+
# * body<~Hash>:
|
16
|
+
# * 'requestId'<~String> = Id of request
|
17
|
+
# * 'accountAttributeSet'<~Array>:
|
18
|
+
# * 'attributeName'<~String> - supported-platforms
|
19
|
+
# * 'attributeValueSet'<~Array>:
|
20
|
+
# * 'attributeValue'<~String> - Value of attribute
|
21
|
+
#
|
22
|
+
# {Amazon API Reference}[http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeAccountAttributes.html]
|
23
|
+
|
24
|
+
def describe_account_attributes(filters = {})
|
25
|
+
params = Fog::AWS.indexed_filters(filters)
|
26
|
+
request({
|
27
|
+
'Action' => 'DescribeAccountAttributes',
|
28
|
+
:idempotent => true,
|
29
|
+
:parser => Fog::Parsers::Compute::AWS::DescribeAccountAttributes.new
|
30
|
+
}.merge!(params))
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Mock
|
35
|
+
def describe_account_attributes(filters = {})
|
36
|
+
account_attributes = self.data[:account_attributes]
|
37
|
+
|
38
|
+
Excon::Response.new(
|
39
|
+
:status => 200,
|
40
|
+
:body => {
|
41
|
+
'requestId' => Fog::AWS::Mock.request_id,
|
42
|
+
'accountAttributeSet' => account_attributes
|
43
|
+
}
|
44
|
+
)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -35,8 +35,6 @@ module Fog
|
|
35
35
|
response = Excon::Response.new
|
36
36
|
response.status = 200
|
37
37
|
|
38
|
-
load_balancer['Policies']['AppCookieStickinessPolicies'] << { 'CookieName' => cookie_name, 'PolicyName' => policy_name }
|
39
|
-
|
40
38
|
create_load_balancer_policy(lb_name, policy_name, 'AppCookieStickinessPolicyType', {'CookieName' => cookie_name})
|
41
39
|
|
42
40
|
response.body = {
|
@@ -37,8 +37,6 @@ module Fog
|
|
37
37
|
response = Excon::Response.new
|
38
38
|
response.status = 200
|
39
39
|
|
40
|
-
load_balancer['Policies']['LBCookieStickinessPolicies'] << { 'CookieExpirationPeriod' => cookie_expiration_period, 'PolicyName' => policy_name }
|
41
|
-
|
42
40
|
create_load_balancer_policy(lb_name, policy_name, 'LBCookieStickinessPolicyType', {'CookieExpirationPeriod' => cookie_expiration_period})
|
43
41
|
|
44
42
|
response.body = {
|
@@ -74,17 +74,37 @@ module Fog
|
|
74
74
|
|
75
75
|
dns_name = Fog::AWS::ELB::Mock.dns_name(lb_name, @region)
|
76
76
|
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
77
|
+
region = availability_zones ? availability_zones.first.gsub(/[a-z]$/, '') : "us-east-1"
|
78
|
+
supported_platforms = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:account_attributes].detect { |h| h["attributeName"] == "supported-platforms" }["values"]
|
79
|
+
security_group = if supported_platforms.include?("EC2")
|
80
|
+
Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups]['amazon-elb-sg']
|
81
|
+
else
|
82
|
+
if default_sg = Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups].values.detect { |sg| sg['groupName'] =~ /default_elb/ }
|
83
|
+
default_sg
|
84
|
+
else
|
85
|
+
default_sg_name = "default_elb_#{Fog::Mock.random_hex(6)}"
|
86
|
+
default_sg = {
|
87
|
+
'groupDescription' => 'default elb security group',
|
88
|
+
'groupName' => default_sg_name,
|
89
|
+
'groupId' => Fog::AWS::Mock.security_group_id,
|
90
|
+
'ipPermissionsEgress' => [],
|
91
|
+
'ipPermissions' => [],
|
92
|
+
'ownerId' => self.data[:owner_id]
|
93
|
+
}
|
94
|
+
Fog::Compute::AWS::Mock.data[region][@aws_access_key_id][:security_groups][default_sg_name] = default_sg
|
95
|
+
end
|
96
|
+
default_sg
|
97
|
+
end
|
98
|
+
|
99
|
+
|
85
100
|
|
86
101
|
self.data[:load_balancers][lb_name] = {
|
87
102
|
'AvailabilityZones' => availability_zones,
|
103
|
+
'BackendServerDescriptions' => [],
|
104
|
+
# Hack to facilitate not updating the local data structure
|
105
|
+
# (BackendServerDescriptions) until we do a subsequent
|
106
|
+
# describe as that is how AWS behaves.
|
107
|
+
'BackendServerDescriptionsRemote' => [],
|
88
108
|
'Subnets' => options[:subnet_ids] || [],
|
89
109
|
'Scheme' => options[:scheme].nil? ? 'internet-facing' : options[:scheme],
|
90
110
|
'SecurityGroups' => options[:security_groups].nil? ? [] : options[:security_groups],
|
@@ -105,10 +125,11 @@ module Fog
|
|
105
125
|
'Policies' => {
|
106
126
|
'AppCookieStickinessPolicies' => [],
|
107
127
|
'LBCookieStickinessPolicies' => [],
|
128
|
+
'OtherPolicies' => [],
|
108
129
|
'Proper' => []
|
109
130
|
},
|
110
131
|
'SourceSecurityGroup' => {
|
111
|
-
'GroupName' => '',
|
132
|
+
'GroupName' => security_group['groupName'],
|
112
133
|
'OwnerAlias' => ''
|
113
134
|
}
|
114
135
|
}
|
@@ -33,12 +33,12 @@ module Fog
|
|
33
33
|
params.merge!(Fog::AWS.indexed_param('PolicyAttributes.member.%d.AttributeValue', attribute_value))
|
34
34
|
|
35
35
|
request({
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
36
|
+
'Action' => 'CreateLoadBalancerPolicy',
|
37
|
+
'LoadBalancerName' => lb_name,
|
38
|
+
'PolicyName' => name,
|
39
|
+
'PolicyTypeName' => type_name,
|
40
|
+
:parser => Fog::Parsers::AWS::ELB::Empty.new
|
41
|
+
}.merge!(params))
|
42
42
|
end
|
43
43
|
|
44
44
|
end
|
@@ -46,12 +46,15 @@ module Fog
|
|
46
46
|
class Mock
|
47
47
|
def create_load_balancer_policy(lb_name, name, type_name, attributes = {})
|
48
48
|
if load_balancer = self.data[:load_balancers][lb_name]
|
49
|
-
raise Fog::AWS::
|
50
|
-
raise Fog::AWS::
|
49
|
+
raise Fog::AWS::ELB::DuplicatePolicyName, name if policy = load_balancer['Policies']['Proper'].find { |p| p['PolicyName'] == name }
|
50
|
+
raise Fog::AWS::ELB::PolicyTypeNotFound, type_name unless policy_type = self.data[:policy_types].find { |pt| pt['PolicyTypeName'] == type_name }
|
51
51
|
|
52
52
|
response = Excon::Response.new
|
53
53
|
|
54
54
|
attributes = attributes.map do |key, value|
|
55
|
+
if key == "CookieExpirationPeriod" && !value
|
56
|
+
value = 0
|
57
|
+
end
|
55
58
|
{"AttributeName" => key, "AttributeValue" => value.to_s}
|
56
59
|
end
|
57
60
|
|
@@ -20,6 +20,9 @@ module Fog
|
|
20
20
|
# * 'DescribeLoadBalancersResult'<~Hash>:
|
21
21
|
# * 'LoadBalancerDescriptions'<~Array>
|
22
22
|
# * 'AvailabilityZones'<~Array> - list of availability zones covered by this load balancer
|
23
|
+
# * 'BackendServerDescriptions'<~Array>:
|
24
|
+
# * 'InstancePort'<~Integer> - the port on which the back-end server is listening
|
25
|
+
# * 'PolicyNames'<~Array> - list of policy names enabled for the back-end server
|
23
26
|
# * 'CanonicalHostedZoneName'<~String> - name of the Route 53 hosted zone associated with the load balancer
|
24
27
|
# * 'CanonicalHostedZoneNameID'<~String> - ID of the Route 53 hosted zone associated with the load balancer
|
25
28
|
# * 'CreatedTime'<~Time> - time load balancer was created
|
@@ -41,6 +44,7 @@ module Fog
|
|
41
44
|
# * 'Policies'<~Hash>:
|
42
45
|
# * 'LBCookieStickinessPolicies'<~Array> - list of Load Balancer Generated Cookie Stickiness policies for the LoadBalancer
|
43
46
|
# * 'AppCookieStickinessPolicies'<~Array> - list of Application Generated Cookie Stickiness policies for the LoadBalancer
|
47
|
+
# * 'OtherPolicies'<~Array> - list of policy names other than the stickiness policies
|
44
48
|
# * 'SourceSecurityGroup'<~Hash>:
|
45
49
|
# * 'GroupName'<~String> - Name of the source security group to use with inbound security group rules
|
46
50
|
# * 'OwnerAlias'<~String> - Owner of the source security group
|
@@ -101,7 +105,23 @@ module Fog
|
|
101
105
|
'DescribeLoadBalancersResult' => {
|
102
106
|
'LoadBalancerDescriptions' => load_balancers.map do |lb|
|
103
107
|
lb['Instances'] = lb['Instances'].map { |i| i['InstanceId'] }
|
104
|
-
lb['Policies'] = lb['Policies'].
|
108
|
+
lb['Policies'] = lb['Policies']['Proper'].inject({'AppCookieStickinessPolicies' => [], 'LBCookieStickinessPolicies' => [], 'OtherPolicies' => []}) { |m, policy|
|
109
|
+
case policy['PolicyTypeName']
|
110
|
+
when 'AppCookieStickinessPolicyType'
|
111
|
+
cookie_name = policy['PolicyAttributeDescriptions'].detect{|h| h['AttributeName'] == 'CookieName'}['AttributeValue']
|
112
|
+
m['AppCookieStickinessPolicies'] << { 'PolicyName' => policy['PolicyName'], 'CookieName' => cookie_name }
|
113
|
+
when 'LBCookieStickinessPolicyType'
|
114
|
+
cookie_expiration_period = policy['PolicyAttributeDescriptions'].detect{|h| h['AttributeName'] == 'CookieExpirationPeriod'}['AttributeValue'].to_i
|
115
|
+
lb_policy = { 'PolicyName' => policy['PolicyName'] }
|
116
|
+
lb_policy['CookieExpirationPeriod'] = cookie_expiration_period if cookie_expiration_period > 0
|
117
|
+
m['LBCookieStickinessPolicies'] << lb_policy
|
118
|
+
else
|
119
|
+
m['OtherPolicies'] << policy['PolicyName']
|
120
|
+
end
|
121
|
+
m
|
122
|
+
}
|
123
|
+
|
124
|
+
lb['BackendServerDescriptions'] = lb.delete('BackendServerDescriptionsRemote')
|
105
125
|
lb
|
106
126
|
end
|
107
127
|
}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class ELB
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/aws/parsers/elb/empty'
|
7
|
+
|
8
|
+
# Replaces the current set of policies associated with a port on which the back-end server is listening with a new set of policies.
|
9
|
+
# After the policies have been created using CreateLoadBalancerPolicy, they can be applied here as a list.
|
10
|
+
#
|
11
|
+
# ==== Parameters
|
12
|
+
# * lb_name<~String> - Name of the ELB
|
13
|
+
# * instance_port<~Integer> - The port on the instance that the ELB will forward traffic to
|
14
|
+
# * policy_names<~Array> - Array of Strings listing the policies to set for the backend port
|
15
|
+
# ==== Returns
|
16
|
+
# * response<~Excon::Response>:
|
17
|
+
# * body<~Hash>:
|
18
|
+
# * 'ResponseMetadata'<~Hash>:
|
19
|
+
# * 'RequestId'<~String> - Id of request
|
20
|
+
def set_load_balancer_policies_for_backend_server(lb_name, instance_port, policy_names)
|
21
|
+
params = {'InstancePort' => instance_port}
|
22
|
+
if policy_names.any?
|
23
|
+
params.merge!(Fog::AWS.indexed_param('PolicyNames.member', policy_names))
|
24
|
+
else
|
25
|
+
params['PolicyNames'] = ''
|
26
|
+
end
|
27
|
+
|
28
|
+
request({ 'Action' => 'SetLoadBalancerPoliciesForBackendServer',
|
29
|
+
'LoadBalancerName' => lb_name,
|
30
|
+
:parser => Fog::Parsers::AWS::ELB::Empty.new
|
31
|
+
}.merge!(params))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Mock
|
36
|
+
def set_load_balancer_policies_for_backend_server(lb_name, instance_port, policy_names)
|
37
|
+
if load_balancer = self.data[:load_balancers][lb_name]
|
38
|
+
# Ensure policies exist
|
39
|
+
policy_names.each do |policy_name|
|
40
|
+
unless load_balancer['Policies']['Proper'].find { |p| p['PolicyName'] == policy_name }
|
41
|
+
raise Fog::AWS::ELB::PolicyNotFound, "There is no policy with name #{policy_name} for load balancer #{lb_name}"
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Update backend policies:
|
46
|
+
description = load_balancer['BackendServerDescriptionsRemote'].find{|d| d["InstancePort"] == instance_port } || {}
|
47
|
+
description["InstancePort"] = instance_port
|
48
|
+
description["PolicyNames"] = policy_names
|
49
|
+
load_balancer['BackendServerDescriptionsRemote'].delete_if{|d| d["InstancePort"] == instance_port }
|
50
|
+
load_balancer['BackendServerDescriptionsRemote'] << description
|
51
|
+
|
52
|
+
Excon::Response.new.tap do |response|
|
53
|
+
response.status = 200
|
54
|
+
response.body = {
|
55
|
+
'ResponseMetadata' => {
|
56
|
+
'RequestId' => Fog::AWS::Mock.request_id
|
57
|
+
}
|
58
|
+
}
|
59
|
+
end
|
60
|
+
else
|
61
|
+
raise Fog::AWS::ELB::NotFound
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|