aws-sdk-euca 1.8.5
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/.yardopts +5 -0
- data/LICENSE.txt +12 -0
- data/README.rdoc +189 -0
- data/ca-bundle.crt +3895 -0
- data/lib/aws-sdk-euca.rb +79 -0
- data/lib/aws-sdk.rb +79 -0
- data/lib/aws.rb +14 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +825 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +322 -0
- data/lib/aws/api_config/CloudFront-2012-05-05.yml +2102 -0
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
- data/lib/aws/api_config/CloudWatch-2010-08-01.yml +433 -0
- data/lib/aws/api_config/DataPipeline-2012-10-29.yml +422 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1160 -0
- data/lib/aws/api_config/EC2-2013-02-01.yml +4368 -0
- data/lib/aws/api_config/ELB-2012-06-01.yml +597 -0
- data/lib/aws/api_config/EMR-2009-03-31.yml +370 -0
- data/lib/aws/api_config/ElastiCache-2012-03-09.yml +777 -0
- data/lib/aws/api_config/ElastiCache-2012-11-15.yml +979 -0
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +823 -0
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +1036 -0
- data/lib/aws/api_config/Glacier-2012-06-01.yml +618 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1222 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +1463 -0
- data/lib/aws/api_config/RDS-2012-09-17.yml +1861 -0
- data/lib/aws/api_config/RDS-2013-02-12.yml +2377 -0
- data/lib/aws/api_config/Redshift-2012-12-01.yml +1149 -0
- data/lib/aws/api_config/Route53-2012-02-29.yml +380 -0
- data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +249 -0
- data/lib/aws/api_config/SQS-2012-11-05.yml +317 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +81 -0
- data/lib/aws/api_config/SimpleDB-2009-04-15.yml +306 -0
- data/lib/aws/api_config/SimpleEmailService-2010-12-01.yml +346 -0
- data/lib/aws/api_config/SimpleWorkflow-2012-01-25.yml +2358 -0
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/auto_scaling.rb +164 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +82 -0
- data/lib/aws/auto_scaling/client.rb +521 -0
- data/lib/aws/auto_scaling/config.rb +18 -0
- data/lib/aws/auto_scaling/errors.rb +22 -0
- data/lib/aws/auto_scaling/group.rb +420 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +146 -0
- data/lib/aws/auto_scaling/instance.rb +192 -0
- data/lib/aws/auto_scaling/instance_collection.rb +63 -0
- data/lib/aws/auto_scaling/launch_configuration.rb +158 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +154 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +184 -0
- data/lib/aws/auto_scaling/request.rb +29 -0
- data/lib/aws/auto_scaling/scaling_policy.rb +142 -0
- data/lib/aws/auto_scaling/scaling_policy_collection.rb +72 -0
- data/lib/aws/auto_scaling/scaling_policy_options.rb +64 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +145 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +195 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +112 -0
- data/lib/aws/cloud_formation.rb +272 -0
- data/lib/aws/cloud_formation/client.rb +369 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/request.rb +29 -0
- data/lib/aws/cloud_formation/stack.rb +255 -0
- data/lib/aws/cloud_formation/stack_collection.rb +209 -0
- data/lib/aws/cloud_formation/stack_event.rb +75 -0
- data/lib/aws/cloud_formation/stack_event_collection.rb +47 -0
- data/lib/aws/cloud_formation/stack_options.rb +72 -0
- data/lib/aws/cloud_formation/stack_output.rb +53 -0
- data/lib/aws/cloud_formation/stack_resource.rb +117 -0
- data/lib/aws/cloud_formation/stack_resource_collection.rb +84 -0
- data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +64 -0
- data/lib/aws/cloud_formation/stack_summary_collection.rb +123 -0
- data/lib/aws/cloud_front.rb +73 -0
- data/lib/aws/cloud_front/client.rb +1307 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_front/request.rb +44 -0
- data/lib/aws/cloud_search.rb +74 -0
- data/lib/aws/cloud_search/client.rb +558 -0
- data/lib/aws/cloud_search/config.rb +18 -0
- data/lib/aws/cloud_search/errors.rb +22 -0
- data/lib/aws/cloud_search/request.rb +23 -0
- data/lib/aws/cloud_watch.rb +119 -0
- data/lib/aws/cloud_watch/alarm.rb +272 -0
- data/lib/aws/cloud_watch/alarm_collection.rb +153 -0
- data/lib/aws/cloud_watch/alarm_history_item.rb +50 -0
- data/lib/aws/cloud_watch/alarm_history_item_collection.rb +84 -0
- data/lib/aws/cloud_watch/client.rb +247 -0
- data/lib/aws/cloud_watch/config.rb +18 -0
- data/lib/aws/cloud_watch/errors.rb +22 -0
- data/lib/aws/cloud_watch/metric.rb +135 -0
- data/lib/aws/cloud_watch/metric_alarm_collection.rb +160 -0
- data/lib/aws/cloud_watch/metric_collection.rb +131 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/cloud_watch/request.rb +23 -0
- data/lib/aws/core.rb +587 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/autoloader.rb +64 -0
- data/lib/aws/core/cacheable.rb +78 -0
- data/lib/aws/core/client.rb +691 -0
- data/lib/aws/core/collection.rb +267 -0
- data/lib/aws/core/collection/simple.rb +82 -0
- data/lib/aws/core/collection/with_limit_and_next_token.rb +71 -0
- data/lib/aws/core/collection/with_next_token.rb +97 -0
- data/lib/aws/core/configuration.rb +546 -0
- data/lib/aws/core/credential_providers.rb +461 -0
- data/lib/aws/core/data.rb +247 -0
- data/lib/aws/core/http/curb_handler.rb +155 -0
- data/lib/aws/core/http/handler.rb +89 -0
- data/lib/aws/core/http/net_http_handler.rb +128 -0
- data/lib/aws/core/http/request.rb +263 -0
- data/lib/aws/core/http/response.rb +81 -0
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +56 -0
- data/lib/aws/core/json_client.rb +47 -0
- data/lib/aws/core/json_parser.rb +76 -0
- data/lib/aws/core/json_request_builder.rb +35 -0
- data/lib/aws/core/json_response_parser.rb +79 -0
- data/lib/aws/core/lazy_error_classes.rb +90 -0
- data/lib/aws/core/log_formatter.rb +462 -0
- data/lib/aws/core/managed_file.rb +32 -0
- data/lib/aws/core/meta_utils.rb +45 -0
- data/lib/aws/core/model.rb +57 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +735 -0
- data/lib/aws/core/options/json_serializer.rb +82 -0
- data/lib/aws/core/options/validator.rb +155 -0
- data/lib/aws/core/options/xml_serializer.rb +118 -0
- data/lib/aws/core/page_result.rb +75 -0
- data/lib/aws/core/policy.rb +916 -0
- data/lib/aws/core/query_client.rb +41 -0
- data/lib/aws/core/query_error_parser.rb +24 -0
- data/lib/aws/core/query_request_builder.rb +47 -0
- data/lib/aws/core/query_response_parser.rb +35 -0
- data/lib/aws/core/resource.rb +413 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +208 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/rest_error_parser.rb +24 -0
- data/lib/aws/core/rest_json_client.rb +40 -0
- data/lib/aws/core/rest_request_builder.rb +146 -0
- data/lib/aws/core/rest_response_parser.rb +66 -0
- data/lib/aws/core/rest_xml_client.rb +47 -0
- data/lib/aws/core/service_interface.rb +61 -0
- data/lib/aws/core/signature/version_2.rb +56 -0
- data/lib/aws/core/signature/version_3.rb +77 -0
- data/lib/aws/core/signature/version_3_https.rb +54 -0
- data/lib/aws/core/signature/version_4.rb +135 -0
- data/lib/aws/core/signer.rb +46 -0
- data/lib/aws/core/uri_escape.rb +44 -0
- data/lib/aws/core/xml/frame.rb +244 -0
- data/lib/aws/core/xml/frame_stack.rb +85 -0
- data/lib/aws/core/xml/grammar.rb +307 -0
- data/lib/aws/core/xml/parser.rb +70 -0
- data/lib/aws/core/xml/root_frame.rb +65 -0
- data/lib/aws/core/xml/sax_handlers/libxml.rb +47 -0
- data/lib/aws/core/xml/sax_handlers/nokogiri.rb +55 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +43 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/data_pipeline.rb +73 -0
- data/lib/aws/data_pipeline/client.rb +339 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/data_pipeline/request.rb +26 -0
- data/lib/aws/dynamo_db.rb +206 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +461 -0
- data/lib/aws/dynamo_db/batch_get.rb +213 -0
- data/lib/aws/dynamo_db/batch_write.rb +252 -0
- data/lib/aws/dynamo_db/binary.rb +35 -0
- data/lib/aws/dynamo_db/client.rb +904 -0
- data/lib/aws/dynamo_db/config.rb +24 -0
- data/lib/aws/dynamo_db/errors.rb +20 -0
- data/lib/aws/dynamo_db/expectations.rb +40 -0
- data/lib/aws/dynamo_db/item.rb +133 -0
- data/lib/aws/dynamo_db/item_collection.rb +852 -0
- data/lib/aws/dynamo_db/item_data.rb +31 -0
- data/lib/aws/dynamo_db/keys.rb +41 -0
- data/lib/aws/dynamo_db/primary_key_element.rb +48 -0
- data/lib/aws/dynamo_db/request.rb +26 -0
- data/lib/aws/dynamo_db/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +491 -0
- data/lib/aws/dynamo_db/table_collection.rb +165 -0
- data/lib/aws/dynamo_db/types.rb +111 -0
- data/lib/aws/ec2.rb +440 -0
- data/lib/aws/ec2/attachment.rb +140 -0
- data/lib/aws/ec2/attachment_collection.rb +54 -0
- data/lib/aws/ec2/availability_zone.rb +86 -0
- data/lib/aws/ec2/availability_zone_collection.rb +43 -0
- data/lib/aws/ec2/block_device_mappings.rb +53 -0
- data/lib/aws/ec2/client.rb +3621 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +18 -0
- data/lib/aws/ec2/config_transform.rb +63 -0
- data/lib/aws/ec2/customer_gateway.rb +90 -0
- data/lib/aws/ec2/customer_gateway_collection.rb +73 -0
- data/lib/aws/ec2/dhcp_options.rb +106 -0
- data/lib/aws/ec2/dhcp_options_collection.rb +87 -0
- data/lib/aws/ec2/elastic_ip.rb +208 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +97 -0
- data/lib/aws/ec2/errors.rb +32 -0
- data/lib/aws/ec2/export_task.rb +120 -0
- data/lib/aws/ec2/export_task_collection.rb +67 -0
- data/lib/aws/ec2/filtered_collection.rb +89 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +264 -0
- data/lib/aws/ec2/image_collection.rb +228 -0
- data/lib/aws/ec2/instance.rb +796 -0
- data/lib/aws/ec2/instance_collection.rb +372 -0
- data/lib/aws/ec2/internet_gateway.rb +122 -0
- data/lib/aws/ec2/internet_gateway/attachment.rb +78 -0
- data/lib/aws/ec2/internet_gateway_collection.rb +54 -0
- data/lib/aws/ec2/key_pair.rb +82 -0
- data/lib/aws/ec2/key_pair_collection.rb +99 -0
- data/lib/aws/ec2/network_acl.rb +256 -0
- data/lib/aws/ec2/network_acl/association.rb +56 -0
- data/lib/aws/ec2/network_acl/entry.rb +147 -0
- data/lib/aws/ec2/network_acl_collection.rb +64 -0
- data/lib/aws/ec2/network_interface.rb +228 -0
- data/lib/aws/ec2/network_interface/attachment.rb +100 -0
- data/lib/aws/ec2/network_interface_collection.rb +103 -0
- data/lib/aws/ec2/permission_collection.rb +174 -0
- data/lib/aws/ec2/region.rb +106 -0
- data/lib/aws/ec2/region_collection.rb +51 -0
- data/lib/aws/ec2/request.rb +21 -0
- data/lib/aws/ec2/reserved_instances.rb +56 -0
- data/lib/aws/ec2/reserved_instances_collection.rb +40 -0
- data/lib/aws/ec2/reserved_instances_offering.rb +60 -0
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +39 -0
- data/lib/aws/ec2/resource.rb +161 -0
- data/lib/aws/ec2/resource_tag_collection.rb +211 -0
- data/lib/aws/ec2/route_table.rb +205 -0
- data/lib/aws/ec2/route_table/association.rb +119 -0
- data/lib/aws/ec2/route_table/route.rb +119 -0
- data/lib/aws/ec2/route_table_collection.rb +72 -0
- data/lib/aws/ec2/security_group.rb +484 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +135 -0
- data/lib/aws/ec2/security_group/ip_permission_collection.rb +82 -0
- data/lib/aws/ec2/security_group_collection.rb +135 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +132 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +115 -0
- data/lib/aws/ec2/tag.rb +81 -0
- data/lib/aws/ec2/tag_collection.rb +107 -0
- data/lib/aws/ec2/tagged_collection.rb +53 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +174 -0
- data/lib/aws/ec2/volume_collection.rb +101 -0
- data/lib/aws/ec2/vpc.rb +166 -0
- data/lib/aws/ec2/vpc_collection.rb +70 -0
- data/lib/aws/ec2/vpn_connection.rb +99 -0
- data/lib/aws/ec2/vpn_connection/telemetry.rb +49 -0
- data/lib/aws/ec2/vpn_connection_collection.rb +96 -0
- data/lib/aws/ec2/vpn_gateway.rb +123 -0
- data/lib/aws/ec2/vpn_gateway/attachment.rb +45 -0
- data/lib/aws/ec2/vpn_gateway_collection.rb +77 -0
- data/lib/aws/elastic_beanstalk.rb +50 -0
- data/lib/aws/elastic_beanstalk/client.rb +867 -0
- data/lib/aws/elastic_beanstalk/config.rb +18 -0
- data/lib/aws/elastic_beanstalk/errors.rb +22 -0
- data/lib/aws/elastic_beanstalk/request.rb +29 -0
- data/lib/aws/elastic_transcoder.rb +30 -0
- data/lib/aws/elastic_transcoder/client.rb +672 -0
- data/lib/aws/elastic_transcoder/config.rb +18 -0
- data/lib/aws/elastic_transcoder/errors.rb +23 -0
- data/lib/aws/elastic_transcoder/request.rb +30 -0
- data/lib/aws/elasticache.rb +50 -0
- data/lib/aws/elasticache/client.rb +920 -0
- data/lib/aws/elasticache/config.rb +18 -0
- data/lib/aws/elasticache/errors.rb +22 -0
- data/lib/aws/elasticache/request.rb +23 -0
- data/lib/aws/elb.rb +67 -0
- data/lib/aws/elb/availability_zone_collection.rb +138 -0
- data/lib/aws/elb/backend_server_policy_collection.rb +139 -0
- data/lib/aws/elb/client.rb +500 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +173 -0
- data/lib/aws/elb/listener.rb +190 -0
- data/lib/aws/elb/listener_collection.rb +113 -0
- data/lib/aws/elb/listener_opts.rb +45 -0
- data/lib/aws/elb/load_balancer.rb +281 -0
- data/lib/aws/elb/load_balancer_collection.rb +134 -0
- data/lib/aws/elb/load_balancer_policy.rb +93 -0
- data/lib/aws/elb/load_balancer_policy_collection.rb +208 -0
- data/lib/aws/elb/request.rb +29 -0
- data/lib/aws/emr.rb +86 -0
- data/lib/aws/emr/client.rb +330 -0
- data/lib/aws/emr/config.rb +18 -0
- data/lib/aws/emr/errors.rb +22 -0
- data/lib/aws/emr/instance_group.rb +138 -0
- data/lib/aws/emr/instance_group_collection.rb +82 -0
- data/lib/aws/emr/job_flow.rb +306 -0
- data/lib/aws/emr/job_flow_collection.rb +185 -0
- data/lib/aws/emr/request.rb +23 -0
- data/lib/aws/errors.rb +162 -0
- data/lib/aws/glacier.rb +80 -0
- data/lib/aws/glacier/archive.rb +56 -0
- data/lib/aws/glacier/archive_collection.rb +146 -0
- data/lib/aws/glacier/client.rb +286 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -0
- data/lib/aws/glacier/request.rb +34 -0
- data/lib/aws/glacier/resource.rb +30 -0
- data/lib/aws/glacier/vault.rb +145 -0
- data/lib/aws/glacier/vault_collection.rb +75 -0
- data/lib/aws/glacier/vault_notification_configuration.rb +29 -0
- data/lib/aws/iam.rb +420 -0
- data/lib/aws/iam/access_key.rb +180 -0
- data/lib/aws/iam/access_key_collection.rb +128 -0
- data/lib/aws/iam/account_alias_collection.rb +79 -0
- data/lib/aws/iam/client.rb +1092 -0
- data/lib/aws/iam/collection.rb +83 -0
- data/lib/aws/iam/config.rb +18 -0
- data/lib/aws/iam/errors.rb +22 -0
- data/lib/aws/iam/group.rb +111 -0
- data/lib/aws/iam/group_collection.rb +132 -0
- data/lib/aws/iam/group_policy_collection.rb +47 -0
- data/lib/aws/iam/group_user_collection.rb +84 -0
- data/lib/aws/iam/login_profile.rb +99 -0
- data/lib/aws/iam/mfa_device.rb +52 -0
- data/lib/aws/iam/mfa_device_collection.rb +127 -0
- data/lib/aws/iam/policy.rb +46 -0
- data/lib/aws/iam/policy_collection.rb +188 -0
- data/lib/aws/iam/request.rb +29 -0
- data/lib/aws/iam/resource.rb +62 -0
- data/lib/aws/iam/server_certificate.rb +141 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +169 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +205 -0
- data/lib/aws/iam/user_collection.rb +133 -0
- data/lib/aws/iam/user_group_collection.rb +98 -0
- data/lib/aws/iam/user_policy.rb +90 -0
- data/lib/aws/iam/user_policy_collection.rb +45 -0
- data/lib/aws/iam/virtual_mfa_device.rb +139 -0
- data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
- data/lib/aws/import_export.rb +73 -0
- data/lib/aws/import_export/client.rb +109 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/import_export/request.rb +23 -0
- data/lib/aws/ops_works.rb +30 -0
- data/lib/aws/ops_works/client.rb +713 -0
- data/lib/aws/ops_works/config.rb +18 -0
- data/lib/aws/ops_works/errors.rb +20 -0
- data/lib/aws/ops_works/request.rb +27 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/rds.rb +71 -0
- data/lib/aws/rds/client.rb +2228 -0
- data/lib/aws/rds/config.rb +18 -0
- data/lib/aws/rds/db_instance.rb +205 -0
- data/lib/aws/rds/db_instance_collection.rb +75 -0
- data/lib/aws/rds/db_snapshot.rb +163 -0
- data/lib/aws/rds/db_snapshot_collection.rb +89 -0
- data/lib/aws/rds/errors.rb +22 -0
- data/lib/aws/rds/request.rb +23 -0
- data/lib/aws/record.rb +116 -0
- data/lib/aws/record/abstract_base.rb +701 -0
- data/lib/aws/record/attributes.rb +384 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +285 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +48 -0
- data/lib/aws/record/hash_model.rb +161 -0
- data/lib/aws/record/hash_model/attributes.rb +197 -0
- data/lib/aws/record/hash_model/finder_methods.rb +172 -0
- data/lib/aws/record/hash_model/scope.rb +108 -0
- data/lib/aws/record/model.rb +427 -0
- data/lib/aws/record/model/attributes.rb +379 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +213 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +199 -0
- data/lib/aws/record/validations.rb +712 -0
- data/lib/aws/record/validator.rb +246 -0
- data/lib/aws/record/validators/acceptance.rb +51 -0
- data/lib/aws/record/validators/block.rb +38 -0
- data/lib/aws/record/validators/confirmation.rb +43 -0
- data/lib/aws/record/validators/count.rb +108 -0
- data/lib/aws/record/validators/exclusion.rb +43 -0
- data/lib/aws/record/validators/format.rb +57 -0
- data/lib/aws/record/validators/inclusion.rb +56 -0
- data/lib/aws/record/validators/length.rb +107 -0
- data/lib/aws/record/validators/method.rb +33 -0
- data/lib/aws/record/validators/numericality.rb +138 -0
- data/lib/aws/record/validators/presence.rb +45 -0
- data/lib/aws/redshift.rb +52 -0
- data/lib/aws/redshift/client.rb +1291 -0
- data/lib/aws/redshift/config.rb +18 -0
- data/lib/aws/redshift/errors.rb +22 -0
- data/lib/aws/redshift/request.rb +29 -0
- data/lib/aws/route_53.rb +87 -0
- data/lib/aws/route_53/change_batch.rb +159 -0
- data/lib/aws/route_53/change_info.rb +72 -0
- data/lib/aws/route_53/client.rb +387 -0
- data/lib/aws/route_53/config.rb +18 -0
- data/lib/aws/route_53/errors.rb +22 -0
- data/lib/aws/route_53/hosted_zone.rb +111 -0
- data/lib/aws/route_53/hosted_zone_collection.rb +100 -0
- data/lib/aws/route_53/request.rb +23 -0
- data/lib/aws/route_53/resource_record_set.rb +237 -0
- data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
- data/lib/aws/s3.rb +155 -0
- data/lib/aws/s3/access_control_list.rb +257 -0
- data/lib/aws/s3/acl_object.rb +264 -0
- data/lib/aws/s3/acl_options.rb +204 -0
- data/lib/aws/s3/bucket.rb +742 -0
- data/lib/aws/s3/bucket_collection.rb +160 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +458 -0
- data/lib/aws/s3/bucket_tag_collection.rb +109 -0
- data/lib/aws/s3/bucket_version_collection.rb +77 -0
- data/lib/aws/s3/cipher_io.rb +119 -0
- data/lib/aws/s3/client.rb +1700 -0
- data/lib/aws/s3/client/xml.rb +231 -0
- data/lib/aws/s3/config.rb +36 -0
- data/lib/aws/s3/cors_rule.rb +106 -0
- data/lib/aws/s3/cors_rule_collection.rb +192 -0
- data/lib/aws/s3/data_options.rb +185 -0
- data/lib/aws/s3/encryption_utils.rb +139 -0
- data/lib/aws/s3/errors.rb +94 -0
- data/lib/aws/s3/multipart_upload.rb +320 -0
- data/lib/aws/s3/multipart_upload_collection.rb +68 -0
- data/lib/aws/s3/object_collection.rb +355 -0
- data/lib/aws/s3/object_metadata.rb +96 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +148 -0
- data/lib/aws/s3/object_version_collection.rb +89 -0
- data/lib/aws/s3/paginated_collection.rb +75 -0
- data/lib/aws/s3/policy.rb +74 -0
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +47 -0
- data/lib/aws/s3/prefixed_collection.rb +81 -0
- data/lib/aws/s3/presigned_post.rb +555 -0
- data/lib/aws/s3/request.rb +201 -0
- data/lib/aws/s3/s3_object.rb +1690 -0
- data/lib/aws/s3/tree.rb +118 -0
- data/lib/aws/s3/tree/branch_node.rb +68 -0
- data/lib/aws/s3/tree/child_collection.rb +104 -0
- data/lib/aws/s3/tree/leaf_node.rb +94 -0
- data/lib/aws/s3/tree/node.rb +22 -0
- data/lib/aws/s3/tree/parent.rb +87 -0
- data/lib/aws/s3/uploaded_part.rb +80 -0
- data/lib/aws/s3/uploaded_part_collection.rb +84 -0
- data/lib/aws/s3/website_configuration.rb +102 -0
- data/lib/aws/simple_db.rb +219 -0
- data/lib/aws/simple_db/attribute.rb +154 -0
- data/lib/aws/simple_db/attribute_collection.rb +231 -0
- data/lib/aws/simple_db/client.rb +287 -0
- data/lib/aws/simple_db/config.rb +20 -0
- data/lib/aws/simple_db/consistent_read_option.rb +42 -0
- data/lib/aws/simple_db/delete_attributes.rb +62 -0
- data/lib/aws/simple_db/domain.rb +121 -0
- data/lib/aws/simple_db/domain_collection.rb +86 -0
- data/lib/aws/simple_db/domain_metadata.rb +110 -0
- data/lib/aws/simple_db/errors.rb +55 -0
- data/lib/aws/simple_db/expect_condition_option.rb +45 -0
- data/lib/aws/simple_db/item.rb +93 -0
- data/lib/aws/simple_db/item_collection.rb +649 -0
- data/lib/aws/simple_db/item_data.rb +73 -0
- data/lib/aws/simple_db/put_attributes.rb +60 -0
- data/lib/aws/simple_db/request.rb +23 -0
- data/lib/aws/simple_email_service.rb +428 -0
- data/lib/aws/simple_email_service/client.rb +276 -0
- data/lib/aws/simple_email_service/config.rb +19 -0
- data/lib/aws/simple_email_service/email_address_collection.rb +69 -0
- data/lib/aws/simple_email_service/errors.rb +22 -0
- data/lib/aws/simple_email_service/identity.rb +209 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +64 -0
- data/lib/aws/simple_email_service/request.rb +27 -0
- data/lib/aws/simple_workflow.rb +228 -0
- data/lib/aws/simple_workflow/activity_task.rb +173 -0
- data/lib/aws/simple_workflow/activity_task_collection.rb +123 -0
- data/lib/aws/simple_workflow/activity_type.rb +131 -0
- data/lib/aws/simple_workflow/activity_type_collection.rb +93 -0
- data/lib/aws/simple_workflow/client.rb +1204 -0
- data/lib/aws/simple_workflow/config.rb +18 -0
- data/lib/aws/simple_workflow/count.rb +49 -0
- data/lib/aws/simple_workflow/decision_task.rb +603 -0
- data/lib/aws/simple_workflow/decision_task_collection.rb +225 -0
- data/lib/aws/simple_workflow/domain.rb +122 -0
- data/lib/aws/simple_workflow/domain_collection.rb +169 -0
- data/lib/aws/simple_workflow/errors.rb +20 -0
- data/lib/aws/simple_workflow/history_event.rb +276 -0
- data/lib/aws/simple_workflow/history_event_collection.rb +76 -0
- data/lib/aws/simple_workflow/option_formatters.rb +82 -0
- data/lib/aws/simple_workflow/request.rb +33 -0
- data/lib/aws/simple_workflow/resource.rb +94 -0
- data/lib/aws/simple_workflow/type.rb +89 -0
- data/lib/aws/simple_workflow/type_collection.rb +140 -0
- data/lib/aws/simple_workflow/workflow_execution.rb +386 -0
- data/lib/aws/simple_workflow/workflow_execution_collection.rb +617 -0
- data/lib/aws/simple_workflow/workflow_type.rb +177 -0
- data/lib/aws/simple_workflow/workflow_type_collection.rb +91 -0
- data/lib/aws/sns.rb +76 -0
- data/lib/aws/sns/client.rb +266 -0
- data/lib/aws/sns/config.rb +18 -0
- data/lib/aws/sns/errors.rb +22 -0
- data/lib/aws/sns/has_delivery_policy.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/request.rb +23 -0
- data/lib/aws/sns/subscription.rb +144 -0
- data/lib/aws/sns/subscription_collection.rb +78 -0
- data/lib/aws/sns/topic.rb +403 -0
- data/lib/aws/sns/topic_collection.rb +62 -0
- data/lib/aws/sns/topic_subscription_collection.rb +54 -0
- data/lib/aws/sqs.rb +81 -0
- data/lib/aws/sqs/client.rb +258 -0
- data/lib/aws/sqs/config.rb +18 -0
- data/lib/aws/sqs/errors.rb +101 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +764 -0
- data/lib/aws/sqs/queue_collection.rb +174 -0
- data/lib/aws/sqs/received_message.rb +181 -0
- data/lib/aws/sqs/received_sns_message.rb +116 -0
- data/lib/aws/sqs/request.rb +67 -0
- data/lib/aws/storage_gateway.rb +73 -0
- data/lib/aws/storage_gateway/client.rb +472 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/storage_gateway/request.rb +28 -0
- data/lib/aws/sts.rb +163 -0
- data/lib/aws/sts/client.rb +157 -0
- data/lib/aws/sts/config.rb +18 -0
- data/lib/aws/sts/errors.rb +22 -0
- data/lib/aws/sts/federated_session.rb +56 -0
- data/lib/aws/sts/policy.rb +30 -0
- data/lib/aws/sts/request.rb +29 -0
- data/lib/aws/sts/session.rb +48 -0
- data/lib/aws/version.rb +18 -0
- data/lib/net/http/connection_pool.rb +226 -0
- data/lib/net/http/connection_pool/connection.rb +189 -0
- data/lib/net/http/connection_pool/session.rb +126 -0
- data/rails/init.rb +15 -0
- metadata +632 -0
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
require 'base64'
|
|
15
|
+
require 'uuidtools'
|
|
16
|
+
|
|
17
|
+
module AWS
|
|
18
|
+
class EC2
|
|
19
|
+
|
|
20
|
+
##
|
|
21
|
+
# Represents a collection of EC2 instances. Typically you
|
|
22
|
+
# should get an instance of this class by calling
|
|
23
|
+
# {EC2#instances}.
|
|
24
|
+
#
|
|
25
|
+
# To run an instance:
|
|
26
|
+
#
|
|
27
|
+
# ec2.instances.create(:image_id => "ami-1b814f72")
|
|
28
|
+
#
|
|
29
|
+
# To get an instance by ID:
|
|
30
|
+
#
|
|
31
|
+
# i = ec2.instances["i-12345678"]
|
|
32
|
+
# i.exists?
|
|
33
|
+
#
|
|
34
|
+
# To get a map of instance IDs to instance status:
|
|
35
|
+
#
|
|
36
|
+
# ec2.instances.inject({}) { |m, i| m[i.id] = i.status; m }
|
|
37
|
+
# # => { "i-12345678" => :running, "i-87654321" => :shutting_down }
|
|
38
|
+
#
|
|
39
|
+
class InstanceCollection < Collection
|
|
40
|
+
|
|
41
|
+
include TaggedCollection
|
|
42
|
+
include BlockDeviceMappings
|
|
43
|
+
|
|
44
|
+
# Runs one or more EC2 instances.
|
|
45
|
+
#
|
|
46
|
+
# @example Running a single instance
|
|
47
|
+
# i = ec2.instances.create(:image_id => "ami-8c1fece5")
|
|
48
|
+
# sleep 10 while i.status == :pending
|
|
49
|
+
#
|
|
50
|
+
# @example Running multiple instances with the same parameters
|
|
51
|
+
#
|
|
52
|
+
# instances = ec2.instances.create(
|
|
53
|
+
# :image_id => "ami-8c1fece5",
|
|
54
|
+
# :count => 10)
|
|
55
|
+
#
|
|
56
|
+
# sleep 1 while instances.any? {|i| i.status == :pending }
|
|
57
|
+
#
|
|
58
|
+
# @example Specifying block device mappings
|
|
59
|
+
#
|
|
60
|
+
# ec2.instances.create({
|
|
61
|
+
# :image_id => "ami-8c1fece5",
|
|
62
|
+
# :block_device_mappings => {
|
|
63
|
+
# "/dev/sda2" => {
|
|
64
|
+
# :volume_size => 15, # 15 GiB
|
|
65
|
+
# :delete_on_termination => true
|
|
66
|
+
# }
|
|
67
|
+
# }
|
|
68
|
+
# })
|
|
69
|
+
#
|
|
70
|
+
# @example Launching in an Amazon VPC subnet
|
|
71
|
+
#
|
|
72
|
+
# ec2.instances.create(
|
|
73
|
+
# :image_id => "ami-8c1fece5",
|
|
74
|
+
# :subnet => "subnet-abc123ef")
|
|
75
|
+
#
|
|
76
|
+
# @param [Hash] options Options for new instance. +:image_id+ is
|
|
77
|
+
# the only required option.
|
|
78
|
+
#
|
|
79
|
+
# @option options [Integer] :count How many instances to request. By
|
|
80
|
+
# default one instance is requested. You can specify this
|
|
81
|
+
# either as an integer or as a Range, to indicate the
|
|
82
|
+
# minimum and maximum number of instances to run. Note that
|
|
83
|
+
# for a new account you can request at most 20 instances at
|
|
84
|
+
# once.
|
|
85
|
+
#
|
|
86
|
+
# @option options [String] :iam_instance_profile The name or
|
|
87
|
+
# ARN of an IAM instance profile. This provides credentials
|
|
88
|
+
# to the EC2 instance(s) via the instance metadata service.
|
|
89
|
+
#
|
|
90
|
+
# @option options [Hash] :block_device_mappings This must be a
|
|
91
|
+
# hash; the keys are device names to map, and the value for
|
|
92
|
+
# each entry determines how that device is mapped. Valid
|
|
93
|
+
# values include:
|
|
94
|
+
#
|
|
95
|
+
# * A string, which is interpreted as a virtual device name.
|
|
96
|
+
#
|
|
97
|
+
# * The symbol :no_device, which overrides the default
|
|
98
|
+
# mapping for a device so that it is not mapped to anything.
|
|
99
|
+
#
|
|
100
|
+
# * A hash with any of the following options. One of
|
|
101
|
+
# +:snapshot+, +:snapshot_id+ or +:volume_size+ is
|
|
102
|
+
# required.
|
|
103
|
+
#
|
|
104
|
+
# [:snapshot] A snapshot to use when creating the block
|
|
105
|
+
# device.
|
|
106
|
+
#
|
|
107
|
+
# [:snapshot_id] The ID of a snapshot to use when creating
|
|
108
|
+
# the block device.
|
|
109
|
+
#
|
|
110
|
+
# [:volume_size] The size of volume to create, in gigabytes.
|
|
111
|
+
#
|
|
112
|
+
# [:delete_on_termination] Setting this to true causes EC2
|
|
113
|
+
# to delete the volume when the
|
|
114
|
+
# instance is terminated.
|
|
115
|
+
#
|
|
116
|
+
# @option options [Boolean] :monitoring_enabled Setting this to
|
|
117
|
+
# +true+ enables CloudWatch monitoring on the instances once they
|
|
118
|
+
# are started.
|
|
119
|
+
#
|
|
120
|
+
# @option options [String] :availability_zone Specifies the
|
|
121
|
+
# availability zone where the instance should run. Without
|
|
122
|
+
# this option, EC2 will choose an availability zone for you.
|
|
123
|
+
#
|
|
124
|
+
# @option options [String] :image_id ID of the AMI you want to
|
|
125
|
+
# launch.
|
|
126
|
+
#
|
|
127
|
+
# @option options [String] :key_name The name of the key pair to
|
|
128
|
+
# use. Note: Launching public images without a key pair ID
|
|
129
|
+
# will leave them inaccessible.
|
|
130
|
+
#
|
|
131
|
+
# @option options [KeyPair] :key_pair A {KeyPair} that should
|
|
132
|
+
# be used when launching an instance.
|
|
133
|
+
#
|
|
134
|
+
# @option options [Array] :security_groups Security groups are used
|
|
135
|
+
# to determine network access rules for the instances.
|
|
136
|
+
# +:security_groups+ can be a single value or an array of values.
|
|
137
|
+
# Values should be group name strings or {SecurityGroup} objects.
|
|
138
|
+
#
|
|
139
|
+
# @option options [Array<String>] :security_group_ids Security groups
|
|
140
|
+
# are used to determine network access rules for the instances.
|
|
141
|
+
# +:security_group_ids+ accepts a single ID or an array of security
|
|
142
|
+
# group IDs.
|
|
143
|
+
#
|
|
144
|
+
# @option options [String] :user_data Arbitrary user data. You
|
|
145
|
+
# do not need to encode this value.
|
|
146
|
+
#
|
|
147
|
+
# @option options [String] :instance_type The type of instance to
|
|
148
|
+
# launch, for example "m1.small".
|
|
149
|
+
#
|
|
150
|
+
# @option options [String] :kernel_id The ID of the kernel with
|
|
151
|
+
# which to launch the instance.
|
|
152
|
+
#
|
|
153
|
+
# @option options [String] :ramdisk_id The ID of the RAM disk to
|
|
154
|
+
# select. Some kernels require additional drivers at
|
|
155
|
+
# launch. Check the kernel requirements for information on
|
|
156
|
+
# whether you need to specify a RAM disk. To find kernel
|
|
157
|
+
# requirements, refer to the Resource Center and search for
|
|
158
|
+
# the kernel ID.
|
|
159
|
+
#
|
|
160
|
+
# @option options [Boolean] :disable_api_termination Specifies
|
|
161
|
+
# whether you can terminate the instance using the EC2
|
|
162
|
+
# API. A value of true means you can't terminate the
|
|
163
|
+
# instance using the API (i.e., the instance is "locked"); a
|
|
164
|
+
# value of false means you can. If you set this to true, and
|
|
165
|
+
# you later want to terminate the instance, you must first
|
|
166
|
+
# enable API termination. For example:
|
|
167
|
+
#
|
|
168
|
+
# i = ec2.instances.create(:image_id => "ami-8c1fece5",
|
|
169
|
+
# :disable_api_termination => true)
|
|
170
|
+
# i.api_termination_disabled? # => true
|
|
171
|
+
# i.terminate # raises an exception
|
|
172
|
+
# i.api_termination_disabled = false
|
|
173
|
+
# i.terminate # terminates the instance
|
|
174
|
+
#
|
|
175
|
+
# @option options [String] :instance_initiated_shutdown_behavior
|
|
176
|
+
# Determines whether the instance stops or terminates on
|
|
177
|
+
# instance-initiated shutdown.
|
|
178
|
+
#
|
|
179
|
+
# @option options [Subnet,String] :subnet (nil) The VPC Subnet (or
|
|
180
|
+
# subnet id string) to launch the instance in.
|
|
181
|
+
#
|
|
182
|
+
# @option options [String] :private_ip_address (nil) If you're using VPC,
|
|
183
|
+
# you can optionally use this option to assign the instance a
|
|
184
|
+
# specific available IP address from the subnet (e.g., '10.0.0.25').
|
|
185
|
+
# This option is not valid for instances launched outside a VPC (i.e.
|
|
186
|
+
# those launched without the :subnet option).
|
|
187
|
+
#
|
|
188
|
+
# @option options [Boolean] :dedicated_tenancy (false) Instances
|
|
189
|
+
# with dedicated tenancy will not share physical hardware with
|
|
190
|
+
# instances outside their VPC. *NOTE:* Dedicated tenancy
|
|
191
|
+
# incurs an additional service charge. This option is not
|
|
192
|
+
# valid for instances launched outside a VPC (e.g. those
|
|
193
|
+
# launched without the :subnet option).
|
|
194
|
+
#
|
|
195
|
+
# @option options [Boolean] :ebs_optimized (false) EBS-Optimized instances
|
|
196
|
+
# enable Amazon EC2 instances to fully utilize the IOPS provisioned on
|
|
197
|
+
# an EBS volume. EBS-optimized instances deliver dedicated throughput
|
|
198
|
+
# between Amazon EC2 and Amazon EBS, with options between 500 Mbps and
|
|
199
|
+
# 1000 Mbps depending on the instance type used. When attached to
|
|
200
|
+
# EBS-Optimized instances, Provisioned IOPS volumes are designed
|
|
201
|
+
# to deliver within 10% of their provisioned performance 99.9% of the time.
|
|
202
|
+
# *NOTE:* EBS Optimized instances incur an additional service charge. This
|
|
203
|
+
# optional is only valid for certain instance types.
|
|
204
|
+
#
|
|
205
|
+
# @return [Instance or Array] If a single instance is being created,
|
|
206
|
+
# this returns an {EC2::Instance} to represent the newly
|
|
207
|
+
# created instance. Otherwise it returns an array of instance
|
|
208
|
+
# objects.
|
|
209
|
+
#
|
|
210
|
+
def create options = {}
|
|
211
|
+
|
|
212
|
+
if profile = options.delete(:iam_instance_profile)
|
|
213
|
+
profile = case profile
|
|
214
|
+
when /^arn:aws:iam::/ then { :arn => profile }
|
|
215
|
+
when String then { :name => profile }
|
|
216
|
+
when Hash then profile
|
|
217
|
+
else
|
|
218
|
+
msg = "expected a name or ARN string for :iam_instance_profile"
|
|
219
|
+
end
|
|
220
|
+
options[:iam_instance_profile] = profile
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
if image = options.delete(:image)
|
|
224
|
+
options[:image_id] = image.id
|
|
225
|
+
end
|
|
226
|
+
|
|
227
|
+
if kernel = options.delete(:kernel)
|
|
228
|
+
options[:kernel_id] = kernel.id
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
if ramdisk = options.delete(:ramdisk)
|
|
232
|
+
options[:ramdisk_id] = ramdisk.id
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
if key_pair = options.delete(:key_pair)
|
|
236
|
+
options[:key_name] = key_pair.name
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
options = count_options(options).merge(options)
|
|
240
|
+
options.delete(:count)
|
|
241
|
+
|
|
242
|
+
options[:user_data] = Base64.encode64(options[:user_data]).strip if
|
|
243
|
+
options[:user_data]
|
|
244
|
+
|
|
245
|
+
options[:block_device_mappings] =
|
|
246
|
+
translate_block_device_mappings(options[:block_device_mappings]) if
|
|
247
|
+
options[:block_device_mappings]
|
|
248
|
+
|
|
249
|
+
options[:monitoring] = { :enabled => true } if
|
|
250
|
+
options[:monitoring_enabled]
|
|
251
|
+
options.delete(:monitoring_enabled)
|
|
252
|
+
|
|
253
|
+
placement = {}
|
|
254
|
+
|
|
255
|
+
if options[:availability_zone]
|
|
256
|
+
placement[:availability_zone] = options[:availability_zone].to_s
|
|
257
|
+
options.delete(:availability_zone)
|
|
258
|
+
end
|
|
259
|
+
|
|
260
|
+
if options[:dedicated_tenancy]
|
|
261
|
+
placement[:tenancy] = 'dedicated'
|
|
262
|
+
options.delete(:dedicated_tenancy)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
options[:placement] = placement unless placement.empty?
|
|
266
|
+
|
|
267
|
+
if subnet_id = subnet_id_option(options)
|
|
268
|
+
options[:subnet_id] = subnet_id
|
|
269
|
+
end
|
|
270
|
+
|
|
271
|
+
security_group_opts(options)
|
|
272
|
+
|
|
273
|
+
options[:client_token] = UUIDTools::UUID.timestamp_create.to_s
|
|
274
|
+
|
|
275
|
+
resp = client.run_instances(options)
|
|
276
|
+
|
|
277
|
+
if options[:min_count] == options[:max_count] and
|
|
278
|
+
options[:min_count] == 1
|
|
279
|
+
self[resp.instances_set.first.instance_id]
|
|
280
|
+
else
|
|
281
|
+
resp[:instances_set].map {|i| self[i[:instance_id]] }
|
|
282
|
+
end
|
|
283
|
+
end
|
|
284
|
+
|
|
285
|
+
alias_method :run, :create
|
|
286
|
+
|
|
287
|
+
# @yield [Instance] Yields each instance in the collection.
|
|
288
|
+
def each(&block)
|
|
289
|
+
response = filtered_request(:describe_instances)
|
|
290
|
+
response.reservation_set.each do |reservation|
|
|
291
|
+
reservation.instances_set.each do |i|
|
|
292
|
+
yield(Instance.new(i.instance_id, :config => config))
|
|
293
|
+
end
|
|
294
|
+
end
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
# @return [Instance] Returns an object representing the EC2 instance
|
|
298
|
+
# with the given ID.
|
|
299
|
+
def [] id
|
|
300
|
+
super
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# @private
|
|
304
|
+
protected
|
|
305
|
+
def member_class
|
|
306
|
+
Instance
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
# @private
|
|
310
|
+
private
|
|
311
|
+
def count_options options
|
|
312
|
+
min = max = 1
|
|
313
|
+
count = options[:count]
|
|
314
|
+
case count
|
|
315
|
+
when Range
|
|
316
|
+
min = count.begin
|
|
317
|
+
max = (count.exclude_end? ? count.end - 1 : count.end)
|
|
318
|
+
when Integer
|
|
319
|
+
min = max = count
|
|
320
|
+
end
|
|
321
|
+
{ :min_count => min, :max_count => max }
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
# @private
|
|
325
|
+
private
|
|
326
|
+
def security_group_opts options
|
|
327
|
+
|
|
328
|
+
ids = []
|
|
329
|
+
names = []
|
|
330
|
+
|
|
331
|
+
Array(options.delete(:security_group_ids)).each do |g|
|
|
332
|
+
ids << g
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
# this may be security group objects or names
|
|
336
|
+
Array(options.delete(:security_groups)).each do |g|
|
|
337
|
+
case g
|
|
338
|
+
when String then names << g
|
|
339
|
+
when SecurityGroup then ids << g.id
|
|
340
|
+
else
|
|
341
|
+
raise ArgumentError, ':security_groups may only contain ' +
|
|
342
|
+
'security group names, ids or objects'
|
|
343
|
+
end
|
|
344
|
+
end
|
|
345
|
+
|
|
346
|
+
return if ids.empty? and names.empty?
|
|
347
|
+
|
|
348
|
+
if options[:subnet_id]
|
|
349
|
+
|
|
350
|
+
# vpc instances only accepts security group ids, so any group
|
|
351
|
+
# names must be converted to ids, which requires a service
|
|
352
|
+
# request
|
|
353
|
+
unless names.empty?
|
|
354
|
+
ec2 = EC2.new(:config => config)
|
|
355
|
+
groups = ec2.security_groups.filter('group-name', names)
|
|
356
|
+
ids += groups.collect{|g| g.id }
|
|
357
|
+
end
|
|
358
|
+
options[:security_group_ids] = ids
|
|
359
|
+
|
|
360
|
+
else
|
|
361
|
+
|
|
362
|
+
# non-vpc instances accept both group names and ids, so
|
|
363
|
+
# we accept whichever
|
|
364
|
+
options[:security_groups] = names unless names.empty?
|
|
365
|
+
options[:security_group_ids] = ids unless ids.empty?
|
|
366
|
+
|
|
367
|
+
end
|
|
368
|
+
end
|
|
369
|
+
|
|
370
|
+
end
|
|
371
|
+
end
|
|
372
|
+
end
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Copyright 2011-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
require 'aws/ec2/internet_gateway/attachment'
|
|
15
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
class EC2
|
|
18
|
+
|
|
19
|
+
class InternetGateway < Resource
|
|
20
|
+
|
|
21
|
+
include TaggedItem
|
|
22
|
+
|
|
23
|
+
def initialize internet_gateway_id, options = {}
|
|
24
|
+
@internet_gateway_id = internet_gateway_id
|
|
25
|
+
super
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [String]
|
|
29
|
+
attr_reader :internet_gateway_id
|
|
30
|
+
|
|
31
|
+
alias_method :id, :internet_gateway_id
|
|
32
|
+
|
|
33
|
+
attribute :vpc_id
|
|
34
|
+
|
|
35
|
+
attribute :attachment_set
|
|
36
|
+
|
|
37
|
+
protected :attachment_set
|
|
38
|
+
|
|
39
|
+
populates_from(:describe_internet_gateways) do |resp|
|
|
40
|
+
resp.internet_gateway_set.find do |gateway|
|
|
41
|
+
gateway.internet_gateway_id == internet_gateway_id
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# @return [Array<InternetGateway::Attachment>]
|
|
46
|
+
def attachments
|
|
47
|
+
attachment_set.map {|details| Attachment.new(self, details) }
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# @return [VPC,nil] Returns the currently attached VPC, or nil
|
|
51
|
+
# if this gateway has not been attached.
|
|
52
|
+
def vpc
|
|
53
|
+
if attachment = attachments.first
|
|
54
|
+
attachment.vpc
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
# Attaches this internet gateway to the given VPC. If this
|
|
59
|
+
# gateway is already attached to a different VPC, it will
|
|
60
|
+
# be detached from that one first. If you pass nil, then
|
|
61
|
+
# this internet gateway will
|
|
62
|
+
#
|
|
63
|
+
# internet_gateway.vpc = 'vpc-123'
|
|
64
|
+
#
|
|
65
|
+
# @param [VPC,String] vpc A {VPC} object or a vpc id string.
|
|
66
|
+
#
|
|
67
|
+
def vpc= vpc
|
|
68
|
+
if attachment = attachments.first
|
|
69
|
+
attachment.delete
|
|
70
|
+
end
|
|
71
|
+
attach(vpc) if vpc
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# Attaches this internet gateway to the given VPC.
|
|
75
|
+
# @param [VPC,String] vpc A {VPC} object or a vpc id string.
|
|
76
|
+
# @return [nil]
|
|
77
|
+
def attach vpc
|
|
78
|
+
client_opts = {}
|
|
79
|
+
client_opts[:internet_gateway_id] = internet_gateway_id
|
|
80
|
+
client_opts[:vpc_id] = vpc_id_option(vpc)
|
|
81
|
+
client.attach_internet_gateway(client_opts)
|
|
82
|
+
nil
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Detaches this internet gateway from the given VPC.
|
|
86
|
+
# @param [VPC,String] vpc A {VPC} object or a vpc id string.
|
|
87
|
+
# @return [nil]
|
|
88
|
+
def detach vpc
|
|
89
|
+
client_opts = {}
|
|
90
|
+
client_opts[:internet_gateway_id] = internet_gateway_id
|
|
91
|
+
client_opts[:vpc_id] = vpc_id_option(vpc)
|
|
92
|
+
client.detach_internet_gateway(client_opts)
|
|
93
|
+
nil
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Deletes this internet gateway.
|
|
97
|
+
# @return [nil]
|
|
98
|
+
def delete
|
|
99
|
+
client_opts = {}
|
|
100
|
+
client_opts[:internet_gateway_id] = internet_gateway_id
|
|
101
|
+
client.delete_internet_gateway(client_opts)
|
|
102
|
+
nil
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
# @return [Boolean] Returns true if the gateway exists.
|
|
106
|
+
def exists?
|
|
107
|
+
begin
|
|
108
|
+
get_resource
|
|
109
|
+
true
|
|
110
|
+
rescue Errors::InvalidInternetGatewayID::NotFound
|
|
111
|
+
false
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
protected
|
|
116
|
+
def vpc_id_option vpc
|
|
117
|
+
vpc.is_a?(VPC) ? vpc.vpc_id : vpc
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|