aws-sdk-v1 1.52.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 +7 -0
- data/.yardopts +7 -0
- data/LICENSE.txt +12 -0
- data/README.md +337 -0
- data/bin/aws-rb +179 -0
- data/ca-bundle.crt +3554 -0
- data/endpoints.json +1671 -0
- data/lib/aws-sdk-v1.rb +2 -0
- data/lib/aws-sdk.rb +1 -0
- data/lib/aws.rb +14 -0
- data/lib/aws/api_config/AutoScaling-2011-01-01.yml +1070 -0
- data/lib/aws/api_config/CloudFormation-2010-05-15.yml +372 -0
- data/lib/aws/api_config/CloudFront-2013-05-12.yml +2448 -0
- data/lib/aws/api_config/CloudFront-2013-08-26.yml +2599 -0
- data/lib/aws/api_config/CloudFront-2013-09-27.yml +2765 -0
- data/lib/aws/api_config/CloudFront-2013-11-11.yml +2886 -0
- data/lib/aws/api_config/CloudFront-2013-11-22.yml +2918 -0
- data/lib/aws/api_config/CloudFront-2014-01-31.yml +2934 -0
- data/lib/aws/api_config/CloudFront-2014-05-31.yml +3100 -0
- data/lib/aws/api_config/CloudSearch-2011-02-01.yml +681 -0
- data/lib/aws/api_config/CloudSearch-2013-01-01.yml +1164 -0
- data/lib/aws/api_config/CloudTrail-2013-11-01.yml +130 -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/DirectConnect-2012-10-25.yml +735 -0
- data/lib/aws/api_config/DynamoDB-2011-12-05.yml +1168 -0
- data/lib/aws/api_config/DynamoDB-2012-08-10.yml +2105 -0
- data/lib/aws/api_config/EC2-2013-08-15.yml +4708 -0
- data/lib/aws/api_config/EC2-2013-10-01.yml +4726 -0
- data/lib/aws/api_config/EC2-2013-10-15.yml +4651 -0
- data/lib/aws/api_config/EC2-2014-02-01.yml +4755 -0
- data/lib/aws/api_config/EC2-2014-05-01.yml +4812 -0
- data/lib/aws/api_config/ELB-2012-06-01.yml +766 -0
- data/lib/aws/api_config/EMR-2009-03-31.yml +972 -0
- data/lib/aws/api_config/ElastiCache-2013-06-15.yml +1188 -0
- data/lib/aws/api_config/ElastiCache-2014-03-24.yml +1375 -0
- data/lib/aws/api_config/ElastiCache-2014-07-15.yml +1385 -0
- data/lib/aws/api_config/ElasticBeanstalk-2010-12-01.yml +854 -0
- data/lib/aws/api_config/ElasticTranscoder-2012-09-25.yml +3082 -0
- data/lib/aws/api_config/Glacier-2012-06-01.yml +649 -0
- data/lib/aws/api_config/IAM-2010-05-08.yml +1339 -0
- data/lib/aws/api_config/ImportExport-2010-06-01.yml +109 -0
- data/lib/aws/api_config/Kinesis-2013-12-02.yml +201 -0
- data/lib/aws/api_config/OpsWorks-2013-02-18.yml +2025 -0
- data/lib/aws/api_config/RDS-2013-05-15.yml +2464 -0
- data/lib/aws/api_config/RDS-2013-09-09.yml +2640 -0
- data/lib/aws/api_config/Redshift-2012-12-01.yml +2161 -0
- data/lib/aws/api_config/Route53-2012-12-12.yml +547 -0
- data/lib/aws/api_config/Route53-2013-04-01.yml +889 -0
- data/lib/aws/api_config/SNS-2010-03-31.yml +448 -0
- data/lib/aws/api_config/SQS-2012-11-05.yml +404 -0
- data/lib/aws/api_config/STS-2011-06-15.yml +151 -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 +2388 -0
- data/lib/aws/api_config/StorageGateway-2012-06-30.yml +748 -0
- data/lib/aws/api_config/StorageGateway-2013-06-30.yml +1025 -0
- data/lib/aws/api_config/Support-2013-04-15.yml +489 -0
- data/lib/aws/auto_scaling.rb +163 -0
- data/lib/aws/auto_scaling/activity.rb +102 -0
- data/lib/aws/auto_scaling/activity_collection.rb +81 -0
- data/lib/aws/auto_scaling/client.rb +48 -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 +421 -0
- data/lib/aws/auto_scaling/group_collection.rb +96 -0
- data/lib/aws/auto_scaling/group_options.rb +155 -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 +162 -0
- data/lib/aws/auto_scaling/launch_configuration_collection.rb +160 -0
- data/lib/aws/auto_scaling/notification_configuration.rb +89 -0
- data/lib/aws/auto_scaling/notification_configuration_collection.rb +183 -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 +65 -0
- data/lib/aws/auto_scaling/scheduled_action.rb +141 -0
- data/lib/aws/auto_scaling/scheduled_action_collection.rb +202 -0
- data/lib/aws/auto_scaling/tag.rb +59 -0
- data/lib/aws/auto_scaling/tag_collection.rb +114 -0
- data/lib/aws/cloud_formation.rb +272 -0
- data/lib/aws/cloud_formation/client.rb +48 -0
- data/lib/aws/cloud_formation/config.rb +18 -0
- data/lib/aws/cloud_formation/errors.rb +22 -0
- data/lib/aws/cloud_formation/stack.rb +266 -0
- data/lib/aws/cloud_formation/stack_collection.rb +232 -0
- data/lib/aws/cloud_formation/stack_event.rb +73 -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 +83 -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 +72 -0
- data/lib/aws/cloud_front/client.rb +57 -0
- data/lib/aws/cloud_front/config.rb +18 -0
- data/lib/aws/cloud_front/errors.rb +22 -0
- data/lib/aws/cloud_search.rb +73 -0
- data/lib/aws/cloud_search/client.rb +40 -0
- data/lib/aws/cloud_search/config.rb +18 -0
- data/lib/aws/cloud_search/errors.rb +22 -0
- data/lib/aws/cloud_trail.rb +72 -0
- data/lib/aws/cloud_trail/client.rb +35 -0
- data/lib/aws/cloud_trail/config.rb +18 -0
- data/lib/aws/cloud_trail/errors.rb +22 -0
- data/lib/aws/cloud_watch.rb +118 -0
- data/lib/aws/cloud_watch/alarm.rb +293 -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 +40 -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 +129 -0
- data/lib/aws/cloud_watch/metric_statistics.rb +69 -0
- data/lib/aws/core.rb +716 -0
- data/lib/aws/core/async_handle.rb +90 -0
- data/lib/aws/core/cacheable.rb +77 -0
- data/lib/aws/core/client.rb +787 -0
- data/lib/aws/core/collection.rb +263 -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 +542 -0
- data/lib/aws/core/credential_providers.rb +639 -0
- data/lib/aws/core/data.rb +247 -0
- data/lib/aws/core/deprecations.rb +84 -0
- data/lib/aws/core/endpoints.rb +37 -0
- data/lib/aws/core/http/connection_pool.rb +369 -0
- data/lib/aws/core/http/curb_handler.rb +148 -0
- data/lib/aws/core/http/handler.rb +89 -0
- data/lib/aws/core/http/net_http_handler.rb +144 -0
- data/lib/aws/core/http/patch.rb +102 -0
- data/lib/aws/core/http/request.rb +259 -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/ini_parser.rb +42 -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 +108 -0
- data/lib/aws/core/log_formatter.rb +428 -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 +62 -0
- data/lib/aws/core/naming.rb +30 -0
- data/lib/aws/core/option_grammar.rb +738 -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 +941 -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/region.rb +85 -0
- data/lib/aws/core/region_collection.rb +80 -0
- data/lib/aws/core/resource.rb +413 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +215 -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 +154 -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 +83 -0
- data/lib/aws/core/signers/base.rb +46 -0
- data/lib/aws/core/signers/cloud_front.rb +56 -0
- data/lib/aws/core/signers/s3.rb +159 -0
- data/lib/aws/core/signers/version_2.rb +72 -0
- data/lib/aws/core/signers/version_3.rb +86 -0
- data/lib/aws/core/signers/version_3_https.rb +61 -0
- data/lib/aws/core/signers/version_4.rb +228 -0
- data/lib/aws/core/signers/version_4/chunk_signed_stream.rb +191 -0
- data/lib/aws/core/uri_escape.rb +44 -0
- data/lib/aws/core/xml/frame.rb +245 -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 +56 -0
- data/lib/aws/core/xml/sax_handlers/ox.rb +41 -0
- data/lib/aws/core/xml/sax_handlers/rexml.rb +47 -0
- data/lib/aws/core/xml/stub.rb +123 -0
- data/lib/aws/data_pipeline.rb +72 -0
- data/lib/aws/data_pipeline/client.rb +36 -0
- data/lib/aws/data_pipeline/config.rb +18 -0
- data/lib/aws/data_pipeline/errors.rb +20 -0
- data/lib/aws/direct_connect.rb +73 -0
- data/lib/aws/direct_connect/client.rb +36 -0
- data/lib/aws/direct_connect/config.rb +18 -0
- data/lib/aws/direct_connect/errors.rb +22 -0
- data/lib/aws/dynamo_db.rb +230 -0
- data/lib/aws/dynamo_db/attribute_collection.rb +456 -0
- data/lib/aws/dynamo_db/batch_get.rb +213 -0
- data/lib/aws/dynamo_db/batch_write.rb +254 -0
- data/lib/aws/dynamo_db/binary.rb +35 -0
- data/lib/aws/dynamo_db/client.rb +129 -0
- data/lib/aws/dynamo_db/client/v20111205.rb +1266 -0
- data/lib/aws/dynamo_db/client/v20120810.rb +1409 -0
- data/lib/aws/dynamo_db/client_v2.rb +44 -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 +856 -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/resource.rb +33 -0
- data/lib/aws/dynamo_db/table.rb +492 -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 +428 -0
- data/lib/aws/ec2/attachment.rb +135 -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 +154 -0
- data/lib/aws/ec2/collection.rb +36 -0
- data/lib/aws/ec2/config.rb +21 -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 +209 -0
- data/lib/aws/ec2/elastic_ip_collection.rb +93 -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 +87 -0
- data/lib/aws/ec2/has_permissions.rb +44 -0
- data/lib/aws/ec2/image.rb +270 -0
- data/lib/aws/ec2/image_collection.rb +219 -0
- data/lib/aws/ec2/instance.rb +803 -0
- data/lib/aws/ec2/instance_collection.rb +402 -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 +237 -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/reserved_instances.rb +57 -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 +45 -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 +482 -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 +133 -0
- data/lib/aws/ec2/snapshot.rb +143 -0
- data/lib/aws/ec2/snapshot_collection.rb +131 -0
- data/lib/aws/ec2/subnet.rb +161 -0
- data/lib/aws/ec2/subnet_collection.rb +119 -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 +67 -0
- data/lib/aws/ec2/tagged_item.rb +85 -0
- data/lib/aws/ec2/volume.rb +185 -0
- data/lib/aws/ec2/volume_collection.rb +102 -0
- data/lib/aws/ec2/vpc.rb +174 -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 +49 -0
- data/lib/aws/elastic_beanstalk/client.rb +36 -0
- data/lib/aws/elastic_beanstalk/config.rb +18 -0
- data/lib/aws/elastic_beanstalk/errors.rb +22 -0
- data/lib/aws/elastic_transcoder.rb +29 -0
- data/lib/aws/elastic_transcoder/client.rb +48 -0
- data/lib/aws/elastic_transcoder/config.rb +18 -0
- data/lib/aws/elastic_transcoder/errors.rb +23 -0
- data/lib/aws/elasticache.rb +49 -0
- data/lib/aws/elasticache/client.rb +41 -0
- data/lib/aws/elasticache/config.rb +18 -0
- data/lib/aws/elasticache/errors.rb +22 -0
- data/lib/aws/elb.rb +66 -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 +35 -0
- data/lib/aws/elb/config.rb +18 -0
- data/lib/aws/elb/errors.rb +26 -0
- data/lib/aws/elb/instance_collection.rb +168 -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 +280 -0
- data/lib/aws/elb/load_balancer_collection.rb +146 -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/emr.rb +87 -0
- data/lib/aws/emr/client.rb +35 -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 +307 -0
- data/lib/aws/emr/job_flow_collection.rb +183 -0
- data/lib/aws/errors.rb +162 -0
- data/lib/aws/glacier.rb +79 -0
- data/lib/aws/glacier/archive.rb +56 -0
- data/lib/aws/glacier/archive_collection.rb +146 -0
- data/lib/aws/glacier/client.rb +49 -0
- data/lib/aws/glacier/config.rb +19 -0
- data/lib/aws/glacier/errors.rb +22 -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 +408 -0
- data/lib/aws/iam/access_key.rb +185 -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 +49 -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 +111 -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/resource.rb +62 -0
- data/lib/aws/iam/server_certificate.rb +148 -0
- data/lib/aws/iam/server_certificate_collection.rb +138 -0
- data/lib/aws/iam/signing_certificate.rb +186 -0
- data/lib/aws/iam/signing_certificate_collection.rb +131 -0
- data/lib/aws/iam/user.rb +200 -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 +35 -0
- data/lib/aws/import_export/config.rb +19 -0
- data/lib/aws/import_export/errors.rb +22 -0
- data/lib/aws/kinesis.rb +53 -0
- data/lib/aws/kinesis/client.rb +35 -0
- data/lib/aws/kinesis/config.rb +18 -0
- data/lib/aws/kinesis/errors.rb +20 -0
- data/lib/aws/ops_works.rb +29 -0
- data/lib/aws/ops_works/client.rb +35 -0
- data/lib/aws/ops_works/config.rb +18 -0
- data/lib/aws/ops_works/errors.rb +20 -0
- data/lib/aws/rails.rb +195 -0
- data/lib/aws/rds.rb +70 -0
- data/lib/aws/rds/client.rb +42 -0
- data/lib/aws/rds/config.rb +18 -0
- data/lib/aws/rds/db_instance.rb +215 -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/record.rb +139 -0
- data/lib/aws/record/abstract_base.rb +689 -0
- data/lib/aws/record/attributes.rb +388 -0
- data/lib/aws/record/conversion.rb +38 -0
- data/lib/aws/record/dirty_tracking.rb +287 -0
- data/lib/aws/record/errors.rb +143 -0
- data/lib/aws/record/exceptions.rb +51 -0
- data/lib/aws/record/hash_model.rb +204 -0
- data/lib/aws/record/hash_model/attributes.rb +195 -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 +453 -0
- data/lib/aws/record/model/attributes.rb +377 -0
- data/lib/aws/record/model/finder_methods.rb +232 -0
- data/lib/aws/record/model/scope.rb +212 -0
- data/lib/aws/record/naming.rb +31 -0
- data/lib/aws/record/scope.rb +203 -0
- data/lib/aws/record/validations.rb +694 -0
- data/lib/aws/record/validator.rb +246 -0
- data/lib/aws/record/validators/acceptance.rb +49 -0
- data/lib/aws/record/validators/block.rb +36 -0
- data/lib/aws/record/validators/confirmation.rb +41 -0
- data/lib/aws/record/validators/count.rb +106 -0
- data/lib/aws/record/validators/exclusion.rb +41 -0
- data/lib/aws/record/validators/format.rb +55 -0
- data/lib/aws/record/validators/inclusion.rb +54 -0
- data/lib/aws/record/validators/length.rb +105 -0
- data/lib/aws/record/validators/method.rb +31 -0
- data/lib/aws/record/validators/numericality.rb +136 -0
- data/lib/aws/record/validators/presence.rb +43 -0
- data/lib/aws/redshift.rb +51 -0
- data/lib/aws/redshift/client.rb +35 -0
- data/lib/aws/redshift/config.rb +18 -0
- data/lib/aws/redshift/errors.rb +22 -0
- data/lib/aws/route_53.rb +86 -0
- data/lib/aws/route_53/change_batch.rb +161 -0
- data/lib/aws/route_53/change_info.rb +72 -0
- data/lib/aws/route_53/client.rb +38 -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 +134 -0
- data/lib/aws/route_53/hosted_zone_collection.rb +101 -0
- data/lib/aws/route_53/resource_record_set.rb +251 -0
- data/lib/aws/route_53/resource_record_set_collection.rb +110 -0
- data/lib/aws/s3.rb +156 -0
- data/lib/aws/s3/access_control_list.rb +265 -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 +162 -0
- data/lib/aws/s3/bucket_lifecycle_configuration.rb +473 -0
- data/lib/aws/s3/bucket_tag_collection.rb +111 -0
- data/lib/aws/s3/bucket_version_collection.rb +79 -0
- data/lib/aws/s3/cipher_io.rb +120 -0
- data/lib/aws/s3/client.rb +2067 -0
- data/lib/aws/s3/client/xml.rb +266 -0
- data/lib/aws/s3/config.rb +48 -0
- data/lib/aws/s3/cors_rule.rb +108 -0
- data/lib/aws/s3/cors_rule_collection.rb +194 -0
- data/lib/aws/s3/data_options.rb +191 -0
- data/lib/aws/s3/encryption_utils.rb +146 -0
- data/lib/aws/s3/errors.rb +94 -0
- data/lib/aws/s3/multipart_upload.rb +353 -0
- data/lib/aws/s3/multipart_upload_collection.rb +76 -0
- data/lib/aws/s3/object_collection.rb +353 -0
- data/lib/aws/s3/object_metadata.rb +103 -0
- data/lib/aws/s3/object_upload_collection.rb +77 -0
- data/lib/aws/s3/object_version.rb +154 -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 +85 -0
- data/lib/aws/s3/presign_v4.rb +136 -0
- data/lib/aws/s3/presigned_post.rb +554 -0
- data/lib/aws/s3/request.rb +62 -0
- data/lib/aws/s3/s3_object.rb +1784 -0
- data/lib/aws/s3/tree.rb +116 -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 +82 -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 +218 -0
- data/lib/aws/simple_db/attribute.rb +156 -0
- data/lib/aws/simple_db/attribute_collection.rb +240 -0
- data/lib/aws/simple_db/client.rb +67 -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 +123 -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 +654 -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_email_service.rb +443 -0
- data/lib/aws/simple_email_service/client.rb +37 -0
- data/lib/aws/simple_email_service/config.rb +18 -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 +230 -0
- data/lib/aws/simple_email_service/identity_collection.rb +81 -0
- data/lib/aws/simple_email_service/quotas.rb +66 -0
- data/lib/aws/simple_workflow.rb +227 -0
- data/lib/aws/simple_workflow/activity_task.rb +178 -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 +69 -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 +223 -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/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 +384 -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 +35 -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/message.rb +204 -0
- data/lib/aws/sns/originators/from_auto_scaling.rb +68 -0
- data/lib/aws/sns/policy.rb +47 -0
- data/lib/aws/sns/subscription.rb +165 -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 +80 -0
- data/lib/aws/sqs/client.rb +53 -0
- data/lib/aws/sqs/config.rb +20 -0
- data/lib/aws/sqs/errors.rb +125 -0
- data/lib/aws/sqs/policy.rb +48 -0
- data/lib/aws/sqs/queue.rb +856 -0
- data/lib/aws/sqs/queue_collection.rb +186 -0
- data/lib/aws/sqs/received_message.rb +190 -0
- data/lib/aws/sqs/received_sns_message.rb +116 -0
- data/lib/aws/storage_gateway.rb +72 -0
- data/lib/aws/storage_gateway/client.rb +42 -0
- data/lib/aws/storage_gateway/config.rb +18 -0
- data/lib/aws/storage_gateway/errors.rb +22 -0
- data/lib/aws/sts.rb +164 -0
- data/lib/aws/sts/client.rb +55 -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/session.rb +48 -0
- data/lib/aws/support.rb +29 -0
- data/lib/aws/support/client.rb +35 -0
- data/lib/aws/support/config.rb +18 -0
- data/lib/aws/support/errors.rb +20 -0
- data/lib/aws/version.rb +17 -0
- data/rails/init.rb +15 -0
- metadata +634 -0
|
@@ -0,0 +1,803 @@
|
|
|
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
|
+
|
|
16
|
+
module AWS
|
|
17
|
+
class EC2
|
|
18
|
+
|
|
19
|
+
# Represents an EC2 instance.
|
|
20
|
+
#
|
|
21
|
+
# @attr [String] user_data Arbitrary metadata that is available
|
|
22
|
+
# to the instance while it is running. This interface handles
|
|
23
|
+
# the details of encoding the user data for transmission; you
|
|
24
|
+
# should set the user data exactly as you want it to be made
|
|
25
|
+
# available to the instance.
|
|
26
|
+
#
|
|
27
|
+
# The instance must be in a stopped state to change user data;
|
|
28
|
+
# for example:
|
|
29
|
+
#
|
|
30
|
+
# i.user_data # => "HELLO"
|
|
31
|
+
# i.status # => :running
|
|
32
|
+
# i.user_data = "GOODBYE" # raises an exception
|
|
33
|
+
# i.stop; sleep 1 until i.status == :stopped
|
|
34
|
+
# i.user_data = "GOODBYE" # => "GOODBYE"
|
|
35
|
+
#
|
|
36
|
+
# @attr [String] instance_type The instance type,
|
|
37
|
+
# e.g. "m1.small". The instance must be in a stopped state to
|
|
38
|
+
# change the instance type.
|
|
39
|
+
#
|
|
40
|
+
# @attr [Boolean] ebs_optimized The instance must be in a stopped state to
|
|
41
|
+
# change the ebs_optimized state.
|
|
42
|
+
#
|
|
43
|
+
# @attr [Boolean] api_termination_disabled? True if the instance
|
|
44
|
+
# cannot be terminated using the {#terminate} method. This
|
|
45
|
+
# attribute can be changed at any time.
|
|
46
|
+
#
|
|
47
|
+
# @attr [String] instance_initiated_shutdown_behavior Valid
|
|
48
|
+
# values are:
|
|
49
|
+
#
|
|
50
|
+
# * "stop"] When the instance shuts down, it will go into a
|
|
51
|
+
# "stopped" state.
|
|
52
|
+
# * "terminate"] When the instance shuts down, it will be
|
|
53
|
+
# terminated.
|
|
54
|
+
#
|
|
55
|
+
# @attr [Boolean] source_dest_check
|
|
56
|
+
#
|
|
57
|
+
# @attr_reader [String] image_id Image ID of the AMI used to
|
|
58
|
+
# launch the instance.
|
|
59
|
+
#
|
|
60
|
+
# @attr_reader [String] key_name The name of the key pair with
|
|
61
|
+
# which this instance was associated at launch.
|
|
62
|
+
#
|
|
63
|
+
# @attr [String] kernel_id The ID of the kernel that the image
|
|
64
|
+
# currently uses. The instance must be in a stopped state to
|
|
65
|
+
# change this attribute.
|
|
66
|
+
#
|
|
67
|
+
# @attr [String] ramdisk_id The ID of the RAM disk that the
|
|
68
|
+
# image currently uses. The instance must be in a stopped
|
|
69
|
+
# state to change this attribute.
|
|
70
|
+
#
|
|
71
|
+
# @attr_reader [Symbol] root_device_type The root device type
|
|
72
|
+
# used by the AMI. The AMI can use an Amazon EBS or instance
|
|
73
|
+
# store root device. Valid values:
|
|
74
|
+
#
|
|
75
|
+
# * `:ebs`
|
|
76
|
+
# * `:instance_store`
|
|
77
|
+
#
|
|
78
|
+
# @attr_reader [String] root_device_name The name of the root
|
|
79
|
+
# device.
|
|
80
|
+
#
|
|
81
|
+
# @attr_reader [String] private_dns_name The DNS name of the
|
|
82
|
+
# instance within the EC2 network.
|
|
83
|
+
#
|
|
84
|
+
# @attr_reader [String] dns_name The DNS name of the instance on
|
|
85
|
+
# the internet.
|
|
86
|
+
#
|
|
87
|
+
# @attr_reader [Integer] ami_launch_index The AMI launch index,
|
|
88
|
+
# which can be used to find this instance within the launch
|
|
89
|
+
# group.
|
|
90
|
+
#
|
|
91
|
+
# @attr_reader [String] private_ip_address The private IP
|
|
92
|
+
# address assigned to the instance.
|
|
93
|
+
#
|
|
94
|
+
# @attr_reader [String] ip_address The IP address of the
|
|
95
|
+
# instance.
|
|
96
|
+
#
|
|
97
|
+
# @attr_reader [Symbol] status The instance status.
|
|
98
|
+
# Valid values are:
|
|
99
|
+
#
|
|
100
|
+
# * `:pending`
|
|
101
|
+
# * `:running`
|
|
102
|
+
# * `:shutting_down`
|
|
103
|
+
# * `:terminated`
|
|
104
|
+
# * `:stopping`
|
|
105
|
+
# * `:stopped`
|
|
106
|
+
#
|
|
107
|
+
# @attr_reader [Integer] status_code The numeric instance status code.
|
|
108
|
+
#
|
|
109
|
+
# @attr_reader [Symbol] architecture The architecture of the image.
|
|
110
|
+
#
|
|
111
|
+
# @attr_reader [Symbol] virtualization_type The instance's
|
|
112
|
+
# virtualization type. Valid values:
|
|
113
|
+
#
|
|
114
|
+
# * `:paravirtual`
|
|
115
|
+
# * `:hvm`
|
|
116
|
+
#
|
|
117
|
+
# @attr_reader [String] reservation_id The ID of the reservation
|
|
118
|
+
# in which this instance was launched.
|
|
119
|
+
#
|
|
120
|
+
# @attr_reader [String] requester_id ID of the requester that
|
|
121
|
+
# launched the instance on your behalf (e.g., AWS Management
|
|
122
|
+
# Console, Auto Scaling).
|
|
123
|
+
#
|
|
124
|
+
# @attr_reader [String] owner_id ID of the AWS account that owns
|
|
125
|
+
# the reservation in which the instance was launched.
|
|
126
|
+
#
|
|
127
|
+
# @attr_reader [Symbol] monitoring The status of CloudWatch
|
|
128
|
+
# monitoring for the instance. Valid values:
|
|
129
|
+
#
|
|
130
|
+
# * `:enabled`
|
|
131
|
+
# * `:disabled`
|
|
132
|
+
# * `:pending`
|
|
133
|
+
#
|
|
134
|
+
# @attr_reader [String] state_transition_reason A string
|
|
135
|
+
# describing the reason for the last state transition.
|
|
136
|
+
#
|
|
137
|
+
# @attr_reader [Time] launch_time The time at which the instance
|
|
138
|
+
# was launched.
|
|
139
|
+
#
|
|
140
|
+
# @attr_reader [String] platform A string describing the
|
|
141
|
+
# platform of the image (e.g. "windows").
|
|
142
|
+
#
|
|
143
|
+
# @attr_reader [Symbol] hypervisor The instance's hypervisor
|
|
144
|
+
# type. Valid values:
|
|
145
|
+
#
|
|
146
|
+
# * `:ovm`
|
|
147
|
+
# * `:xen`
|
|
148
|
+
#
|
|
149
|
+
# @attr_reader [String] client_token Idempotency token you
|
|
150
|
+
# provided when you launched the instance.
|
|
151
|
+
#
|
|
152
|
+
# @attr_reader [String,nil] vpc_id Instances launched in a VPC have
|
|
153
|
+
# a vpc_id. Normal EC2 instances return nil.
|
|
154
|
+
#
|
|
155
|
+
# @attr_reader [String,nil] subnet_id Instances launched in a VPC have
|
|
156
|
+
# a subnet_id. Normal EC2 instances return nil.
|
|
157
|
+
#
|
|
158
|
+
# @attr_reader [String,nil] iam_instance_profile_id
|
|
159
|
+
#
|
|
160
|
+
# @attr_reader [String,nil] iam_instance_profile_arn
|
|
161
|
+
#
|
|
162
|
+
class Instance < Resource
|
|
163
|
+
|
|
164
|
+
include TaggedItem
|
|
165
|
+
|
|
166
|
+
# Creates an object that represents the instance with the
|
|
167
|
+
# given ID. It's usually easier to get an instance of this
|
|
168
|
+
# class by calling {InstanceCollection#[]} or
|
|
169
|
+
# {InstanceCollection#each}.
|
|
170
|
+
def initialize(instance_id, opts = {})
|
|
171
|
+
super
|
|
172
|
+
@id = instance_id
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# @return [String] Returns the instance id.
|
|
176
|
+
attr_reader :id
|
|
177
|
+
alias_method :instance_id, :id
|
|
178
|
+
|
|
179
|
+
# @api private
|
|
180
|
+
def self.reservation_attributes
|
|
181
|
+
@reservation_attributes ||= {}
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
# @api private
|
|
185
|
+
def self.reservation_attribute name, options = {}, &block
|
|
186
|
+
attr = attribute(name, options, &block)
|
|
187
|
+
reservation_attributes[attr.name] = attr
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
# @api private
|
|
191
|
+
def self.describe_call_attributes
|
|
192
|
+
@describe_call_attributes ||= {}
|
|
193
|
+
end
|
|
194
|
+
|
|
195
|
+
# @api private
|
|
196
|
+
def self.mutable_describe_attributes
|
|
197
|
+
@mutable_describe_attributes ||= {}
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
# @api private
|
|
201
|
+
def self.describe_call_attribute name, options = {}, &block
|
|
202
|
+
attr = attribute(name, options, &block)
|
|
203
|
+
describe_call_attributes[attr.name] = attr
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
# @api private
|
|
207
|
+
def self.mutable_describe_call_attribute name, options = {}, &block
|
|
208
|
+
attr = mutable_attribute(name, options, &block)
|
|
209
|
+
describe_call_attributes[attr.name] = attr
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
# @api private
|
|
213
|
+
def self.mutable_describe_attribute name, options = {}, &block
|
|
214
|
+
attr = mutable_attribute(name, options, &block)
|
|
215
|
+
mutable_describe_attributes[attr.name] = attr
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
reservation_attribute :reservation_id, :static => true
|
|
219
|
+
|
|
220
|
+
reservation_attribute :owner_id, :static => true
|
|
221
|
+
|
|
222
|
+
reservation_attribute :requester_id, :static => true
|
|
223
|
+
|
|
224
|
+
describe_call_attribute :private_dns_name
|
|
225
|
+
|
|
226
|
+
describe_call_attribute :dns_name
|
|
227
|
+
|
|
228
|
+
alias_method :public_dns_name, :dns_name
|
|
229
|
+
|
|
230
|
+
describe_call_attribute :product_codes, :static => true
|
|
231
|
+
|
|
232
|
+
describe_call_attribute :ami_launch_index, :static => true
|
|
233
|
+
|
|
234
|
+
describe_call_attribute :monitoring do
|
|
235
|
+
translates_output {|v| v.state.to_sym }
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
describe_call_attribute :private_ip_address
|
|
239
|
+
|
|
240
|
+
describe_call_attribute :ip_address
|
|
241
|
+
|
|
242
|
+
alias_method :public_ip_address, :ip_address
|
|
243
|
+
|
|
244
|
+
describe_call_attribute :architecture, :to_sym => true, :static => true
|
|
245
|
+
|
|
246
|
+
describe_call_attribute :root_device_type, :to_sym => true, :static => true
|
|
247
|
+
|
|
248
|
+
describe_call_attribute :root_device_name, :static => true
|
|
249
|
+
|
|
250
|
+
describe_call_attribute :block_device_mapping
|
|
251
|
+
|
|
252
|
+
protected :block_device_mapping
|
|
253
|
+
|
|
254
|
+
describe_call_attribute :instance_lifecycle, :to_sym => true
|
|
255
|
+
|
|
256
|
+
describe_call_attribute :virtualization_type, :to_sym => true, :static => true
|
|
257
|
+
|
|
258
|
+
describe_call_attribute :hypervisor, :to_sym => true, :static => true
|
|
259
|
+
|
|
260
|
+
describe_call_attribute :placement, :static => true
|
|
261
|
+
|
|
262
|
+
describe_call_attribute :state_transition_reason, :from => :reason
|
|
263
|
+
|
|
264
|
+
describe_call_attribute :launch_time, :static => true
|
|
265
|
+
|
|
266
|
+
describe_call_attribute :platform, :static => true
|
|
267
|
+
|
|
268
|
+
describe_call_attribute :client_token
|
|
269
|
+
|
|
270
|
+
describe_call_attribute :image_id, :static => true
|
|
271
|
+
|
|
272
|
+
describe_call_attribute :key_name, :static => true
|
|
273
|
+
|
|
274
|
+
describe_call_attribute :vpc_id, :static => true
|
|
275
|
+
|
|
276
|
+
describe_call_attribute :subnet_id, :static => true
|
|
277
|
+
|
|
278
|
+
describe_call_attribute :iam_instance_profile_id,
|
|
279
|
+
:from => :iam_instance_profile,
|
|
280
|
+
:static => true do
|
|
281
|
+
translates_output{|profile| profile[:id] }
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
describe_call_attribute :iam_instance_profile_arn,
|
|
285
|
+
:from => :iam_instance_profile,
|
|
286
|
+
:static => true do
|
|
287
|
+
translates_output{|profile| profile[:arn] }
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
attribute :status do
|
|
291
|
+
translates_output{|state| state.name.tr("-","_").to_sym }
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
attribute :status, :from => [:instance_state, :name], :to_sym => true
|
|
295
|
+
|
|
296
|
+
attribute :status_code, :from => [:instance_state, :code]
|
|
297
|
+
|
|
298
|
+
mutable_describe_call_attribute :instance_type
|
|
299
|
+
|
|
300
|
+
mutable_describe_call_attribute :ebs_optimized
|
|
301
|
+
|
|
302
|
+
mutable_describe_call_attribute :kernel_id, :set_as => :kernel
|
|
303
|
+
|
|
304
|
+
mutable_describe_call_attribute :ramdisk_id, :set_as => :ramdisk
|
|
305
|
+
|
|
306
|
+
mutable_describe_attribute :source_dest_check do
|
|
307
|
+
translates_output{|bool| bool.to_s == "true" }
|
|
308
|
+
end
|
|
309
|
+
|
|
310
|
+
alias_method :source_dest_check?, :source_dest_check
|
|
311
|
+
|
|
312
|
+
mutable_describe_call_attribute :group_set
|
|
313
|
+
|
|
314
|
+
describe_call_attribute :network_interface_set
|
|
315
|
+
|
|
316
|
+
mutable_describe_attribute(:user_data) do
|
|
317
|
+
translates_output {|v| Base64.decode64(v) if v }
|
|
318
|
+
translates_input {|v| Base64.encode64(v).strip }
|
|
319
|
+
end
|
|
320
|
+
|
|
321
|
+
mutable_describe_attribute :api_termination_disabled?,
|
|
322
|
+
:from => :disable_api_termination
|
|
323
|
+
|
|
324
|
+
mutable_describe_attribute :instance_initiated_shutdown_behavior
|
|
325
|
+
|
|
326
|
+
provider(:describe_instances) do |provider|
|
|
327
|
+
provider.find {|resp| resp.reservation_index[id] }
|
|
328
|
+
provider.provides *reservation_attributes.keys
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
provider(:describe_instances) do |provider|
|
|
332
|
+
provider.find {|resp| resp.instance_index[id] }
|
|
333
|
+
provider.provides *describe_call_attributes.keys
|
|
334
|
+
provider.provides :status
|
|
335
|
+
provider.provides :status_code
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
provider(:run_instances) do |provider|
|
|
339
|
+
provider.find {|resp| resp.instances_set.find{|i| i.instance_id == id } }
|
|
340
|
+
provider.provides *describe_call_attributes.keys
|
|
341
|
+
provider.provides :status
|
|
342
|
+
provider.provides :status_code
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
provider(:run_instances) do |provider|
|
|
346
|
+
provider.find {|resp| resp if resp.instances_set.find{|i| i.instance_id == id } }
|
|
347
|
+
provider.provides *reservation_attributes.keys
|
|
348
|
+
end
|
|
349
|
+
|
|
350
|
+
# These are the few attributes that are only returned by
|
|
351
|
+
# :desribe_instance_attribute and are *NOT* returned by
|
|
352
|
+
# :describe_instances. To make matters worse, only one of
|
|
353
|
+
# them is returned per :describe_instance_attribute call.
|
|
354
|
+
mutable_describe_attributes.values.each do |attr|
|
|
355
|
+
|
|
356
|
+
attr_opt_name = Core::Inflection.class_name(attr.from.to_s)
|
|
357
|
+
attr_opt_name = attr_opt_name[0,1].downcase + attr_opt_name[1..-1]
|
|
358
|
+
|
|
359
|
+
provider(:describe_instance_attribute) do |provider|
|
|
360
|
+
provider.find do |resp|
|
|
361
|
+
if
|
|
362
|
+
resp.request_options[:instance_id] == id and
|
|
363
|
+
resp.request_options[:attribute] == attr_opt_name
|
|
364
|
+
then
|
|
365
|
+
return resp
|
|
366
|
+
end
|
|
367
|
+
end
|
|
368
|
+
provider.provides(attr.name, :value_wrapped => true)
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
provider(:terminate_instances, :start_instances, :stop_instances) do |provider|
|
|
374
|
+
provider.find do |resp|
|
|
375
|
+
resp.instances_set.find {|i| i.instance_id == id }
|
|
376
|
+
end
|
|
377
|
+
provider.provides :status, :from => [:current_state, :name]
|
|
378
|
+
provider.provides :status_code, :from => [:current_state, :code]
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
provider(:monitor_instances, :unmonitor_instances) do |provider|
|
|
382
|
+
provider.find do |resp|
|
|
383
|
+
resp.instances_set.find {|i| i.instance_id == id }
|
|
384
|
+
end
|
|
385
|
+
provider.provides :monitoring
|
|
386
|
+
end
|
|
387
|
+
|
|
388
|
+
# @return [Boolean] Returns true if this is an EC2 VPC instance.
|
|
389
|
+
def vpc?
|
|
390
|
+
!!vpc_id
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
# @return [VPC,nil] Returns the VPC this instance was launched in.
|
|
394
|
+
# If this instance was not launched inside a VPC, nil is returned.
|
|
395
|
+
def vpc
|
|
396
|
+
if vpc_id
|
|
397
|
+
VPC.new(vpc_id, :config => config)
|
|
398
|
+
end
|
|
399
|
+
end
|
|
400
|
+
|
|
401
|
+
# @return [Subnet,nil] Returns the VPC subnet this instance was
|
|
402
|
+
# launched in. Returns nil if this was not launched in a VPC.
|
|
403
|
+
def subnet
|
|
404
|
+
if subnet_id
|
|
405
|
+
Subnet.new(subnet_id, :vpc_id => vpc_id, :config => config)
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
# @return [Array<NetworkInterface>] Returns a list of elastic network
|
|
410
|
+
# interfaces attached to this instance (VPC only). Non-vpc
|
|
411
|
+
# instance may not have attached network interfaces.
|
|
412
|
+
def network_interfaces
|
|
413
|
+
network_interface_set.collect do |ni|
|
|
414
|
+
NetworkInterface.new_from(:describe_network_interfaces, ni,
|
|
415
|
+
ni.network_interface_id, :config => config)
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
|
|
419
|
+
# Attaches a network interface to this instance (VPC only).
|
|
420
|
+
#
|
|
421
|
+
# @param [NetworkInterface,String] network_interface A network interface
|
|
422
|
+
# (or network interface id string) to attach to this vpc instance.
|
|
423
|
+
#
|
|
424
|
+
# @param [Hash] options
|
|
425
|
+
#
|
|
426
|
+
# @option (see NetworkInterface#attach)
|
|
427
|
+
#
|
|
428
|
+
# @return [nil]
|
|
429
|
+
#
|
|
430
|
+
def attach_network_interface network_interface, options = {}
|
|
431
|
+
if network_interface.is_a?(NetworkInterface)
|
|
432
|
+
network_interface.attach(self, options)
|
|
433
|
+
else
|
|
434
|
+
i = NetworkInterface.new(network_interface, :config => config)
|
|
435
|
+
i.attach(self, options)
|
|
436
|
+
end
|
|
437
|
+
nil
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
# @return [Array<SecurityGroup>] Returns a list of security
|
|
441
|
+
# groups the instance belongs to.
|
|
442
|
+
def security_groups
|
|
443
|
+
(group_set || []).collect do |g|
|
|
444
|
+
SecurityGroup.new(g.group_id, :name => g.group_name, :config => config)
|
|
445
|
+
end
|
|
446
|
+
end
|
|
447
|
+
alias_method :groups, :security_groups
|
|
448
|
+
|
|
449
|
+
# @return [Hash<String,Attachment>] Returns a hash of attachments.
|
|
450
|
+
# The keys are device name strings (e.g. '/dev/sda') and the values
|
|
451
|
+
# are {Attachment} objects.
|
|
452
|
+
# @note This method will not return data for ephemeral volumes.
|
|
453
|
+
# @see {#block_devices}
|
|
454
|
+
def attachments
|
|
455
|
+
(block_device_mapping || []).inject({}) do |m, mapping|
|
|
456
|
+
if mapping[:ebs]
|
|
457
|
+
device = mapping[:device_name]
|
|
458
|
+
volume = Volume.new(mapping[:ebs][:volume_id], :config => config)
|
|
459
|
+
attachment = Attachment.new(volume, self, device, :config => config)
|
|
460
|
+
m[device] = attachment
|
|
461
|
+
end
|
|
462
|
+
m
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
alias_method :block_device_mappings, :attachments
|
|
466
|
+
|
|
467
|
+
# Returns a list of block device mappings.
|
|
468
|
+
#
|
|
469
|
+
# instance.block_devices
|
|
470
|
+
# #=>
|
|
471
|
+
# [
|
|
472
|
+
# {
|
|
473
|
+
# :device_name => "/dev/sda2",
|
|
474
|
+
# :ebs => {
|
|
475
|
+
# :volume_id => "vol-123",
|
|
476
|
+
# :status => "attaching",
|
|
477
|
+
# :attach_time => time,
|
|
478
|
+
# :delete_on_termination => true
|
|
479
|
+
# }
|
|
480
|
+
# }, {
|
|
481
|
+
# :device_name => "/dev/sdb",
|
|
482
|
+
# :virtual_name => "ephemeral0",
|
|
483
|
+
# }
|
|
484
|
+
# ]
|
|
485
|
+
#
|
|
486
|
+
# @return [Array<Hash>] Returns a list of block device mappings. This
|
|
487
|
+
# list may contain ephemeral volumes.
|
|
488
|
+
def block_devices
|
|
489
|
+
block_device_mapping.to_a
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
# Enables monitoring for this instance.
|
|
493
|
+
# @return [nil]
|
|
494
|
+
def enable_monitoring
|
|
495
|
+
client.monitor_instances(:instance_ids => [id])
|
|
496
|
+
nil
|
|
497
|
+
end
|
|
498
|
+
|
|
499
|
+
# Disables monitoring for this instance.
|
|
500
|
+
# @return [nil]
|
|
501
|
+
def disable_monitoring
|
|
502
|
+
client.unmonitor_instances(:instance_ids => [id])
|
|
503
|
+
nil
|
|
504
|
+
end
|
|
505
|
+
|
|
506
|
+
# Enables or disables monitoring for this instance.
|
|
507
|
+
# @param [Boolean] state A true or false value. Enables monintoring
|
|
508
|
+
# for a true value, disables it for a false value.
|
|
509
|
+
def monitoring_enabled= state
|
|
510
|
+
state ? enable_monitoring : disable_monitoring
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
# @return [Booelan] Returns `true` if CloudWatch monitoring is
|
|
514
|
+
# enabled for this instance.
|
|
515
|
+
def monitoring_enabled?
|
|
516
|
+
monitoring == :enabled
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
# @return [Boolean] true if the instance is a Spot instance.
|
|
520
|
+
def spot_instance?
|
|
521
|
+
instance_lifecycle == :spot
|
|
522
|
+
end
|
|
523
|
+
|
|
524
|
+
# @return [String] The availability zone where the instance is
|
|
525
|
+
# running.
|
|
526
|
+
def availability_zone
|
|
527
|
+
if p = placement
|
|
528
|
+
p.availability_zone
|
|
529
|
+
end
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
# @return [Boolean] Returns true if the instance has dedicated tenancy.
|
|
533
|
+
# This will be false for all non-VPC instances. Dedicated Tenancy
|
|
534
|
+
# comes at extra cost.
|
|
535
|
+
def dedicated_tenancy?
|
|
536
|
+
if p = placement
|
|
537
|
+
p.tenancy == 'dedicated'
|
|
538
|
+
else
|
|
539
|
+
false
|
|
540
|
+
end
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
# @return [Image] The AMI used to launch the instance.
|
|
544
|
+
def image
|
|
545
|
+
Image.new(image_id, :config => config)
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
# @return [KeyPair] The key pair with which this instance was
|
|
549
|
+
# associated at launch.
|
|
550
|
+
def key_pair
|
|
551
|
+
KeyPair.new(key_name, :config => config) if key_name
|
|
552
|
+
end
|
|
553
|
+
|
|
554
|
+
# Creates an AMI from this instance.
|
|
555
|
+
#
|
|
556
|
+
# @param [String] name A name for the new image you're
|
|
557
|
+
# creating. Constraints: 3-128 alphanumeric characters,
|
|
558
|
+
# parenthesis (()), commas (,), slashes (/), dashes (-), or
|
|
559
|
+
# underscores(_)
|
|
560
|
+
#
|
|
561
|
+
# @param [Hash] options Additional options for creating the image.
|
|
562
|
+
#
|
|
563
|
+
# @option options [String] :description A description of the new image.
|
|
564
|
+
#
|
|
565
|
+
# @option options [Boolean] :no_reboot By default this
|
|
566
|
+
# option is set to `false`, which means Amazon EC2
|
|
567
|
+
# attempts to cleanly shut down the instance before image
|
|
568
|
+
# creation and reboots the instance afterwards. When the
|
|
569
|
+
# option is set to `true`, Amazon EC2 does not shut down
|
|
570
|
+
# the instance before creating the image. When this option
|
|
571
|
+
# is used, file system integrity on the created image cannot
|
|
572
|
+
# be guaranteed.
|
|
573
|
+
#
|
|
574
|
+
# @return [Image] The newly created image.
|
|
575
|
+
def create_image name, options = {}
|
|
576
|
+
images = ImageCollection.new(:config => config)
|
|
577
|
+
images.create(options.merge(:instance_id => id, :name => name))
|
|
578
|
+
end
|
|
579
|
+
|
|
580
|
+
# Retrieves the console output for the instance, returning +nil+ if it
|
|
581
|
+
# is not available yet.
|
|
582
|
+
# @return [String] the console output
|
|
583
|
+
# @return [nil] if no output is available
|
|
584
|
+
def console_output
|
|
585
|
+
output = client.get_console_output(:instance_id => self.id)[:output]
|
|
586
|
+
Base64.decode64(output) if output
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
# Associates the elastic IP address with this instance.
|
|
590
|
+
#
|
|
591
|
+
# @overload associate_elastic_ip(elastic_ip)
|
|
592
|
+
# @param [ElasticIp,String] elastic_ip An Elastic ip address
|
|
593
|
+
# (VPC or non-VPC) or a public ip address string (non-VPC only).
|
|
594
|
+
#
|
|
595
|
+
# @overload associate_elastic_ip(allocation_id)
|
|
596
|
+
# @param [String] allocation_id The allocation id of a
|
|
597
|
+
# VPC elastic ip address.
|
|
598
|
+
#
|
|
599
|
+
# @return [nil]
|
|
600
|
+
#
|
|
601
|
+
def associate_elastic_ip elastic_ip
|
|
602
|
+
|
|
603
|
+
client_opts = {}
|
|
604
|
+
client_opts[:instance_id] = self.id
|
|
605
|
+
|
|
606
|
+
if vpc?
|
|
607
|
+
client_opts[:allocation_id] = elastic_ip.is_a?(ElasticIp) ?
|
|
608
|
+
elastic_ip.allocation_id :
|
|
609
|
+
elastic_ip.to_s
|
|
610
|
+
else
|
|
611
|
+
client_opts[:public_ip] = elastic_ip.to_s
|
|
612
|
+
end
|
|
613
|
+
|
|
614
|
+
client.associate_address(client_opts)
|
|
615
|
+
nil
|
|
616
|
+
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
alias_method :ip_address=, :associate_elastic_ip
|
|
620
|
+
|
|
621
|
+
# Disassociates an attached elastic IP address from this instance.
|
|
622
|
+
# Raises an exception if there is no elastic IP address associated
|
|
623
|
+
# with this instance.
|
|
624
|
+
def disassociate_elastic_ip
|
|
625
|
+
if ip = self.elastic_ip
|
|
626
|
+
ip.disassociate
|
|
627
|
+
else
|
|
628
|
+
raise "instance #{id} does not have an associated elastic ip"
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
# @return [ElasticIp,nil] Returns an elastic IP address if one
|
|
633
|
+
# is associated with this instance, nil otherwise.
|
|
634
|
+
def elastic_ip
|
|
635
|
+
ips = ElasticIpCollection.new(:config => config)
|
|
636
|
+
ips.filter('instance-id', id).first
|
|
637
|
+
end
|
|
638
|
+
|
|
639
|
+
# @return [Boolean] Returns true if an elastic IP address is
|
|
640
|
+
# associated with this instance, false otherwise.
|
|
641
|
+
def has_elastic_ip?
|
|
642
|
+
!elastic_ip.nil?
|
|
643
|
+
end
|
|
644
|
+
|
|
645
|
+
# @return [Boolean] Returns true if the instance exists according to
|
|
646
|
+
# EC2.
|
|
647
|
+
def exists?
|
|
648
|
+
client.describe_instances(:filters => [
|
|
649
|
+
{ :name => "instance-id", :values => [id] }
|
|
650
|
+
]).instance_index.key?(id)
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
# Resets the kernel to its default value.
|
|
654
|
+
def reset_kernel_id
|
|
655
|
+
client.reset_instance_attribute(
|
|
656
|
+
:instance_id => id, :attribute => "kernel").return
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
# Resets the RAM disk to its default value.
|
|
660
|
+
def reset_ramdisk_id
|
|
661
|
+
client.reset_instance_attribute(
|
|
662
|
+
:instance_id => id, :attribute => "ramdisk").return
|
|
663
|
+
end
|
|
664
|
+
|
|
665
|
+
# Terminates the instance.
|
|
666
|
+
# @return [nil]
|
|
667
|
+
def terminate
|
|
668
|
+
instance_action :terminate
|
|
669
|
+
end
|
|
670
|
+
alias_method :delete, :terminate
|
|
671
|
+
|
|
672
|
+
# Reboots the instance.
|
|
673
|
+
# @return [nil]
|
|
674
|
+
def reboot
|
|
675
|
+
instance_action :reboot
|
|
676
|
+
end
|
|
677
|
+
|
|
678
|
+
# Starts the instance, assuming it is in a stopped state.
|
|
679
|
+
# @see stop
|
|
680
|
+
# @return [nil]
|
|
681
|
+
def start
|
|
682
|
+
instance_action :start
|
|
683
|
+
end
|
|
684
|
+
|
|
685
|
+
# Stops the instance, eventually putting it into a stopped state.
|
|
686
|
+
# @return [nil]
|
|
687
|
+
def stop
|
|
688
|
+
instance_action :stop
|
|
689
|
+
end
|
|
690
|
+
|
|
691
|
+
# This produces an image of an EC2 instance for use in another
|
|
692
|
+
# virtualization environment and then writes the image to a
|
|
693
|
+
# S3 bucket.
|
|
694
|
+
#
|
|
695
|
+
# ## Granting EC2 write access to your bucket
|
|
696
|
+
#
|
|
697
|
+
# Before you can export an image to an S3 bucket, you must modify
|
|
698
|
+
# the bucket ACL. You only need to do this once per bucket.
|
|
699
|
+
#
|
|
700
|
+
# s3.buckets['bucket-name'].acl.change do |acl|
|
|
701
|
+
# acl.grant(:read_acp).to(:amazon_customer_email => 'vm-import-export@amazon.com')
|
|
702
|
+
# acl.grant(:write).to(:amazon_customer_email => 'vm-import-export@amazon.com')
|
|
703
|
+
# end
|
|
704
|
+
#
|
|
705
|
+
# ## Performing the export
|
|
706
|
+
#
|
|
707
|
+
# Simply call #export_to_s3 on your instance. Only instances
|
|
708
|
+
# derived from your own ImportInstance tasks may be exported.
|
|
709
|
+
#
|
|
710
|
+
# task = ec2.instances['i-12345678'].export_to_s3('bucket-name')
|
|
711
|
+
#
|
|
712
|
+
# ## Downloading the results
|
|
713
|
+
#
|
|
714
|
+
# Given a completed export task you can download the final image:
|
|
715
|
+
#
|
|
716
|
+
# File.open('image.ova', 'wb') {|f| f.write(task.s3_object.read) }
|
|
717
|
+
#
|
|
718
|
+
# @param [S3::Bucket,String] bucket The destination bucket. May
|
|
719
|
+
# be the name of the bucket (string) or a {S3::Bucket} object. The
|
|
720
|
+
# bucket must exist and grant write permissiosn to the AWS account
|
|
721
|
+
# 'vm-import-export@amazon.com.'.
|
|
722
|
+
#
|
|
723
|
+
# @param [Hash] options
|
|
724
|
+
#
|
|
725
|
+
# @option options [String] :target_environment ('vmware') The target
|
|
726
|
+
# virtualization environment. Valid values include: 'vmware', 'citrix'
|
|
727
|
+
# and 'microsoft'.
|
|
728
|
+
#
|
|
729
|
+
# @option options [String] :disk_image_format The format for the exported
|
|
730
|
+
# image. Defaults to 'vmdk' if `:target_environemnt` is 'vmware',
|
|
731
|
+
# otherwise, 'vhd'.
|
|
732
|
+
#
|
|
733
|
+
# @option options [String] :container_format The container format used to
|
|
734
|
+
# combine disk images with metadata (such as OVF). If absent, only
|
|
735
|
+
# the disk image will be exported. Defaults to 'ova' if
|
|
736
|
+
# `:target_environment` is 'vmware', otherwise ommited.
|
|
737
|
+
#
|
|
738
|
+
# @option options [String] :description Description of the conversion
|
|
739
|
+
# task or the resource being exported.
|
|
740
|
+
#
|
|
741
|
+
# @option options [String] :prefix (nil) The image is written to a
|
|
742
|
+
# single object in the bucket at the key:
|
|
743
|
+
#
|
|
744
|
+
# "#{prefix}#{export_task_id}.#{disk_image_format}"
|
|
745
|
+
#
|
|
746
|
+
# @return [ExportTask]
|
|
747
|
+
#
|
|
748
|
+
def export_to_s3 bucket, options = {}
|
|
749
|
+
|
|
750
|
+
bucket_name = bucket.is_a?(S3::Bucket) ? bucket.name : bucket.to_s
|
|
751
|
+
|
|
752
|
+
opts = {}
|
|
753
|
+
opts[:instance_id] = instance_id
|
|
754
|
+
opts[:description] = options[:description] if options[:description]
|
|
755
|
+
opts[:target_environment] = options[:target_environment] || 'vmware'
|
|
756
|
+
opts[:export_to_s3] = {}
|
|
757
|
+
opts[:export_to_s3][:s3_bucket] = bucket_name
|
|
758
|
+
[:disk_image_format, :container_format, :s3_prefix].each do |opt|
|
|
759
|
+
opts[:export_to_s3][opt] = options[opt] if options.key?(opt)
|
|
760
|
+
end
|
|
761
|
+
|
|
762
|
+
resp = client.create_instance_export_task(opts)
|
|
763
|
+
|
|
764
|
+
ExportTask.new_from(
|
|
765
|
+
:create_instance_export_task,
|
|
766
|
+
resp[:export_task],
|
|
767
|
+
resp[:export_task][:export_task_id],
|
|
768
|
+
:config => config)
|
|
769
|
+
|
|
770
|
+
end
|
|
771
|
+
|
|
772
|
+
protected
|
|
773
|
+
|
|
774
|
+
def find_in_response resp
|
|
775
|
+
resp.instance_index[id]
|
|
776
|
+
end
|
|
777
|
+
|
|
778
|
+
def instance_action name
|
|
779
|
+
client.send("#{name}_instances", :instance_ids => [id])
|
|
780
|
+
nil
|
|
781
|
+
end
|
|
782
|
+
|
|
783
|
+
def get_resource attribute
|
|
784
|
+
if self.class.mutable_describe_attributes.include?(attribute.name)
|
|
785
|
+
describe_attribute_call(attribute)
|
|
786
|
+
else
|
|
787
|
+
describe_call
|
|
788
|
+
end
|
|
789
|
+
end
|
|
790
|
+
|
|
791
|
+
def attributes_from_response_object(obj)
|
|
792
|
+
if atts = super(obj)
|
|
793
|
+
if obj[:instance_state]
|
|
794
|
+
atts[:status] = obj[:instance_state].name.tr("-","_").to_sym
|
|
795
|
+
end
|
|
796
|
+
atts
|
|
797
|
+
end
|
|
798
|
+
end
|
|
799
|
+
|
|
800
|
+
end
|
|
801
|
+
|
|
802
|
+
end
|
|
803
|
+
end
|