fog-aws 3.5.0 → 3.28.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +12 -765
- data/LICENSE.md +1 -1
- data/README.md +117 -7
- data/fog-aws.gemspec +14 -11
- data/lib/fog/aws/auto_scaling.rb +1 -1
- data/lib/fog/aws/beanstalk.rb +1 -1
- data/lib/fog/aws/cdn.rb +1 -1
- data/lib/fog/aws/cloud_formation.rb +1 -1
- data/lib/fog/aws/cloud_watch.rb +1 -1
- data/lib/fog/aws/compute.rb +8 -5
- data/lib/fog/aws/credential_fetcher.rb +89 -7
- data/lib/fog/aws/data_pipeline.rb +1 -1
- data/lib/fog/aws/dns.rb +137 -1
- data/lib/fog/aws/dynamodb.rb +1 -1
- data/lib/fog/aws/ecs.rb +1 -1
- data/lib/fog/aws/elasticache.rb +6 -4
- data/lib/fog/aws/elb.rb +2 -2
- data/lib/fog/aws/elbv2.rb +72 -0
- data/lib/fog/aws/emr.rb +1 -1
- data/lib/fog/aws/glacier.rb +84 -22
- data/lib/fog/aws/iam.rb +1 -1
- data/lib/fog/aws/kinesis.rb +24 -16
- data/lib/fog/aws/kms.rb +1 -1
- data/lib/fog/aws/lambda.rb +1 -1
- data/lib/fog/aws/models/compute/dhcp_option.rb +1 -1
- data/lib/fog/aws/models/compute/flavors.rb +3803 -531
- data/lib/fog/aws/models/compute/network_interfaces.rb +1 -1
- data/lib/fog/aws/models/compute/security_group.rb +13 -5
- data/lib/fog/aws/models/compute/server.rb +6 -2
- data/lib/fog/aws/models/compute/servers.rb +2 -0
- data/lib/fog/aws/models/compute/snapshot.rb +7 -6
- data/lib/fog/aws/models/compute/vpc.rb +8 -2
- data/lib/fog/aws/models/elasticache/cluster.rb +1 -1
- data/lib/fog/aws/models/storage/directories.rb +1 -0
- data/lib/fog/aws/models/storage/directory.rb +0 -1
- data/lib/fog/aws/models/storage/file.rb +168 -23
- data/lib/fog/aws/models/storage/files.rb +33 -2
- data/lib/fog/aws/parsers/compute/create_snapshot.rb +1 -1
- data/lib/fog/aws/parsers/compute/create_subnet.rb +33 -6
- data/lib/fog/aws/parsers/compute/describe_security_groups.rb +18 -4
- data/lib/fog/aws/parsers/compute/describe_subnets.rb +33 -6
- data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +1 -1
- data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +3 -3
- data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +3 -1
- data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
- data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
- data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
- data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
- data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
- data/lib/fog/aws/parsers/iam/get_group_policy.rb +1 -1
- data/lib/fog/aws/parsers/iam/get_role_policy.rb +1 -1
- data/lib/fog/aws/parsers/iam/get_user_policy.rb +1 -1
- data/lib/fog/aws/parsers/iam/list_server_certificates.rb +1 -1
- data/lib/fog/aws/parsers/iam/policy_version.rb +1 -1
- data/lib/fog/aws/parsers/rds/db_cluster_parser.rb +1 -1
- data/lib/fog/aws/parsers/rds/db_parser.rb +1 -1
- data/lib/fog/aws/parsers/rds/modify_db_subnet_group.rb +1 -1
- data/lib/fog/aws/parsers/redshift/cluster_subnet_group_parser.rb +1 -1
- data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
- data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
- data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
- data/lib/fog/aws/rds.rb +1 -1
- data/lib/fog/aws/redshift.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/attach_load_balancer_target_groups.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/describe_scaling_activities.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb +1 -1
- data/lib/fog/aws/requests/cloud_formation/create_change_set.rb +1 -1
- data/lib/fog/aws/requests/cloud_formation/create_stack.rb +1 -1
- data/lib/fog/aws/requests/cloud_formation/get_template_summary.rb +1 -1
- data/lib/fog/aws/requests/cloud_formation/update_stack.rb +1 -1
- data/lib/fog/aws/requests/cloud_watch/list_metrics.rb +1 -1
- data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +1 -1
- data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +16 -1
- data/lib/fog/aws/requests/compute/create_network_interface.rb +8 -5
- data/lib/fog/aws/requests/compute/create_subnet.rb +3 -3
- data/lib/fog/aws/requests/compute/create_vpc.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +2 -2
- data/lib/fog/aws/requests/compute/describe_security_groups.rb +2 -0
- data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +1 -1
- data/lib/fog/aws/requests/compute/modify_volume.rb +1 -1
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -1
- data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +1 -1
- data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/compute/run_instances.rb +64 -0
- data/lib/fog/aws/requests/compute/stop_instances.rb +11 -3
- data/lib/fog/aws/requests/data_pipeline/deactivate_pipeline.rb +1 -1
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +0 -133
- data/lib/fog/aws/requests/ecs/list_task_definitions.rb +1 -1
- data/lib/fog/aws/requests/efs/create_file_system.rb +1 -1
- data/lib/fog/aws/requests/elasticache/authorize_cache_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/elasticache/create_cache_cluster.rb +2 -2
- data/lib/fog/aws/requests/elasticache/describe_engine_default_parameters.rb +1 -1
- data/lib/fog/aws/requests/elb/delete_load_balancer_listeners.rb +1 -1
- data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
- data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
- data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
- data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
- data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
- data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
- data/lib/fog/aws/requests/glacier/initiate_job.rb +1 -1
- data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +1 -1
- data/lib/fog/aws/requests/kinesis/list_streams.rb +1 -1
- data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
- data/lib/fog/aws/requests/rds/add_tags_to_resource.rb +12 -10
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +2 -2
- data/lib/fog/aws/requests/rds/create_db_cluster.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +1 -1
- data/lib/fog/aws/requests/rds/list_tags_for_resource.rb +10 -7
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
- data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +1 -1
- data/lib/fog/aws/requests/rds/remove_tags_from_resource.rb +9 -8
- data/lib/fog/aws/requests/ses/send_raw_email.rb +1 -1
- data/lib/fog/aws/requests/sqs/change_message_visibility.rb +1 -1
- data/lib/fog/aws/requests/sqs/delete_message.rb +1 -1
- data/lib/fog/aws/requests/storage/copy_object.rb +2 -1
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +18 -8
- data/lib/fog/aws/requests/storage/get_bucket.rb +2 -2
- data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object.rb +1 -1
- data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
- data/lib/fog/aws/requests/storage/get_service.rb +1 -1
- data/lib/fog/aws/requests/storage/list_parts.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket.rb +0 -4
- data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +1 -1
- data/lib/fog/aws/requests/storage/put_bucket_notification.rb +1 -1
- data/lib/fog/aws/requests/storage/put_object.rb +1 -1
- data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +2 -1
- data/lib/fog/aws/requests/storage/sync_clock.rb +9 -1
- data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
- data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
- data/lib/fog/aws/ses.rb +20 -17
- data/lib/fog/aws/signaturev4.rb +1 -1
- data/lib/fog/aws/simpledb.rb +1 -1
- data/lib/fog/aws/sns.rb +1 -1
- data/lib/fog/aws/sqs.rb +1 -1
- data/lib/fog/aws/storage.rb +78 -13
- data/lib/fog/aws/support.rb +1 -1
- data/lib/fog/aws/version.rb +1 -1
- data/lib/fog/aws.rb +11 -2
- metadata +49 -294
- data/.gitignore +0 -16
- data/.travis.yml +0 -53
- data/Gemfile +0 -14
- data/Rakefile +0 -14
- data/gemfiles/Gemfile-edge +0 -14
- data/gemfiles/Gemfile-ruby-2.0 +0 -7
- data/stale.yml +0 -17
- data/tests/credentials_tests.rb +0 -87
- data/tests/helper.rb +0 -29
- data/tests/helpers/collection_helper.rb +0 -90
- data/tests/helpers/compute/flavors_helper.rb +0 -28
- data/tests/helpers/compute/server_helper.rb +0 -23
- data/tests/helpers/compute/servers_helper.rb +0 -8
- data/tests/helpers/dns_helper.rb +0 -56
- data/tests/helpers/formats_helper.rb +0 -100
- data/tests/helpers/formats_helper_tests.rb +0 -107
- data/tests/helpers/mock_helper.rb +0 -109
- data/tests/helpers/model_helper.rb +0 -30
- data/tests/helpers/responds_to_helper.rb +0 -11
- data/tests/helpers/schema_validator_tests.rb +0 -104
- data/tests/helpers/succeeds_helper.rb +0 -9
- data/tests/lorem.txt +0 -1
- data/tests/models/auto_scaling/activities_tests.rb +0 -6
- data/tests/models/auto_scaling/configuration_test.rb +0 -13
- data/tests/models/auto_scaling/configurations_tests.rb +0 -11
- data/tests/models/auto_scaling/groups_test.rb +0 -27
- data/tests/models/auto_scaling/helper.rb +0 -0
- data/tests/models/auto_scaling/instance_tests.rb +0 -15
- data/tests/models/auto_scaling/instances_tests.rb +0 -6
- data/tests/models/beanstalk/application_tests.rb +0 -69
- data/tests/models/beanstalk/applications_tests.rb +0 -7
- data/tests/models/beanstalk/environment_tests.rb +0 -131
- data/tests/models/beanstalk/environments_tests.rb +0 -34
- data/tests/models/beanstalk/template_tests.rb +0 -47
- data/tests/models/beanstalk/templates_tests.rb +0 -62
- data/tests/models/beanstalk/version_tests.rb +0 -66
- data/tests/models/beanstalk/versions_tests.rb +0 -60
- data/tests/models/cdn/distribution_tests.rb +0 -15
- data/tests/models/cdn/distributions_tests.rb +0 -15
- data/tests/models/cdn/invalidation_tests.rb +0 -31
- data/tests/models/cdn/invalidations_tests.rb +0 -14
- data/tests/models/cdn/streaming_distribution_tests.rb +0 -15
- data/tests/models/cdn/streaming_distributions_tests.rb +0 -15
- data/tests/models/cloud_watch/alarm_data_tests.rb +0 -42
- data/tests/models/cloud_watch/alarm_history_tests.rb +0 -22
- data/tests/models/cloud_watch/metric_statistics_tests.rb +0 -51
- data/tests/models/cloud_watch/metrics_tests.rb +0 -32
- data/tests/models/compute/address_tests.rb +0 -43
- data/tests/models/compute/addresses_tests.rb +0 -5
- data/tests/models/compute/dhcp_option_tests.rb +0 -3
- data/tests/models/compute/dhcp_options_tests.rb +0 -3
- data/tests/models/compute/internet_gateway_tests.rb +0 -3
- data/tests/models/compute/internet_gateways_tests.rb +0 -3
- data/tests/models/compute/key_pair_tests.rb +0 -26
- data/tests/models/compute/key_pairs_tests.rb +0 -5
- data/tests/models/compute/network_acl_tests.rb +0 -109
- data/tests/models/compute/network_acls_tests.rb +0 -20
- data/tests/models/compute/network_interfaces_test.rb +0 -12
- data/tests/models/compute/security_group_tests.rb +0 -98
- data/tests/models/compute/security_groups_tests.rb +0 -5
- data/tests/models/compute/server_tests.rb +0 -94
- data/tests/models/compute/snapshot_tests.rb +0 -10
- data/tests/models/compute/snapshots_tests.rb +0 -10
- data/tests/models/compute/subnet_tests.rb +0 -13
- data/tests/models/compute/subnets_tests.rb +0 -5
- data/tests/models/compute/volume_tests.rb +0 -65
- data/tests/models/compute/volumes_tests.rb +0 -5
- data/tests/models/compute/vpc_tests.rb +0 -26
- data/tests/models/compute/vpcs_tests.rb +0 -19
- data/tests/models/data_pipeline/pipeline_tests.rb +0 -8
- data/tests/models/data_pipeline/pipelines_tests.rb +0 -8
- data/tests/models/dns/record_tests.rb +0 -33
- data/tests/models/dns/records_tests.rb +0 -41
- data/tests/models/dns/zone_tests.rb +0 -4
- data/tests/models/dns/zones_tests.rb +0 -4
- data/tests/models/efs/file_system_tests.rb +0 -12
- data/tests/models/efs/mount_target_tests.rb +0 -45
- data/tests/models/efs/mount_targets_tests.rb +0 -30
- data/tests/models/elasticache/cluster_tests.rb +0 -30
- data/tests/models/elasticache/parameter_groups_tests.rb +0 -15
- data/tests/models/elasticache/security_groups_tests.rb +0 -52
- data/tests/models/elasticache/subnet_groups_tests.rb +0 -43
- data/tests/models/elb/model_tests.rb +0 -360
- data/tests/models/elb/tagging_tests.rb +0 -15
- data/tests/models/glacier/model_tests.rb +0 -47
- data/tests/models/iam/access_keys_tests.rb +0 -53
- data/tests/models/iam/groups_tests.rb +0 -59
- data/tests/models/iam/instance_profile_tests.rb +0 -18
- data/tests/models/iam/managed_policies_tests.rb +0 -89
- data/tests/models/iam/policies_tests.rb +0 -57
- data/tests/models/iam/roles_tests.rb +0 -71
- data/tests/models/iam/users_tests.rb +0 -119
- data/tests/models/rds/cluster_tests.rb +0 -54
- data/tests/models/rds/clusters_tests.rb +0 -5
- data/tests/models/rds/event_subscription_tests.rb +0 -9
- data/tests/models/rds/event_subscriptions_tests.rb +0 -6
- data/tests/models/rds/helper.rb +0 -25
- data/tests/models/rds/instance_option_tests.rb +0 -14
- data/tests/models/rds/parameter_group_tests.rb +0 -24
- data/tests/models/rds/parameter_groups_tests.rb +0 -8
- data/tests/models/rds/security_group_tests.rb +0 -77
- data/tests/models/rds/security_groups_tests.rb +0 -5
- data/tests/models/rds/server_tests.rb +0 -131
- data/tests/models/rds/servers_tests.rb +0 -24
- data/tests/models/rds/snapshot_tests.rb +0 -12
- data/tests/models/rds/snapshots_tests.rb +0 -12
- data/tests/models/rds/tagging_tests.rb +0 -20
- data/tests/models/sns/topic_tests.rb +0 -15
- data/tests/models/sns/topics_tests.rb +0 -6
- data/tests/models/storage/directory_tests.rb +0 -91
- data/tests/models/storage/file_tests.rb +0 -129
- data/tests/models/storage/files_tests.rb +0 -58
- data/tests/models/storage/url_tests.rb +0 -25
- data/tests/models/storage/version_tests.rb +0 -52
- data/tests/models/storage/versions_tests.rb +0 -51
- data/tests/models/support/trusted_advisor_tests.rb +0 -25
- data/tests/parsers/compute/describe_images_tests.rb +0 -33
- data/tests/parsers/elb/describe_load_balancers.rb +0 -65
- data/tests/requests/auto_scaling/auto_scaling_tests.rb +0 -111
- data/tests/requests/auto_scaling/describe_types_tests.rb +0 -102
- data/tests/requests/auto_scaling/helper.rb +0 -229
- data/tests/requests/auto_scaling/model_tests.rb +0 -235
- data/tests/requests/auto_scaling/notification_configuration_tests.rb +0 -124
- data/tests/requests/auto_scaling/tag_tests.rb +0 -63
- data/tests/requests/beanstalk/application_tests.rb +0 -140
- data/tests/requests/beanstalk/solution_stack_tests.rb +0 -22
- data/tests/requests/cdn/cdn_tests.rb +0 -252
- data/tests/requests/cloud_formation/stack_tests.rb +0 -167
- data/tests/requests/cloud_watch/get_metric_statistics_tests.rb +0 -28
- data/tests/requests/cloud_watch/list_metrics_test.rb +0 -64
- data/tests/requests/cloud_watch/put_metric_data_tests.rb +0 -36
- data/tests/requests/compute/address_tests.rb +0 -144
- data/tests/requests/compute/assign_private_ip_tests.rb +0 -55
- data/tests/requests/compute/availability_zone_tests.rb +0 -25
- data/tests/requests/compute/client_tests.rb +0 -25
- data/tests/requests/compute/dhcp_options_tests.rb +0 -39
- data/tests/requests/compute/helper.rb +0 -27
- data/tests/requests/compute/image_tests.rb +0 -169
- data/tests/requests/compute/instance_attrib_tests.rb +0 -168
- data/tests/requests/compute/instance_tests.rb +0 -338
- data/tests/requests/compute/internet_gateway_tests.rb +0 -49
- data/tests/requests/compute/key_pair_tests.rb +0 -67
- data/tests/requests/compute/network_acl_tests.rb +0 -112
- data/tests/requests/compute/network_interface_tests.rb +0 -239
- data/tests/requests/compute/placement_group_tests.rb +0 -48
- data/tests/requests/compute/region_tests.rb +0 -52
- data/tests/requests/compute/route_tests.rb +0 -341
- data/tests/requests/compute/security_group_tests.rb +0 -446
- data/tests/requests/compute/snapshot_tests.rb +0 -77
- data/tests/requests/compute/spot_datafeed_subscription_tests.rb +0 -47
- data/tests/requests/compute/spot_instance_tests.rb +0 -55
- data/tests/requests/compute/spot_price_history_tests.rb +0 -23
- data/tests/requests/compute/subnet_tests.rb +0 -87
- data/tests/requests/compute/tag_tests.rb +0 -101
- data/tests/requests/compute/volume_tests.rb +0 -263
- data/tests/requests/compute/vpc_tests.rb +0 -216
- data/tests/requests/data_pipeline/helper.rb +0 -78
- data/tests/requests/data_pipeline/pipeline_tests.rb +0 -80
- data/tests/requests/dns/change_resource_record_sets_tests.rb +0 -34
- data/tests/requests/dns/dns_tests.rb +0 -240
- data/tests/requests/dns/health_check_tests.rb +0 -159
- data/tests/requests/dns/helper.rb +0 -21
- data/tests/requests/dynamodb/item_tests.rb +0 -137
- data/tests/requests/dynamodb/table_tests.rb +0 -99
- data/tests/requests/ecs/cluster_tests.rb +0 -112
- data/tests/requests/ecs/container_instance_tests.rb +0 -119
- data/tests/requests/ecs/helper.rb +0 -276
- data/tests/requests/ecs/sample_task_definition1.json +0 -56
- data/tests/requests/ecs/service_tests.rb +0 -132
- data/tests/requests/ecs/task_definitions_tests.rb +0 -97
- data/tests/requests/ecs/task_tests.rb +0 -145
- data/tests/requests/efs/file_system_tests.rb +0 -152
- data/tests/requests/efs/helper.rb +0 -44
- data/tests/requests/elasticache/cache_cluster_tests.rb +0 -137
- data/tests/requests/elasticache/describe_events.rb +0 -17
- data/tests/requests/elasticache/describe_reserved_cache_nodes.rb +0 -17
- data/tests/requests/elasticache/helper.rb +0 -103
- data/tests/requests/elasticache/parameter_group_tests.rb +0 -105
- data/tests/requests/elasticache/security_group_tests.rb +0 -108
- data/tests/requests/elasticache/subnet_group_tests.rb +0 -52
- data/tests/requests/elb/helper.rb +0 -91
- data/tests/requests/elb/listener_tests.rb +0 -68
- data/tests/requests/elb/load_balancer_tests.rb +0 -89
- data/tests/requests/elb/policy_tests.rb +0 -132
- data/tests/requests/emr/helper.rb +0 -167
- data/tests/requests/emr/instance_group_tests.rb +0 -106
- data/tests/requests/emr/job_flow_tests.rb +0 -88
- data/tests/requests/federation/get_signin_token_tests.rb +0 -11
- data/tests/requests/glacier/archive_tests.rb +0 -13
- data/tests/requests/glacier/multipart_upload_tests.rb +0 -29
- data/tests/requests/glacier/tree_hash_tests.rb +0 -62
- data/tests/requests/glacier/vault_tests.rb +0 -35
- data/tests/requests/iam/access_key_tests.rb +0 -53
- data/tests/requests/iam/account_policy_tests.rb +0 -20
- data/tests/requests/iam/account_tests.rb +0 -34
- data/tests/requests/iam/group_policy_tests.rb +0 -48
- data/tests/requests/iam/group_tests.rb +0 -44
- data/tests/requests/iam/helper.rb +0 -154
- data/tests/requests/iam/instance_profile_tests.rb +0 -44
- data/tests/requests/iam/login_profile_tests.rb +0 -62
- data/tests/requests/iam/managed_policy_tests.rb +0 -110
- data/tests/requests/iam/mfa_tests.rb +0 -23
- data/tests/requests/iam/role_tests.rb +0 -156
- data/tests/requests/iam/server_certificate_tests.rb +0 -130
- data/tests/requests/iam/user_policy_tests.rb +0 -45
- data/tests/requests/iam/user_tests.rb +0 -78
- data/tests/requests/iam/versioned_managed_policy_tests.rb +0 -105
- data/tests/requests/kinesis/helper.rb +0 -111
- data/tests/requests/kinesis/stream_tests.rb +0 -169
- data/tests/requests/kms/helper.rb +0 -27
- data/tests/requests/kms/key_tests.rb +0 -23
- data/tests/requests/lambda/function_sample_1.js +0 -9
- data/tests/requests/lambda/function_sample_2.js +0 -9
- data/tests/requests/lambda/function_tests.rb +0 -460
- data/tests/requests/lambda/helper.rb +0 -81
- data/tests/requests/rds/cluster_snapshot_tests.rb +0 -43
- data/tests/requests/rds/cluster_tests.rb +0 -37
- data/tests/requests/rds/db_engine_versions.rb +0 -7
- data/tests/requests/rds/db_snapshot_tests.rb +0 -62
- data/tests/requests/rds/describe_events.rb +0 -16
- data/tests/requests/rds/event_subscription_tests.rb +0 -30
- data/tests/requests/rds/helper.rb +0 -406
- data/tests/requests/rds/instance_option_tests.rb +0 -27
- data/tests/requests/rds/instance_tests.rb +0 -149
- data/tests/requests/rds/log_file_tests.rb +0 -19
- data/tests/requests/rds/parameter_group_tests.rb +0 -62
- data/tests/requests/rds/parameter_request_tests.rb +0 -32
- data/tests/requests/rds/security_group_tests.rb +0 -101
- data/tests/requests/rds/subnet_groups_tests.rb +0 -52
- data/tests/requests/rds/tagging_tests.rb +0 -78
- data/tests/requests/redshift/cluster_parameter_group_tests.rb +0 -76
- data/tests/requests/redshift/cluster_security_group_tests.rb +0 -42
- data/tests/requests/redshift/cluster_snapshot_tests.rb +0 -73
- data/tests/requests/redshift/cluster_tests.rb +0 -80
- data/tests/requests/ses/helper.rb +0 -9
- data/tests/requests/ses/verified_domain_identity_tests.rb +0 -16
- data/tests/requests/ses/verified_email_address_tests.rb +0 -27
- data/tests/requests/simpledb/attributes_tests.rb +0 -86
- data/tests/requests/simpledb/domain_tests.rb +0 -51
- data/tests/requests/simpledb/helper.rb +0 -10
- data/tests/requests/sns/helper.rb +0 -9
- data/tests/requests/sns/subscription_tests.rb +0 -86
- data/tests/requests/sns/topic_tests.rb +0 -53
- data/tests/requests/sqs/helper.rb +0 -9
- data/tests/requests/sqs/message_tests.rb +0 -51
- data/tests/requests/sqs/queue_tests.rb +0 -50
- data/tests/requests/storage/acl_utils_tests.rb +0 -209
- data/tests/requests/storage/bucket_tests.rb +0 -416
- data/tests/requests/storage/cors_utils_tests.rb +0 -108
- data/tests/requests/storage/delete_multiple_objects_tests.rb +0 -12
- data/tests/requests/storage/multipart_upload_tests.rb +0 -121
- data/tests/requests/storage/object_tests.rb +0 -262
- data/tests/requests/storage/versioning_tests.rb +0 -262
- data/tests/requests/sts/assume_role_tests.rb +0 -19
- data/tests/requests/sts/assume_role_with_saml_tests.rb +0 -18
- data/tests/requests/sts/assume_role_with_web_identity_tests.rb +0 -28
- data/tests/requests/sts/get_federation_token_tests.rb +0 -20
- data/tests/requests/sts/session_token_tests.rb +0 -16
- data/tests/requests/support/helper.rb +0 -43
- data/tests/requests/support/trusted_advisor_check_tests.rb +0 -16
- data/tests/signaturev4_tests.rb +0 -106
- data/tests/signed_params_tests.rb +0 -17
- data/tests/storage_tests.rb +0 -7
@@ -16,7 +16,7 @@ module Fog
|
|
16
16
|
# * UsePreviousTemplate [Boolean] Reuse the template that is associated with the stack to create the change set.
|
17
17
|
# * NotificationARNs [Array] List of SNS topics to publish events to.
|
18
18
|
# * Parameters [Hash] Hash of providers to supply to template.
|
19
|
-
# * Capabilities [Array] List of
|
19
|
+
# * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
|
20
20
|
#
|
21
21
|
# @return [Excon::Response]:
|
22
22
|
# * body [Hash:
|
@@ -16,7 +16,7 @@ module Fog
|
|
16
16
|
# * NotificationARNs [Array] List of SNS topics to publish events to.
|
17
17
|
# * Parameters [Hash] Hash of providers to supply to template
|
18
18
|
# * TimeoutInMinutes [Integer] Minutes to wait before status is set to CREATE_FAILED
|
19
|
-
# * Capabilities [Array] List of
|
19
|
+
# * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources
|
20
20
|
# * StackPolicyBody [String] Structure containing the stack policy body.
|
21
21
|
# * StackPolicyURL [String] URL of file containing the stack policy.
|
22
22
|
# * Tags [Array] Key-value pairs to associate with this stack.
|
@@ -15,7 +15,7 @@ module Fog
|
|
15
15
|
#
|
16
16
|
# @return [Excon::Response]:
|
17
17
|
# * body [Hash:
|
18
|
-
# * Capabilities [Array] List of
|
18
|
+
# * Capabilities [Array] List of capabilities in the template.
|
19
19
|
# * CapabilitiesReason [String] The list of resources that generated the values in the Capabilities response element.
|
20
20
|
# * Description [String] Template Description.
|
21
21
|
# * Metadata [String] Template Metadata.
|
@@ -12,7 +12,7 @@ module Fog
|
|
12
12
|
# or (one of the two Template parameters is required)
|
13
13
|
# * TemplateURL [String] URL of file containing the template body.
|
14
14
|
# * Parameters [Hash] Hash of providers to supply to template.
|
15
|
-
# * Capabilities [Array] List of
|
15
|
+
# * Capabilities [Array] List of capabilities the stack is granted. Currently CAPABILITY_IAM for allowing the creation of IAM resources.
|
16
16
|
# * NotificationARNs [Array] List of SNS topics to publish events to.
|
17
17
|
# * ResourceTypes [Array] The template resource types that you have permissions to work.
|
18
18
|
# * StackPolicyBody [String] Structure containing the stack policy body.
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
# Add permissions to a security group
|
8
8
|
#
|
9
9
|
# ==== Parameters
|
10
|
-
# * group_name<~String> - Name of group, optional (can also be
|
10
|
+
# * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * 'GroupName'<~String> - Name of security group to modify
|
13
13
|
# * 'GroupId'<~String> - Id of security group to modify
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
# Add permissions to a security group
|
8
8
|
#
|
9
9
|
# ==== Parameters
|
10
|
-
# * group_name<~String> - Name of group, optional (can also be
|
10
|
+
# * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * 'GroupName'<~String> - Name of security group to modify
|
13
13
|
# * 'GroupId'<~String> - Id of security group to modify
|
@@ -30,6 +30,9 @@ module Fog
|
|
30
30
|
# * 'IpRanges'<~Array>:
|
31
31
|
# * ip_range<~Hash>:
|
32
32
|
# * 'CidrIp'<~String> - CIDR range
|
33
|
+
# * 'Ipv6Ranges'<~Array>:
|
34
|
+
# * ip_range<~Hash>:
|
35
|
+
# * 'CidrIpv6'<~String> - CIDR range
|
33
36
|
# * 'ToPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
34
37
|
#
|
35
38
|
# === Returns
|
@@ -72,6 +75,10 @@ module Fog
|
|
72
75
|
range_index += 1
|
73
76
|
params[format('IpPermissions.%d.IpRanges.%d.CidrIp', key_index, range_index)] = ip_range['CidrIp']
|
74
77
|
end
|
78
|
+
(permission['Ipv6Ranges'] || []).each_with_index do |ip_range, range_index|
|
79
|
+
range_index += 1
|
80
|
+
params[format('IpPermissions.%d.Ipv6Ranges.%d.CidrIpv6', key_index, range_index)] = ip_range['CidrIpv6']
|
81
|
+
end
|
75
82
|
end
|
76
83
|
params.reject {|k, v| v.nil? }
|
77
84
|
end
|
@@ -186,6 +193,14 @@ module Fog
|
|
186
193
|
'groups' => [],
|
187
194
|
'ipRanges' => [{'cidrIp' => options['CidrIp']}]
|
188
195
|
}
|
196
|
+
elsif options['CidrIpv6']
|
197
|
+
normalized_permissions << {
|
198
|
+
'ipProtocol' => options['IpProtocol'],
|
199
|
+
'fromPort' => Integer(options['FromPort']),
|
200
|
+
'toPort' => Integer(options['ToPort']),
|
201
|
+
'groups' => [],
|
202
|
+
'ipv6Ranges' => [{'cidrIpv6' => options['CidrIpv6']}]
|
203
|
+
}
|
189
204
|
elsif options['IpPermissions']
|
190
205
|
options['IpPermissions'].each do |permission|
|
191
206
|
|
@@ -2,6 +2,7 @@ module Fog
|
|
2
2
|
module AWS
|
3
3
|
class Compute
|
4
4
|
class Real
|
5
|
+
require 'ipaddr'
|
5
6
|
require 'fog/aws/parsers/compute/create_network_interface'
|
6
7
|
|
7
8
|
# Creates a network interface
|
@@ -24,7 +25,7 @@ module Fog
|
|
24
25
|
# * 'availabilityZone'<~String> - The availability zone
|
25
26
|
# * 'description'<~String> - The description
|
26
27
|
# * 'ownerId'<~String> - The ID of the person who created the interface
|
27
|
-
# * 'requesterId'<~String> - The ID
|
28
|
+
# * 'requesterId'<~String> - The ID or the entity requesting this interface
|
28
29
|
# * 'requesterManaged'<~String> -
|
29
30
|
# * 'status'<~String> - "available" or "in-use"
|
30
31
|
# * 'macAddress'<~String> -
|
@@ -68,7 +69,7 @@ module Fog
|
|
68
69
|
raise Fog::AWS::Compute::Error.new("Unknown subnet '#{subnetId}' specified")
|
69
70
|
else
|
70
71
|
id = Fog::AWS::Mock.network_interface_id
|
71
|
-
cidr_block =
|
72
|
+
cidr_block = IPAddr.new(subnet['cidrBlock'])
|
72
73
|
|
73
74
|
groups = {}
|
74
75
|
if options['GroupSet']
|
@@ -82,12 +83,14 @@ module Fog
|
|
82
83
|
end
|
83
84
|
|
84
85
|
if options['PrivateIpAddress'].nil?
|
86
|
+
range = cidr_block.to_range
|
85
87
|
# Here we try to act like a DHCP server and pick the first
|
86
88
|
# available IP (not including the first in the cidr block,
|
87
89
|
# which is typically reserved for the gateway).
|
88
|
-
|
89
|
-
|
90
|
-
|
90
|
+
range = range.drop(2)[0..-2] if cidr_block.ipv4?
|
91
|
+
|
92
|
+
range.each do |p_ip|
|
93
|
+
unless self.data[:network_interfaces].map{ |ni, ni_conf| ni_conf['privateIpAddress'] }.include?p_ip.to_s
|
91
94
|
options['PrivateIpAddress'] = p_ip.to_s
|
92
95
|
break
|
93
96
|
end
|
@@ -2,7 +2,7 @@ module Fog
|
|
2
2
|
module AWS
|
3
3
|
class Compute
|
4
4
|
class Real
|
5
|
-
require '
|
5
|
+
require 'ipaddr'
|
6
6
|
require 'fog/aws/parsers/compute/create_subnet'
|
7
7
|
|
8
8
|
# Creates a Subnet with the CIDR block you specify.
|
@@ -50,11 +50,11 @@ module Fog
|
|
50
50
|
if vpc.nil?
|
51
51
|
raise Fog::AWS::Compute::NotFound.new("The vpc ID '#{vpcId}' does not exist")
|
52
52
|
end
|
53
|
-
if ! ::
|
53
|
+
if ! ::IPAddr.new(vpc['cidrBlock']).include?(::IPAddr.new(cidrBlock))
|
54
54
|
raise Fog::AWS::Compute::Error.new("Range => The CIDR '#{cidrBlock}' is invalid.")
|
55
55
|
end
|
56
56
|
self.data[:subnets].select{ |s| s['vpcId'] == vpcId }.each do |subnet|
|
57
|
-
if ::
|
57
|
+
if ::IPAddr.new(subnet['cidrBlock']).include?(::IPAddr.new(cidrBlock))
|
58
58
|
raise Fog::AWS::Compute::Error.new("Conflict => The CIDR '#{cidrBlock}' conflicts with another subnet")
|
59
59
|
end
|
60
60
|
end
|
@@ -11,7 +11,6 @@ module Fog
|
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * InstanceTenancy<~String> - The allowed tenancy of instances launched into the VPC. A value of default
|
13
13
|
# means instances can be launched with any tenancy; a value of dedicated means instances must be launched with tenancy as dedicated.
|
14
|
-
# please not that the documentation is incorrect instanceTenancy will not work while InstanceTenancy will
|
15
14
|
#
|
16
15
|
# === Returns
|
17
16
|
# * response<~Excon::Response>:
|
@@ -54,7 +53,8 @@ module Fog
|
|
54
53
|
'classicLinkEnabled' => false,
|
55
54
|
'classicLinkDnsSupport' => false,
|
56
55
|
'cidrBlockAssociationSet' => [{ 'cidrBlock' => cidrBlock, 'state' => 'associated', 'associationId' => "vpc-cidr-assoc-#{vpc_id}" }],
|
57
|
-
'ipv6CidrBlockAssociationSet' => []
|
56
|
+
'ipv6CidrBlockAssociationSet' => [],
|
57
|
+
'instanceTenancy' => options['InstanceTenancy'] || 'default'
|
58
58
|
}
|
59
59
|
self.data[:vpcs].push(vpc)
|
60
60
|
|
@@ -67,7 +67,7 @@ module Fog
|
|
67
67
|
route_table = self.data[:route_tables].find { |routetable| routetable["routeTableId"].eql? default_route.id }
|
68
68
|
|
69
69
|
# This pushes a main route to the associationSet
|
70
|
-
# add_route_association(routeTableId, subnetId, main=false) is declared in
|
70
|
+
# add_route_association(routeTableId, subnetId, main=false) is declared in associate_route_table.rb
|
71
71
|
assoc = add_route_association(default_route.id, nil, true)
|
72
72
|
route_table["associationSet"].push(assoc)
|
73
73
|
|
@@ -20,7 +20,7 @@ module Fog
|
|
20
20
|
# * 'availabilityZone'<~String> - The availability zone
|
21
21
|
# * 'description'<~String> - The description
|
22
22
|
# * 'ownerId'<~String> - The ID of the person who created the interface
|
23
|
-
# * 'requesterId'<~String> - The ID
|
23
|
+
# * 'requesterId'<~String> - The ID of the entity requesting this interface
|
24
24
|
# * 'requesterManaged'<~String> -
|
25
25
|
# * 'status'<~String> - "available" or "in-use"
|
26
26
|
# * 'macAddress'<~String> -
|
@@ -49,7 +49,7 @@ module Fog
|
|
49
49
|
# * 'privateIpAddresses' <~Array>:
|
50
50
|
# * 'privateIpAddress'<~String> - One of the additional private ip address
|
51
51
|
# * 'privateDnsName'<~String> - The private DNS associate to the ip address
|
52
|
-
# * '
|
52
|
+
# * 'primary'<~String> - Whether main ip associate with NIC true of false
|
53
53
|
#
|
54
54
|
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/2012-03-01/APIReference/index.html?ApiReference-query-DescribeNetworkInterfaces.html]
|
55
55
|
def describe_network_interfaces(filters = {})
|
@@ -27,6 +27,8 @@ module Fog
|
|
27
27
|
# * 'ipProtocol'<~String> - Ip protocol, must be in ['tcp', 'udp', 'icmp']
|
28
28
|
# * 'ipRanges'<~Array>:
|
29
29
|
# * 'cidrIp'<~String> - CIDR range
|
30
|
+
# * 'ipv6Ranges'<~Array>:
|
31
|
+
# * 'cidrIpv6'<~String> - CIDR ipv6 range
|
30
32
|
# * 'toPort'<~Integer> - End of port range (or -1 for ICMP wildcard)
|
31
33
|
# * 'ownerId'<~String> - AWS Access Key Id of the owner of the security group
|
32
34
|
# * 'NextToken'<~String> - The token to retrieve the next page of results
|
@@ -9,7 +9,7 @@ module Fog
|
|
9
9
|
# ==== Parameters
|
10
10
|
# * network_interface_id<~String> - The ID of the network interface you want to describe an attribute of
|
11
11
|
# * attribute<~String> - The attribute to modify, must be one of 'description', 'groupSet', 'sourceDestCheck' or 'attachment'
|
12
|
-
# * value<~Object> - New value of attribute, the actual
|
12
|
+
# * value<~Object> - New value of attribute, the actual type depends on the attribute:
|
13
13
|
# description - a string
|
14
14
|
# groupSet - a list of group id's
|
15
15
|
# sourceDestCheck - a boolean value
|
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
# * volume_id<~String> - The ID of the volume
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * 'VolumeType'<~String> - Type of volume
|
13
|
-
# * 'Size'<~Integer> - Size in GiBs
|
13
|
+
# * 'Size'<~Integer> - Size in GiBs of the volume
|
14
14
|
# * 'Iops'<~Integer> - Number of IOPS the volume supports
|
15
15
|
#
|
16
16
|
# ==== Response
|
@@ -113,7 +113,7 @@ module Fog
|
|
113
113
|
raise Fog::AWS::Compute::Error.new(message)
|
114
114
|
end
|
115
115
|
|
116
|
-
if !image_id.match(/^ami-[a-f0-9]{8}$/)
|
116
|
+
if !image_id.match(/^ami-[a-f0-9]{8,17}$/)
|
117
117
|
message = "The image id '[#{image_id}]' does not exist"
|
118
118
|
raise Fog::AWS::Compute::NotFound.new(message)
|
119
119
|
end
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
# Remove permissions from a security group
|
8
8
|
#
|
9
9
|
# ==== Parameters
|
10
|
-
# * group_name<~String> - Name of group, optional (can also be
|
10
|
+
# * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * 'GroupName'<~String> - Name of security group to modify
|
13
13
|
# * 'GroupId'<~String> - Id of security group to modify
|
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
# Remove permissions from a security group
|
8
8
|
#
|
9
9
|
# ==== Parameters
|
10
|
-
# * group_name<~String> - Name of group, optional (can also be
|
10
|
+
# * group_name<~String> - Name of group, optional (can also be specified as GroupName in options)
|
11
11
|
# * options<~Hash>:
|
12
12
|
# * 'GroupName'<~String> - Name of security group to modify
|
13
13
|
# * 'GroupId'<~String> - Id of security group to modify
|
@@ -30,6 +30,8 @@ module Fog
|
|
30
30
|
# * 'Ebs.Encrypted'<~Boolean> - specifies whether or not the volume is to be encrypted unless snapshot is specified
|
31
31
|
# * 'Ebs.VolumeType'<~String> - Type of EBS volue. Valid options in ['standard', 'io1'] default is 'standard'.
|
32
32
|
# * 'Ebs.Iops'<~String> - The number of I/O operations per second (IOPS) that the volume supports. Required when VolumeType is 'io1'
|
33
|
+
# * 'HibernationOptions'<~Array>: array of hashes
|
34
|
+
# * 'Configured'<~Boolean> - specifies whether or not the instance is configured for hibernation. This parameter is valid only if the instance meets the hibernation prerequisites.
|
33
35
|
# * 'NetworkInterfaces'<~Array>: array of hashes
|
34
36
|
# * 'NetworkInterfaceId'<~String> - An existing interface to attach to a single instance
|
35
37
|
# * 'DeviceIndex'<~String> - The device index. Applies both to attaching an existing network interface and creating a network interface
|
@@ -42,6 +44,11 @@ module Fog
|
|
42
44
|
# * 'PrivateIpAddresses.Primary'<~Bool> - Indicates whether the private IP address is the primary private IP address.
|
43
45
|
# * 'SecondaryPrivateIpAddressCount'<~Bool> - The number of private IP addresses to assign to the network interface.
|
44
46
|
# * 'AssociatePublicIpAddress'<~String> - Indicates whether to assign a public IP address to an instance in a VPC. The public IP address is assigned to a specific network interface
|
47
|
+
# * 'TagSpecifications'<~Array>: array of hashes
|
48
|
+
# * 'ResourceType'<~String> - Type of resource to apply tags on, e.g: instance or volume
|
49
|
+
# * 'Tags'<~Array> - List of hashes reprensenting tag to be set
|
50
|
+
# * 'Key'<~String> - Tag name
|
51
|
+
# * 'Value'<~String> - Tag value
|
45
52
|
# * 'ClientToken'<~String> - unique case-sensitive token for ensuring idempotency
|
46
53
|
# * 'DisableApiTermination'<~Boolean> - specifies whether or not to allow termination of the instance from the api
|
47
54
|
# * 'SecurityGroup'<~Array> or <~String> - Name of security group(s) for instances (not supported for VPC)
|
@@ -75,6 +82,8 @@ module Fog
|
|
75
82
|
# * 'deviceName'<~String> - specifies how volume is exposed to instance
|
76
83
|
# * 'status'<~String> - status of attached volume
|
77
84
|
# * 'volumeId'<~String> - Id of attached volume
|
85
|
+
# * 'hibernationOptions'<~Array>
|
86
|
+
# * 'configured'<~Boolean> - whether or not the instance is enabled for hibernation
|
78
87
|
# * 'dnsName'<~String> - public dns name, blank until instance is running
|
79
88
|
# * 'imageId'<~String> - image id of ami used to launch instance
|
80
89
|
# * 'instanceId'<~String> - id of the instance
|
@@ -111,6 +120,13 @@ module Fog
|
|
111
120
|
end
|
112
121
|
end
|
113
122
|
end
|
123
|
+
if hibernation_options = options.delete('HibernationOptions')
|
124
|
+
hibernation_options.each_with_index do |mapping, index|
|
125
|
+
for key, value in mapping
|
126
|
+
options.merge!({ format("HibernationOptions.%d.#{key}", index) => value })
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
114
130
|
if security_groups = options.delete('SecurityGroup')
|
115
131
|
options.merge!(Fog::AWS.indexed_param('SecurityGroup', [*security_groups]))
|
116
132
|
end
|
@@ -133,6 +149,45 @@ module Fog
|
|
133
149
|
end
|
134
150
|
end
|
135
151
|
end
|
152
|
+
if tag_specifications = options.delete('TagSpecifications')
|
153
|
+
# From https://docs.aws.amazon.com/sdk-for-ruby/v2/api/Aws/EC2/Client.html#run_instances-instance_method
|
154
|
+
# And https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RunInstances.html
|
155
|
+
# Discussed at https://github.com/fog/fog-aws/issues/603
|
156
|
+
#
|
157
|
+
# Example
|
158
|
+
#
|
159
|
+
# TagSpecifications: [
|
160
|
+
# {
|
161
|
+
# ResourceType: "instance",
|
162
|
+
# Tags: [
|
163
|
+
# {
|
164
|
+
# Key: "Project",
|
165
|
+
# Value: "MyProject",
|
166
|
+
# },
|
167
|
+
# ],
|
168
|
+
# },
|
169
|
+
# {
|
170
|
+
# ResourceType: "volume",
|
171
|
+
# Tags: [
|
172
|
+
# {
|
173
|
+
# Key: "Project",
|
174
|
+
# Value: "MyProject",
|
175
|
+
# },
|
176
|
+
# ],
|
177
|
+
# },
|
178
|
+
# ]
|
179
|
+
tag_specifications.each_with_index do |val, idx|
|
180
|
+
resource_type = val["ResourceType"]
|
181
|
+
tags = val["Tags"]
|
182
|
+
options["TagSpecification.#{idx}.ResourceType"] = resource_type
|
183
|
+
tags.each_with_index do |tag, tag_idx|
|
184
|
+
aws_tag_key = "TagSpecification.#{idx}.Tag.#{tag_idx}.Key"
|
185
|
+
aws_tag_value = "TagSpecification.#{idx}.Tag.#{tag_idx}.Value"
|
186
|
+
options[aws_tag_key] = tag["Key"]
|
187
|
+
options[aws_tag_value] = tag["Value"]
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
136
191
|
|
137
192
|
idempotent = !(options['ClientToken'].nil? || options['ClientToken'].empty?)
|
138
193
|
|
@@ -182,6 +237,14 @@ module Fog
|
|
182
237
|
}
|
183
238
|
end
|
184
239
|
|
240
|
+
hibernation_options = (options['HibernationOptions'] || []).reduce([]) do |mapping, device|
|
241
|
+
configure = device.fetch("Configure", true)
|
242
|
+
|
243
|
+
mapping << {
|
244
|
+
"Configure" => configure,
|
245
|
+
}
|
246
|
+
end
|
247
|
+
|
185
248
|
if options['SubnetId']
|
186
249
|
if options['PrivateIpAddress']
|
187
250
|
ni_options = {'PrivateIpAddress' => options['PrivateIpAddress']}
|
@@ -221,6 +284,7 @@ module Fog
|
|
221
284
|
'associatePublicIP' => options['associatePublicIP'] || false,
|
222
285
|
'architecture' => 'i386',
|
223
286
|
'blockDeviceMapping' => block_device_mapping,
|
287
|
+
'hibernationOptions' => hibernation_options,
|
224
288
|
'networkInterfaces' => network_interfaces,
|
225
289
|
'clientToken' => options['clientToken'],
|
226
290
|
'dnsName' => nil,
|
@@ -16,9 +16,17 @@ module Fog
|
|
16
16
|
# * TODO: fill in the blanks
|
17
17
|
#
|
18
18
|
# {Amazon API Reference}[http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference-query-StopInstances.html]
|
19
|
-
def stop_instances(instance_id,
|
19
|
+
def stop_instances(instance_id, options = {})
|
20
20
|
params = Fog::AWS.indexed_param('InstanceId', instance_id)
|
21
|
-
|
21
|
+
unless options.is_a?(Hash)
|
22
|
+
Fog::Logger.warning("stop_instances with #{options.class} param is deprecated, use stop_instances('force' => boolean) instead [light_black](#{caller.first})[/]")
|
23
|
+
options = {'force' => options}
|
24
|
+
end
|
25
|
+
params.merge!('Force' => 'true') if options['force']
|
26
|
+
if options['hibernate']
|
27
|
+
params.merge!('Hibernate' => 'true')
|
28
|
+
params.merge!('Force' => 'false')
|
29
|
+
end
|
22
30
|
request({
|
23
31
|
'Action' => 'StopInstances',
|
24
32
|
:idempotent => true,
|
@@ -28,7 +36,7 @@ module Fog
|
|
28
36
|
end
|
29
37
|
|
30
38
|
class Mock
|
31
|
-
def stop_instances(instance_id,
|
39
|
+
def stop_instances(instance_id, options = {})
|
32
40
|
instance_ids = Array(instance_id)
|
33
41
|
|
34
42
|
instance_set = self.data[:instances].values
|
@@ -1,139 +1,6 @@
|
|
1
1
|
module Fog
|
2
2
|
module AWS
|
3
3
|
class DNS
|
4
|
-
|
5
|
-
def self.hosted_zone_for_alias_target(dns_name)
|
6
|
-
hosted_zones = if dns_name.match(/^dualstack\./)
|
7
|
-
elb_dualstack_hosted_zone_mapping
|
8
|
-
else
|
9
|
-
elb_hosted_zone_mapping
|
10
|
-
end
|
11
|
-
|
12
|
-
Hash[hosted_zones.select { |k, _|
|
13
|
-
dns_name =~ /\A.+\.#{k}\.elb\.amazonaws\.com\.?\z/
|
14
|
-
}].values.last
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.elb_hosted_zone_mapping
|
18
|
-
@elb_hosted_zone_mapping ||= {
|
19
|
-
"ap-northeast-1" => "Z2YN17T5R711GT",
|
20
|
-
"ap-southeast-1" => "Z1WI8VXHPB1R38",
|
21
|
-
"ap-southeast-2" => "Z2999QAZ9SRTIC",
|
22
|
-
"eu-west-1" => "Z3NF1Z3NOM5OY2",
|
23
|
-
"eu-central-1" => "Z215JYRZR1TBD5",
|
24
|
-
"sa-east-1" => "Z2ES78Y61JGQKS",
|
25
|
-
"us-east-1" => "Z3DZXE0Q79N41H",
|
26
|
-
"us-west-1" => "Z1M58G0W56PQJA",
|
27
|
-
"us-west-2" => "Z33MTJ483KN6FU",
|
28
|
-
}
|
29
|
-
end
|
30
|
-
|
31
|
-
# See https://docs.aws.amazon.com/general/latest/gr/rande.html#elb_region
|
32
|
-
# This needs to be kept in sync manually sadly for now as seemingly this data is not available via an API
|
33
|
-
def self.elb_dualstack_hosted_zone_mapping
|
34
|
-
@elb_dualstack_hosted_zone_mapping ||= {
|
35
|
-
"ap-northeast-1" => "Z14GRHDCWA56QT",
|
36
|
-
"ap-northeast-2" => "ZWKZPGTI48KDX",
|
37
|
-
"ap-northeast-3" => "Z5LXEXXYW11ES",
|
38
|
-
"ap-south-1" => "ZP97RAFLXTNZK",
|
39
|
-
"ap-southeast-1" => "Z1LMS91P8CMLE5",
|
40
|
-
"ap-southeast-2" => "Z1GM3OXH4ZPM65",
|
41
|
-
"ca-central-1" => "ZQSVJUPU6J1EY",
|
42
|
-
"eu-central-1" => "Z215JYRZR1TBD5",
|
43
|
-
"eu-west-1" => "Z32O12XQLNTSW2",
|
44
|
-
"eu-west-2" => "ZHURV8PSTC4K8",
|
45
|
-
"eu-west-3" => "Z3Q77PNBQS71R4",
|
46
|
-
"us-east-1" => "Z35SXDOTRQ7X7K",
|
47
|
-
"us-east-2" => "Z3AADJGX6KTTL2",
|
48
|
-
"us-west-1" => "Z368ELLRRE2KJ0",
|
49
|
-
"us-west-2" => "Z1H1FL5HABSF5",
|
50
|
-
"sa-east-1" => "Z2P70J7HTTTPLU",
|
51
|
-
}
|
52
|
-
end
|
53
|
-
|
54
|
-
# Returns the xml request for a given changeset
|
55
|
-
def self.change_resource_record_sets_data(zone_id, change_batch, version, options = {})
|
56
|
-
# AWS methods return zone_ids that looks like '/hostedzone/id'. Let the caller either use
|
57
|
-
# that form or just the actual id (which is what this request needs)
|
58
|
-
zone_id = zone_id.sub('/hostedzone/', '')
|
59
|
-
|
60
|
-
optional_tags = ''
|
61
|
-
options.each do |option, value|
|
62
|
-
case option
|
63
|
-
when :comment
|
64
|
-
optional_tags += "<Comment>#{value}</Comment>"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
#build XML
|
69
|
-
if change_batch.count > 0
|
70
|
-
|
71
|
-
changes = "<ChangeBatch>#{optional_tags}<Changes>"
|
72
|
-
|
73
|
-
change_batch.each do |change_item|
|
74
|
-
action_tag = %Q{<Action>#{change_item[:action]}</Action>}
|
75
|
-
name_tag = %Q{<Name>#{change_item[:name]}</Name>}
|
76
|
-
type_tag = %Q{<Type>#{change_item[:type]}</Type>}
|
77
|
-
|
78
|
-
# TTL must be omitted if using an alias record
|
79
|
-
ttl_tag = ''
|
80
|
-
ttl_tag += %Q{<TTL>#{change_item[:ttl]}</TTL>} unless change_item[:alias_target]
|
81
|
-
|
82
|
-
weight_tag = ''
|
83
|
-
set_identifier_tag = ''
|
84
|
-
region_tag = ''
|
85
|
-
if change_item[:set_identifier]
|
86
|
-
set_identifier_tag += %Q{<SetIdentifier>#{change_item[:set_identifier]}</SetIdentifier>}
|
87
|
-
if change_item[:weight] # Weighted Record
|
88
|
-
weight_tag += %Q{<Weight>#{change_item[:weight]}</Weight>}
|
89
|
-
elsif change_item[:region] # Latency record
|
90
|
-
region_tag += %Q{<Region>#{change_item[:region]}</Region>}
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
failover_tag = if change_item[:failover]
|
95
|
-
%Q{<Failover>#{change_item[:failover]}</Failover>}
|
96
|
-
end
|
97
|
-
|
98
|
-
geolocation_tag = if change_item[:geo_location]
|
99
|
-
xml_geo = change_item[:geo_location].map { |k,v| "<#{k}>#{v}</#{k}>" }.join
|
100
|
-
%Q{<GeoLocation>#{xml_geo}</GeoLocation>}
|
101
|
-
end
|
102
|
-
|
103
|
-
resource_records = change_item[:resource_records] || []
|
104
|
-
resource_record_tags = ''
|
105
|
-
resource_records.each do |record|
|
106
|
-
resource_record_tags += %Q{<ResourceRecord><Value>#{record}</Value></ResourceRecord>}
|
107
|
-
end
|
108
|
-
|
109
|
-
# ResourceRecords must be omitted if using an alias record
|
110
|
-
resource_tag = ''
|
111
|
-
resource_tag += %Q{<ResourceRecords>#{resource_record_tags}</ResourceRecords>} if resource_records.any?
|
112
|
-
|
113
|
-
alias_target_tag = ''
|
114
|
-
if change_item[:alias_target]
|
115
|
-
# Accept either underscore or camel case for hash keys.
|
116
|
-
dns_name = change_item[:alias_target][:dns_name] || change_item[:alias_target][:DNSName]
|
117
|
-
hosted_zone_id = change_item[:alias_target][:hosted_zone_id] || change_item[:alias_target][:HostedZoneId] || AWS.hosted_zone_for_alias_target(dns_name)
|
118
|
-
evaluate_target_health = change_item[:alias_target][:evaluate_target_health] || change_item[:alias_target][:EvaluateTargetHealth] || false
|
119
|
-
evaluate_target_health_xml = !evaluate_target_health.nil? ? %Q{<EvaluateTargetHealth>#{evaluate_target_health}</EvaluateTargetHealth>} : ''
|
120
|
-
alias_target_tag += %Q{<AliasTarget><HostedZoneId>#{hosted_zone_id}</HostedZoneId><DNSName>#{dns_name}</DNSName>#{evaluate_target_health_xml}</AliasTarget>}
|
121
|
-
end
|
122
|
-
|
123
|
-
health_check_id_tag = if change_item[:health_check_id]
|
124
|
-
%Q{<HealthCheckId>#{change_item[:health_check_id]}</HealthCheckId>}
|
125
|
-
end
|
126
|
-
|
127
|
-
change_tags = %Q{<Change>#{action_tag}<ResourceRecordSet>#{name_tag}#{type_tag}#{set_identifier_tag}#{weight_tag}#{region_tag}#{failover_tag}#{geolocation_tag}#{ttl_tag}#{resource_tag}#{alias_target_tag}#{health_check_id_tag}</ResourceRecordSet></Change>}
|
128
|
-
changes += change_tags
|
129
|
-
end
|
130
|
-
|
131
|
-
changes += '</Changes></ChangeBatch>'
|
132
|
-
end
|
133
|
-
|
134
|
-
%Q{<?xml version="1.0" encoding="UTF-8"?><ChangeResourceRecordSetsRequest xmlns="https://route53.amazonaws.com/doc/#{version}/">#{changes}</ChangeResourceRecordSetsRequest>}
|
135
|
-
end
|
136
|
-
|
137
4
|
class Real
|
138
5
|
require 'fog/aws/parsers/dns/change_resource_record_sets'
|
139
6
|
|
@@ -13,7 +13,7 @@ module Fog
|
|
13
13
|
# ==== Returns
|
14
14
|
# * response<~Excon::Response>:
|
15
15
|
# * body<~Hash>:
|
16
|
-
# * 'TaskDefinitionArns' <~Array> - list of task definition Amazon Resource Name (ARN) entries for the
|
16
|
+
# * 'TaskDefinitionArns' <~Array> - list of task definition Amazon Resource Name (ARN) entries for the ListTaskDefinitions request.
|
17
17
|
# * 'NextToken' <~String> - nextToken value to include in a future ListTaskDefinitions request
|
18
18
|
def list_task_definitions(params={})
|
19
19
|
request({
|
@@ -23,7 +23,7 @@ module Fog
|
|
23
23
|
:method => 'POST',
|
24
24
|
:expects => 201,
|
25
25
|
'CreationToken' => creation_token,
|
26
|
-
'PerformanceMode' => options[:
|
26
|
+
'PerformanceMode' => options[:performance_mode] || 'generalPurpose',
|
27
27
|
'Encrypted' => options[:encrypted] || false
|
28
28
|
}
|
29
29
|
params[:kms_key_id] = options[:kms_key_id] if options.key?(:kms_key_id)
|
@@ -34,7 +34,7 @@ module Fog
|
|
34
34
|
if sec_group = self.data[:security_groups][name]
|
35
35
|
|
36
36
|
if sec_group['EC2SecurityGroups'].find{|h| h['EC2SecurityGroupName'] == opts['EC2SecurityGroupName']}
|
37
|
-
raise Fog::AWS::Elasticache::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['EC2SecurityGroupName']} is
|
37
|
+
raise Fog::AWS::Elasticache::AuthorizationAlreadyExists.new("AuthorizationAlreadyExists => #{opts['EC2SecurityGroupName']} is already defined")
|
38
38
|
end
|
39
39
|
sec_group['EC2SecurityGroups'] << opts.merge({'Status' => 'authorizing'})
|
40
40
|
|
@@ -19,7 +19,7 @@ module Fog
|
|
19
19
|
# * :engine_version <~String> - The Cluster's caching software version
|
20
20
|
# * :notification_topic_arn <~String> - Amazon SNS Resource Name
|
21
21
|
# * :port <~Integer> - The memcached port number
|
22
|
-
# * :
|
22
|
+
# * :preferred_availability_zone <~String>
|
23
23
|
# * :preferred_maintenance_window <~String>
|
24
24
|
# * :cache_subnet_group_name <~String>
|
25
25
|
# * :s3_snapshot_location <~String> - Amazon resource location for snapshot
|
@@ -39,7 +39,7 @@ module Fog
|
|
39
39
|
'EngineVersion' => options[:engine_version],
|
40
40
|
'NotificationTopicArn' => options[:notification_topic_arn],
|
41
41
|
'Port' => options[:port],
|
42
|
-
'PreferredAvailabilityZone' => options[:
|
42
|
+
'PreferredAvailabilityZone' => options[:preferred_availability_zone],
|
43
43
|
'PreferredMaintenanceWindow' => options[:preferred_maintenance_window],
|
44
44
|
:parser => Fog::Parsers::AWS::Elasticache::SingleCacheCluster.new
|
45
45
|
}
|