fog 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.travis.yml +21 -0
- data/README.md +3 -1
- data/Rakefile +4 -1
- data/changelog.txt +462 -0
- data/docs/storage/index.markdown +4 -4
- data/fog.gemspec +2 -2
- data/lib/fog.rb +1 -1
- data/lib/fog/atmos.rb +11 -0
- data/lib/fog/atmos/models/storage/directories.rb +48 -0
- data/lib/fog/atmos/models/storage/directory.rb +53 -0
- data/lib/fog/atmos/models/storage/file.rb +107 -0
- data/lib/fog/atmos/models/storage/files.rb +73 -0
- data/lib/fog/atmos/requests/storage/delete_namespace.rb +19 -0
- data/lib/fog/atmos/requests/storage/get_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/head_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/post_namespace.rb +20 -0
- data/lib/fog/atmos/requests/storage/put_namespace.rb +20 -0
- data/lib/fog/atmos/storage.rb +186 -0
- data/lib/fog/aws.rb +2 -0
- data/lib/fog/aws/auto_scaling.rb +15 -1
- data/lib/fog/aws/compute.rb +26 -17
- data/lib/fog/aws/elb.rb +14 -2
- data/lib/fog/aws/glacier.rb +172 -0
- data/lib/fog/aws/iam.rb +35 -29
- data/lib/fog/aws/models/auto_scaling/group.rb +1 -1
- data/lib/fog/aws/models/compute/flavors.rb +11 -0
- data/lib/fog/aws/models/compute/security_group.rb +22 -6
- data/lib/fog/aws/models/compute/server.rb +5 -1
- data/lib/fog/aws/models/compute/spot_request.rb +12 -0
- data/lib/fog/aws/models/compute/spot_requests.rb +1 -2
- data/lib/fog/aws/models/compute/volume.rb +7 -1
- data/lib/fog/aws/models/glacier/archive.rb +70 -0
- data/lib/fog/aws/models/glacier/archives.rb +30 -0
- data/lib/fog/aws/models/glacier/job.rb +65 -0
- data/lib/fog/aws/models/glacier/jobs.rb +45 -0
- data/lib/fog/aws/models/glacier/vault.rb +53 -0
- data/lib/fog/aws/models/glacier/vaults.rb +28 -0
- data/lib/fog/aws/models/rds/server.rb +3 -1
- data/lib/fog/aws/models/rds/snapshot.rb +1 -0
- data/lib/fog/aws/models/rds/snapshots.rb +3 -0
- data/lib/fog/aws/models/storage/file.rb +4 -3
- data/lib/fog/aws/parsers/auto_scaling/describe_auto_scaling_groups.rb +8 -1
- data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_instance_status.rb +8 -1
- data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -0
- data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
- data/lib/fog/aws/parsers/compute/run_instances.rb +2 -0
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +1 -1
- data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +3 -1
- data/lib/fog/aws/parsers/rds/db_parser.rb +3 -1
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +1 -0
- data/lib/fog/aws/rds.rb +9 -9
- data/lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb +1 -0
- data/lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb +1 -1
- data/lib/fog/aws/requests/compute/create_volume.rb +53 -14
- data/lib/fog/aws/requests/compute/describe_instance_status.rb +2 -0
- data/lib/fog/aws/requests/compute/describe_instances.rb +3 -1
- data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +13 -7
- data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +1 -0
- data/lib/fog/aws/requests/compute/describe_subnets.rb +13 -7
- data/lib/fog/aws/requests/compute/describe_volumes.rb +2 -0
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +12 -6
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +2 -0
- data/lib/fog/aws/requests/compute/run_instances.rb +8 -2
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +20 -1
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +2 -2
- data/lib/fog/aws/requests/elb/describe_load_balancers.rb +1 -1
- data/lib/fog/aws/requests/glacier/abort_multipart_upload.rb +35 -0
- data/lib/fog/aws/requests/glacier/complete_multipart_upload.rb +42 -0
- data/lib/fog/aws/requests/glacier/create_archive.rb +43 -0
- data/lib/fog/aws/requests/glacier/create_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/delete_archive.rb +35 -0
- data/lib/fog/aws/requests/glacier/delete_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/delete_vault_notification_configuration.rb +33 -0
- data/lib/fog/aws/requests/glacier/describe_job.rb +35 -0
- data/lib/fog/aws/requests/glacier/describe_vault.rb +34 -0
- data/lib/fog/aws/requests/glacier/get_job_output.rb +41 -0
- data/lib/fog/aws/requests/glacier/get_vault_notification_configuration.rb +34 -0
- data/lib/fog/aws/requests/glacier/initiate_job.rb +41 -0
- data/lib/fog/aws/requests/glacier/initiate_multipart_upload.rb +38 -0
- data/lib/fog/aws/requests/glacier/list_jobs.rb +39 -0
- data/lib/fog/aws/requests/glacier/list_multipart_uploads.rb +37 -0
- data/lib/fog/aws/requests/glacier/list_parts.rb +37 -0
- data/lib/fog/aws/requests/glacier/list_vaults.rb +36 -0
- data/lib/fog/aws/requests/glacier/set_vault_notification_configuration.rb +37 -0
- data/lib/fog/aws/requests/glacier/upload_part.rb +46 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +7 -5
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +41 -1
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -10
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +1 -1
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +2 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +7 -6
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +6 -5
- data/lib/fog/aws/requests/storage/get_object.rb +45 -2
- data/lib/fog/aws/requests/storage/upload_part.rb +1 -0
- data/lib/fog/aws/signaturev4.rb +73 -0
- data/lib/fog/aws/sqs.rb +2 -6
- data/lib/fog/bare_metal_cloud/compute.rb +3 -1
- data/lib/fog/bare_metal_cloud/requests/compute/add_server_by_configuration.rb +33 -0
- data/lib/fog/bare_metal_cloud/requests/compute/get_server.rb +17 -12
- data/lib/fog/bare_metal_cloud/requests/compute/list_configurations.rb +27 -0
- data/lib/fog/bare_metal_cloud/requests/compute/list_images.rb +4 -4
- data/lib/fog/bare_metal_cloud/requests/compute/list_plans.rb +7 -7
- data/lib/fog/bare_metal_cloud/requests/compute/list_servers.rb +2 -2
- data/lib/fog/bin.rb +7 -0
- data/lib/fog/bin/atmos.rb +31 -0
- data/lib/fog/bin/aws.rb +4 -0
- data/lib/fog/bin/ecloud.rb +4 -0
- data/lib/fog/bin/rackspace.rb +7 -0
- data/lib/fog/bin/serverlove.rb +31 -0
- data/lib/fog/bluebox/requests/compute/create_block.rb +18 -4
- data/lib/fog/brightbox/compute.rb +52 -0
- data/lib/fog/brightbox/models/compute/cloud_ip.rb +2 -0
- data/lib/fog/brightbox/models/compute/image.rb +1 -0
- data/lib/fog/brightbox/models/compute/server.rb +46 -3
- data/lib/fog/brightbox/requests/compute/create_cloud_ip.rb +3 -3
- data/lib/fog/cloudstack/compute.rb +4 -1
- data/lib/fog/cloudstack/models/compute/images.rb +15 -6
- data/lib/fog/cloudstack/models/compute/job.rb +1 -1
- data/lib/fog/cloudstack/requests/compute/attach_volume.rb +1 -1
- data/lib/fog/cloudstack/requests/compute/register_template.rb +35 -0
- data/lib/fog/compute.rb +15 -3
- data/lib/fog/core/errors.rb +1 -0
- data/lib/fog/core/time.rb +4 -0
- data/lib/fog/dynect/dns.rb +5 -5
- data/lib/fog/ecloud.rb +6 -0
- data/lib/fog/ecloud/compute.rb +3 -1
- data/lib/fog/ecloud/models/compute/ip_addresses.rb +1 -0
- data/lib/fog/ecloud/models/compute/networks.rb +1 -0
- data/lib/fog/ecloud/models/compute/server.rb +31 -1
- data/lib/fog/ecloud/requests/compute/virtual_machine_add_ip.rb +40 -0
- data/lib/fog/ecloud/requests/compute/virtual_machine_upload_file.rb +31 -0
- data/lib/fog/google/models/storage/directory.rb +2 -2
- data/lib/fog/google/models/storage/file.rb +2 -2
- data/lib/fog/google/requests/storage/get_bucket.rb +1 -2
- data/lib/fog/google/requests/storage/put_object.rb +1 -2
- data/lib/fog/google/storage.rb +1 -1
- data/lib/fog/hp/models/compute/image.rb +1 -1
- data/lib/fog/hp/models/compute/server.rb +4 -0
- data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
- data/lib/fog/hp/requests/storage/get_object.rb +8 -2
- data/lib/fog/hp/storage.rb +1 -0
- data/lib/fog/libvirt/models/compute/server.rb +1 -1
- data/lib/fog/libvirt/models/compute/templates/server.xml.erb +1 -1
- data/lib/fog/openstack.rb +7 -0
- data/lib/fog/openstack/compute.rb +4 -1
- data/lib/fog/openstack/models/compute/server.rb +1 -1
- data/lib/fog/openstack/requests/compute/create_server.rb +8 -2
- data/lib/fog/openstack/requests/identity/list_roles_for_user_on_tenant.rb +1 -1
- data/lib/fog/openstack/requests/identity/list_tenants.rb +1 -0
- data/lib/fog/providers.rb +2 -0
- data/lib/fog/rackspace.rb +9 -7
- data/lib/fog/rackspace/block_storage.rb +114 -0
- data/lib/fog/rackspace/compute_v2.rb +123 -0
- data/lib/fog/rackspace/models/block_storage/snapshot.rb +46 -0
- data/lib/fog/rackspace/models/block_storage/snapshots.rb +25 -0
- data/lib/fog/rackspace/models/block_storage/volume.rb +58 -0
- data/lib/fog/rackspace/models/block_storage/volume_type.rb +14 -0
- data/lib/fog/rackspace/models/block_storage/volume_types.rb +25 -0
- data/lib/fog/rackspace/models/block_storage/volumes.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/attachment.rb +34 -0
- data/lib/fog/rackspace/models/compute_v2/attachments.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/flavor.rb +17 -0
- data/lib/fog/rackspace/models/compute_v2/flavors.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/image.rb +30 -0
- data/lib/fog/rackspace/models/compute_v2/images.rb +25 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +147 -0
- data/lib/fog/rackspace/models/compute_v2/servers.rb +25 -0
- data/lib/fog/rackspace/models/storage/directory.rb +3 -3
- data/lib/fog/rackspace/requests/block_storage/create_snapshot.rb +26 -0
- data/lib/fog/rackspace/requests/block_storage/create_volume.rb +27 -0
- data/lib/fog/rackspace/requests/block_storage/delete_snapshot.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/delete_volume.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_snapshot.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_volume.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/get_volume_type.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_snapshots.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_volume_types.rb +15 -0
- data/lib/fog/rackspace/requests/block_storage/list_volumes.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +23 -0
- data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +20 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +28 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_image.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/get_server.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_images.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +15 -0
- data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +22 -0
- data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +20 -0
- data/lib/fog/rackspace/requests/compute_v2/update_server.rb +22 -0
- data/lib/fog/rackspace/requests/storage/delete_object.rb +1 -1
- data/lib/fog/rackspace/requests/storage/get_object_https_url.rb +51 -0
- data/lib/fog/rackspace/requests/storage/post_set_meta_temp_url_key.rb +37 -0
- data/lib/fog/rackspace/storage.rb +4 -0
- data/lib/fog/serverlove.rb +10 -0
- data/lib/fog/serverlove/compute.rb +97 -0
- data/lib/fog/serverlove/models/compute/image.rb +57 -0
- data/lib/fog/serverlove/models/compute/images.rb +26 -0
- data/lib/fog/serverlove/models/compute/server.rb +72 -0
- data/lib/fog/serverlove/models/compute/servers.rb +26 -0
- data/lib/fog/serverlove/requests/compute/create_image.rb +32 -0
- data/lib/fog/serverlove/requests/compute/create_server.rb +34 -0
- data/lib/fog/serverlove/requests/compute/destroy_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/destroy_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_images.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/get_servers.rb +13 -0
- data/lib/fog/serverlove/requests/compute/load_standard_image.rb +13 -0
- data/lib/fog/serverlove/requests/compute/reset_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/shutdown_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/start_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/stop_server.rb +13 -0
- data/lib/fog/serverlove/requests/compute/update_image.rb +15 -0
- data/lib/fog/serverlove/requests/compute/update_server.rb +15 -0
- data/lib/fog/serverlove/util/compute/password_generator.rb +11 -0
- data/lib/fog/storage.rb +3 -0
- data/lib/fog/terremark/models/shared/image.rb +22 -0
- data/lib/fog/terremark/models/shared/images.rb +48 -0
- data/lib/fog/terremark/models/shared/internetservice.rb +67 -0
- data/lib/fog/terremark/models/shared/internetservices.rb +42 -0
- data/lib/fog/terremark/models/shared/nodeservice.rb +52 -0
- data/lib/fog/terremark/models/shared/nodeservices.rb +32 -0
- data/lib/fog/terremark/models/shared/server.rb +114 -15
- data/lib/fog/terremark/models/shared/servers.rb +7 -8
- data/lib/fog/terremark/models/shared/vdc.rb +6 -1
- data/lib/fog/terremark/parsers/shared/get_catalog.rb +7 -2
- data/lib/fog/terremark/parsers/shared/get_keys_list.rb +56 -0
- data/lib/fog/terremark/requests/shared/add_internet_service.rb +10 -9
- data/lib/fog/terremark/requests/shared/add_node_service.rb +10 -12
- data/lib/fog/terremark/requests/shared/configure_vapp.rb +61 -0
- data/lib/fog/terremark/requests/shared/create_internet_service.rb +16 -11
- data/lib/fog/terremark/requests/shared/delete_internet_service.rb +2 -1
- data/lib/fog/terremark/requests/shared/delete_node_service.rb +2 -1
- data/lib/fog/terremark/requests/shared/delete_public_ip.rb +2 -1
- data/lib/fog/terremark/requests/shared/get_internet_services.rb +2 -1
- data/lib/fog/terremark/requests/shared/get_keys_list.rb +36 -0
- data/lib/fog/terremark/requests/shared/get_node_services.rb +2 -1
- data/lib/fog/terremark/requests/shared/instantiate_vapp_template.rb +11 -1
- data/lib/fog/terremark/shared.rb +19 -1
- data/lib/fog/terremark/vcloud.rb +10 -1
- data/lib/fog/vcloud/compute.rb +13 -13
- data/lib/fog/vcloud/models/compute/catalog_items.rb +6 -2
- data/lib/fog/vcloud/models/compute/organizations.rb +1 -2
- data/lib/fog/vcloud/models/compute/server.rb +37 -3
- data/lib/fog/vcloud/models/compute/vapps.rb +1 -1
- data/lib/fog/vcloud/requests/compute/configure_org_network.rb +141 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_cpus.rb +38 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_memory.rb +11 -12
- data/lib/fog/vcloud/requests/compute/configure_vm_password.rb +39 -0
- data/lib/fog/vcloud/requests/compute/undeploy.rb +9 -1
- data/lib/fog/vsphere/requests/compute/vm_reboot.rb +1 -1
- data/tests/atmos/models/storage/file_update_tests.rb +19 -0
- data/tests/atmos/models/storage/nested_directories_tests.rb +23 -0
- data/tests/aws/models/compute/security_group_tests.rb +21 -12
- data/tests/aws/models/dns/records_tests.rb +8 -2
- data/tests/aws/models/glacier/model_tests.rb +47 -0
- data/tests/aws/models/iam/policies_tests.rb +2 -2
- data/tests/aws/models/rds/server_tests.rb +5 -2
- data/tests/aws/models/storage/directory_tests.rb +1 -1
- data/tests/aws/models/storage/file_tests.rb +1 -1
- data/tests/aws/models/storage/files_tests.rb +1 -1
- data/tests/aws/models/storage/url_tests.rb +8 -8
- data/tests/aws/models/storage/version_tests.rb +1 -1
- data/tests/aws/models/storage/versions_tests.rb +1 -1
- data/tests/aws/requests/auto_scaling/auto_scaling_tests.rb +5 -0
- data/tests/aws/requests/auto_scaling/helper.rb +2 -1
- data/tests/aws/requests/compute/instance_tests.rb +17 -23
- data/tests/aws/requests/compute/spot_instance_tests.rb +2 -1
- data/tests/aws/requests/compute/tag_tests.rb +1 -0
- data/tests/aws/requests/compute/volume_tests.rb +45 -4
- data/tests/aws/requests/elb/helper.rb +2 -2
- data/tests/aws/requests/elb/listener_tests.rb +2 -2
- data/tests/aws/requests/elb/load_balancer_tests.rb +1 -1
- data/tests/aws/requests/glacier/archive_tests.rb +13 -0
- data/tests/aws/requests/glacier/multipart_upload_tests.rb +30 -0
- data/tests/aws/requests/glacier/tree_hash_tests.rb +63 -0
- data/tests/aws/requests/glacier/vault_tests.rb +35 -0
- data/tests/aws/requests/rds/helper.rb +11 -5
- data/tests/aws/requests/rds/instance_tests.rb +0 -2
- data/tests/aws/requests/storage/acl_utils_tests.rb +1 -1
- data/tests/aws/requests/storage/bucket_tests.rb +1 -1
- data/tests/aws/requests/storage/multipart_upload_tests.rb +1 -1
- data/tests/aws/requests/storage/object_tests.rb +8 -0
- data/tests/aws/requests/storage/versioning_tests.rb +1 -1
- data/tests/aws/signaturev4_tests.rb +41 -0
- data/tests/brightbox/compute_tests.rb +9 -0
- data/tests/brightbox/requests/compute/helper.rb +21 -6
- data/tests/cloudstack/compute/models/volume_tests.rb +1 -1
- data/tests/cloudstack/requests/volume_tests.rb +1 -1
- data/tests/compute/helper.rb +10 -4
- data/tests/dynect/requests/dns/dns_tests.rb +39 -0
- data/tests/google/requests/storage/bucket_tests.rb +2 -3
- data/tests/google/requests/storage/object_tests.rb +1 -1
- data/tests/helper.rb +10 -3
- data/tests/helpers/formats_helper.rb +4 -2
- data/tests/helpers/formats_helper_tests.rb +9 -0
- data/tests/helpers/mock_helper.rb +6 -1
- data/tests/helpers/model_helper.rb +0 -3
- data/tests/hp/models/compute/address_tests.rb +1 -1
- data/tests/hp/models/compute/addresses_tests.rb +1 -1
- data/tests/hp/models/compute/key_pair_tests.rb +1 -1
- data/tests/hp/models/compute/key_pairs_tests.rb +1 -1
- data/tests/hp/models/compute/security_group_tests.rb +1 -1
- data/tests/hp/models/compute/security_groups_tests.rb +1 -1
- data/tests/hp/requests/cdn/container_tests.rb +1 -1
- data/tests/hp/requests/compute/address_tests.rb +1 -1
- data/tests/hp/requests/compute/flavor_tests.rb +1 -1
- data/tests/hp/requests/compute/image_tests.rb +1 -1
- data/tests/hp/requests/compute/key_pair_tests.rb +1 -1
- data/tests/hp/requests/compute/security_group_rule_tests.rb +1 -1
- data/tests/hp/requests/compute/security_group_tests.rb +1 -1
- data/tests/hp/requests/compute/server_address_tests.rb +1 -1
- data/tests/hp/requests/compute/server_tests.rb +1 -1
- data/tests/hp/requests/storage/container_tests.rb +1 -1
- data/tests/hp/requests/storage/object_tests.rb +1 -1
- data/tests/local/models/file_tests.rb +1 -1
- data/tests/rackspace/models/block_storage/snapshot_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/snapshots_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/volume_tests.rb +27 -0
- data/tests/rackspace/models/block_storage/volume_types_tests.rb +20 -0
- data/tests/rackspace/models/block_storage/volumes_tests.rb +11 -0
- data/tests/rackspace/models/compute_v2/flavors_tests.rb +20 -0
- data/tests/rackspace/models/compute_v2/images_tests.rb +22 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +62 -0
- data/tests/rackspace/models/compute_v2/servers_tests.rb +14 -0
- data/tests/rackspace/requests/block_storage/snapshot_tests.rb +81 -0
- data/tests/rackspace/requests/block_storage/volume_tests.rb +61 -0
- data/tests/rackspace/requests/block_storage/volume_type_tests.rb +31 -0
- data/tests/rackspace/requests/compute_v2/attachment_tests.rb +68 -0
- data/tests/rackspace/requests/compute_v2/flavor_tests.rb +43 -0
- data/tests/rackspace/requests/compute_v2/image_tests.rb +47 -0
- data/tests/rackspace/requests/compute_v2/server_tests.rb +147 -0
- data/tests/rackspace/requests/storage/account_tests.rb +17 -0
- data/tests/rackspace/requests/storage/container_tests.rb +1 -1
- data/tests/rackspace/requests/storage/large_object_tests.rb +1 -1
- data/tests/rackspace/requests/storage/object_tests.rb +41 -2
- data/tests/serverlove/requests/compute/image_tests.rb +57 -0
- data/tests/serverlove/requests/compute/server_tests.rb +85 -0
- data/tests/serverlove/util/compute/password_generator_tests.rb +19 -0
- data/tests/storage/models/directories_tests.rb +1 -1
- data/tests/storage/models/directory_test.rb +1 -1
- data/tests/storage/models/file_tests.rb +1 -1
- data/tests/storage/models/files_tests.rb +1 -1
- metadata +188 -3
@@ -0,0 +1,186 @@
|
|
1
|
+
require 'fog/atmos'
|
2
|
+
require 'fog/storage'
|
3
|
+
|
4
|
+
module Fog
|
5
|
+
module Storage
|
6
|
+
class Atmos < Fog::Service
|
7
|
+
requires :atmos_storage_endpoint,
|
8
|
+
:atmos_storage_secret,
|
9
|
+
:atmos_storage_token
|
10
|
+
recognizes :persistent
|
11
|
+
|
12
|
+
model_path 'fog/atmos/models/storage'
|
13
|
+
model :directory
|
14
|
+
collection :directories
|
15
|
+
model :file
|
16
|
+
collection :files
|
17
|
+
|
18
|
+
request_path 'fog/atmos/requests/storage'
|
19
|
+
# request :delete_container
|
20
|
+
request :get_namespace
|
21
|
+
request :head_namespace
|
22
|
+
request :post_namespace
|
23
|
+
request :put_namespace
|
24
|
+
request :delete_namespace
|
25
|
+
|
26
|
+
module Utils
|
27
|
+
ENDPOINT_REGEX = /(https*):\/\/([a-zA-Z0-9\.\-]+)(:[0-9]+)?(\/.*)?/
|
28
|
+
|
29
|
+
def ssl?
|
30
|
+
protocol = @endpoint.match(ENDPOINT_REGEX)[1]
|
31
|
+
raise ArgumentError, 'Invalid endpoint URL' if protocol.nil?
|
32
|
+
|
33
|
+
return true if protocol == 'https'
|
34
|
+
return false if protocol == 'http'
|
35
|
+
|
36
|
+
raise ArgumentError, "Unknown protocol #{protocol}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def port
|
40
|
+
port = @endpoint.match(ENDPOINT_REGEX)[3]
|
41
|
+
return ssl? ? 443 : 80 if port.nil?
|
42
|
+
port.split(':')[1].to_i
|
43
|
+
end
|
44
|
+
|
45
|
+
def host
|
46
|
+
@endpoint.match(ENDPOINT_REGEX)[2]
|
47
|
+
end
|
48
|
+
|
49
|
+
def api_path
|
50
|
+
@endpoint.match(ENDPOINT_REGEX)[4]
|
51
|
+
end
|
52
|
+
|
53
|
+
def setup_credentials(options)
|
54
|
+
@storage_token = options[:atmos_storage_token]
|
55
|
+
@storage_secret = options[:atmos_storage_secret]
|
56
|
+
@storage_secret_decoded = Base64.decode64(@storage_secret)
|
57
|
+
@endpoint = options[:atmos_storage_endpoint]
|
58
|
+
@prefix = self.ssl? ? 'https' : 'http'
|
59
|
+
@storage_host = self.host
|
60
|
+
@storage_port = self.port
|
61
|
+
@api_path = self.api_path
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
class Mock
|
66
|
+
include Utils
|
67
|
+
|
68
|
+
def initialize(options={})
|
69
|
+
require 'mime/types'
|
70
|
+
setup_credentials(options)
|
71
|
+
end
|
72
|
+
|
73
|
+
def request(options)
|
74
|
+
raise "Atmos Storage mocks not implemented"
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
class Real
|
80
|
+
include Utils
|
81
|
+
|
82
|
+
def initialize(options={})
|
83
|
+
require 'mime/types'
|
84
|
+
|
85
|
+
setup_credentials(options)
|
86
|
+
@connection_options = options[:connection_options] || {}
|
87
|
+
@hmac = Fog::HMAC.new('sha1', @storage_secret_decoded)
|
88
|
+
@persistent = options.fetch(:persistent, false)
|
89
|
+
|
90
|
+
@connection = Fog::Connection.new("#{@prefix}://#{@storage_host}:#{@storage_port}",
|
91
|
+
@persistent, @connection_options)
|
92
|
+
end
|
93
|
+
|
94
|
+
def uid
|
95
|
+
@storage_token#.split('/')[-1]
|
96
|
+
end
|
97
|
+
|
98
|
+
def sign(string)
|
99
|
+
value = @hmac.sign(string)
|
100
|
+
Base64.encode64( value ).chomp()
|
101
|
+
end
|
102
|
+
|
103
|
+
def reload
|
104
|
+
@connection.reset
|
105
|
+
end
|
106
|
+
|
107
|
+
def request(params, &block)
|
108
|
+
req_path = params[:path]
|
109
|
+
# Force set host and port
|
110
|
+
params.merge!({
|
111
|
+
:host => @storage_host,
|
112
|
+
:path => "#{@api_path}/rest/#{params[:path]}",
|
113
|
+
})
|
114
|
+
# Set default method and headers
|
115
|
+
params = {:method => 'GET', :headers => {}}.merge params
|
116
|
+
|
117
|
+
params[:headers]["Content-Type"] ||= "application/octet-stream"
|
118
|
+
|
119
|
+
# Add request date
|
120
|
+
params[:headers]["date"] = Time.now().httpdate()
|
121
|
+
params[:headers]["x-emc-uid"] = @storage_token
|
122
|
+
|
123
|
+
# Build signature string
|
124
|
+
signstring = ""
|
125
|
+
signstring += params[:method]
|
126
|
+
signstring += "\n"
|
127
|
+
signstring += params[:headers]["Content-Type"]
|
128
|
+
signstring += "\n"
|
129
|
+
if( params[:headers]["range"] )
|
130
|
+
signstring += params[:headers]["range"]
|
131
|
+
end
|
132
|
+
signstring += "\n"
|
133
|
+
signstring += params[:headers]["date"]
|
134
|
+
signstring += "\n"
|
135
|
+
|
136
|
+
signstring += "/rest/" + URI.unescape( req_path ).downcase
|
137
|
+
query_str = params[:query].map{|k,v| "#{k}=#{v}"}.join('&')
|
138
|
+
signstring += '?' + query_str unless query_str.empty?
|
139
|
+
signstring += "\n"
|
140
|
+
|
141
|
+
customheaders = {}
|
142
|
+
params[:headers].each { |key,value|
|
143
|
+
case key
|
144
|
+
when 'x-emc-date', 'x-emc-signature'
|
145
|
+
#skip
|
146
|
+
when /^x-emc-/
|
147
|
+
customheaders[ key.downcase ] = value
|
148
|
+
end
|
149
|
+
}
|
150
|
+
header_arr = customheaders.sort()
|
151
|
+
|
152
|
+
header_arr.each { |key,value|
|
153
|
+
# Values are lowercase and whitespace-normalized
|
154
|
+
signstring += key + ":" + value.strip.chomp.squeeze( " " ) + "\n"
|
155
|
+
}
|
156
|
+
|
157
|
+
digest = @hmac.sign(signstring.chomp())
|
158
|
+
signature = Base64.encode64( digest ).chomp()
|
159
|
+
params[:headers]["x-emc-signature"] = signature
|
160
|
+
|
161
|
+
begin
|
162
|
+
response = @connection.request(params, &block)
|
163
|
+
rescue Excon::Errors::HTTPStatusError => error
|
164
|
+
raise case error
|
165
|
+
when Excon::Errors::NotFound
|
166
|
+
Fog::Storage::Atmos::NotFound.slurp(error)
|
167
|
+
else
|
168
|
+
error
|
169
|
+
end
|
170
|
+
end
|
171
|
+
unless response.body.empty?
|
172
|
+
if params[:parse]
|
173
|
+
document = Fog::ToHashDocument.new
|
174
|
+
parser = Nokogiri::XML::SAX::PushParser.new(document)
|
175
|
+
parser << response.body
|
176
|
+
parser.finish
|
177
|
+
response.body = document.body
|
178
|
+
end
|
179
|
+
end
|
180
|
+
response
|
181
|
+
end
|
182
|
+
|
183
|
+
end
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
data/lib/fog/aws.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'fog/core'
|
2
2
|
require 'fog/aws/credential_fetcher'
|
3
|
+
require 'fog/aws/signaturev4'
|
3
4
|
module Fog
|
4
5
|
module AWS
|
5
6
|
|
@@ -16,6 +17,7 @@ module Fog
|
|
16
17
|
service(:elasticache, 'aws/elasticache', 'Elasticache')
|
17
18
|
service(:elb, 'aws/elb', 'ELB')
|
18
19
|
service(:emr, 'aws/emr', 'EMR')
|
20
|
+
service(:glacier, 'aws/glacier', 'Glacier')
|
19
21
|
service(:iam, 'aws/iam', 'IAM')
|
20
22
|
service(:rds, 'aws/rds', 'RDS')
|
21
23
|
service(:ses, 'aws/ses', 'SES')
|
data/lib/fog/aws/auto_scaling.rb
CHANGED
@@ -10,7 +10,7 @@ module Fog
|
|
10
10
|
class ValidationError < Fog::Errors::Error; end
|
11
11
|
|
12
12
|
requires :aws_access_key_id, :aws_secret_access_key
|
13
|
-
recognizes :host, :path, :port, :scheme, :persistent, :region, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at
|
13
|
+
recognizes :host, :path, :port, :scheme, :persistent, :region, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
|
14
14
|
|
15
15
|
request_path 'fog/aws/requests/auto_scaling'
|
16
16
|
request :create_auto_scaling_group
|
@@ -79,6 +79,10 @@ module Fog
|
|
79
79
|
setup_credentials(options)
|
80
80
|
|
81
81
|
@connection_options = options[:connection_options] || {}
|
82
|
+
|
83
|
+
@instrumentor = options[:instrumentor]
|
84
|
+
@instrumentor_name = options[:instrumentor_name] || 'fog.aws.auto_scaling'
|
85
|
+
|
82
86
|
options[:region] ||= 'us-east-1'
|
83
87
|
@host = options[:host] || "autoscaling.#{options[:region]}.amazonaws.com"
|
84
88
|
@path = options[:path] || '/'
|
@@ -113,6 +117,16 @@ module Fog
|
|
113
117
|
}
|
114
118
|
)
|
115
119
|
|
120
|
+
if @instrumentor
|
121
|
+
@instrumentor.instrument("#{@instrumentor_name}.request", params) do
|
122
|
+
_request(body, idempotent, parser)
|
123
|
+
end
|
124
|
+
else
|
125
|
+
_request(body, idempotent, parser)
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def _request(body, idempotent, parser)
|
116
130
|
begin
|
117
131
|
response = @connection.request({
|
118
132
|
:body => body,
|
data/lib/fog/aws/compute.rb
CHANGED
@@ -7,7 +7,7 @@ module Fog
|
|
7
7
|
extend Fog::AWS::CredentialFetcher::ServiceMethods
|
8
8
|
|
9
9
|
requires :aws_access_key_id, :aws_secret_access_key
|
10
|
-
recognizes :endpoint, :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at
|
10
|
+
recognizes :endpoint, :region, :host, :path, :port, :scheme, :persistent, :aws_session_token, :use_iam_profile, :aws_credentials_expire_at, :instrumentor, :instrumentor_name, :version
|
11
11
|
|
12
12
|
secrets :aws_secret_access_key, :hmac, :aws_session_token
|
13
13
|
|
@@ -315,6 +315,9 @@ module Fog
|
|
315
315
|
setup_credentials(options)
|
316
316
|
@connection_options = options[:connection_options] || {}
|
317
317
|
@region = options[:region] ||= 'us-east-1'
|
318
|
+
@instrumentor = options[:instrumentor]
|
319
|
+
@instrumentor_name = options[:instrumentor_name] || 'fog.aws.compute'
|
320
|
+
@version = options[:version] || '2012-07-20'
|
318
321
|
|
319
322
|
if @endpoint = options[:endpoint]
|
320
323
|
endpoint = URI.parse(@endpoint)
|
@@ -360,12 +363,21 @@ module Fog
|
|
360
363
|
:host => @host,
|
361
364
|
:path => @path,
|
362
365
|
:port => @port,
|
363
|
-
:version =>
|
366
|
+
:version => @version
|
364
367
|
}
|
365
368
|
)
|
366
369
|
|
367
|
-
|
368
|
-
|
370
|
+
if @instrumentor
|
371
|
+
@instrumentor.instrument("#{@instrumentor_name}.request", params) do
|
372
|
+
_request(body, idempotent, parser)
|
373
|
+
end
|
374
|
+
else
|
375
|
+
_request(body, idempotent, parser)
|
376
|
+
end
|
377
|
+
end
|
378
|
+
|
379
|
+
def _request(body, idempotent, parser)
|
380
|
+
@connection.request({
|
369
381
|
:body => body,
|
370
382
|
:expects => 200,
|
371
383
|
:headers => { 'Content-Type' => 'application/x-www-form-urlencoded' },
|
@@ -374,20 +386,17 @@ module Fog
|
|
374
386
|
:method => 'POST',
|
375
387
|
:parser => parser
|
376
388
|
})
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
end
|
389
|
+
rescue Excon::Errors::HTTPStatusError => error
|
390
|
+
if match = error.message.match(/<Code>(.*)<\/Code><Message>(.*)<\/Message>/)
|
391
|
+
raise case match[1].split('.').last
|
392
|
+
when 'NotFound', 'Unknown'
|
393
|
+
Fog::Compute::AWS::NotFound.slurp(error, match[2])
|
394
|
+
else
|
395
|
+
Fog::Compute::AWS::Error.slurp(error, "#{match[1]} => #{match[2]}")
|
396
|
+
end
|
397
|
+
else
|
398
|
+
raise error
|
388
399
|
end
|
389
|
-
|
390
|
-
response
|
391
400
|
end
|
392
401
|
|
393
402
|
end
|
data/lib/fog/aws/elb.rb
CHANGED
@@ -16,7 +16,7 @@ module Fog
|
|
16
16
|
class ValidationError < Fog::Errors::Error; end
|
17
17
|
|
18
18
|
requires :aws_access_key_id, :aws_secret_access_key
|
19
|
-
recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at
|
19
|
+
recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at, :instrumentor, :instrumentor_name
|
20
20
|
|
21
21
|
request_path 'fog/aws/requests/elb'
|
22
22
|
request :configure_health_check
|
@@ -125,7 +125,9 @@ module Fog
|
|
125
125
|
@use_iam_profile = options[:use_iam_profile]
|
126
126
|
setup_credentials(options)
|
127
127
|
@connection_options = options[:connection_options] || {}
|
128
|
-
|
128
|
+
@instrumentor = options[:instrumentor]
|
129
|
+
@instrumentor_name = options[:instrumentor_name] || 'fog.aws.elb'
|
130
|
+
|
129
131
|
options[:region] ||= 'us-east-1'
|
130
132
|
@host = options[:host] || "elasticloadbalancing.#{options[:region]}.amazonaws.com"
|
131
133
|
@path = options[:path] || '/'
|
@@ -169,6 +171,16 @@ module Fog
|
|
169
171
|
}
|
170
172
|
)
|
171
173
|
|
174
|
+
if @instrumentor
|
175
|
+
@instrumentor.instrument("#{@instrumentor_name}.request", params) do
|
176
|
+
_request(body, idempotent, parser)
|
177
|
+
end
|
178
|
+
else
|
179
|
+
_request(body, idempotent, parser)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
|
183
|
+
def _request(body, idempotent, parser)
|
172
184
|
@connection.request({
|
173
185
|
:body => body,
|
174
186
|
:expects => 200,
|
@@ -0,0 +1,172 @@
|
|
1
|
+
require 'fog/aws'
|
2
|
+
|
3
|
+
module Fog
|
4
|
+
module AWS
|
5
|
+
class Glacier < Fog::Service
|
6
|
+
extend Fog::AWS::CredentialFetcher::ServiceMethods
|
7
|
+
|
8
|
+
requires :aws_access_key_id, :aws_secret_access_key
|
9
|
+
recognizes :region, :host, :path, :port, :scheme, :persistent, :use_iam_profile, :aws_session_token, :aws_credentials_expire_at
|
10
|
+
|
11
|
+
request_path 'fog/aws/requests/glacier'
|
12
|
+
|
13
|
+
request :abort_multipart_upload
|
14
|
+
request :complete_multipart_upload
|
15
|
+
request :create_archive
|
16
|
+
request :create_vault
|
17
|
+
request :delete_archive
|
18
|
+
request :delete_vault
|
19
|
+
request :delete_vault_notification_configuration
|
20
|
+
request :describe_job
|
21
|
+
request :describe_vault
|
22
|
+
request :get_job_output
|
23
|
+
request :get_vault_notification_configuration
|
24
|
+
request :initiate_job
|
25
|
+
request :initiate_multipart_upload
|
26
|
+
request :list_jobs
|
27
|
+
request :list_multipart_uploads
|
28
|
+
request :list_parts
|
29
|
+
request :list_vaults
|
30
|
+
request :set_vault_notification_configuration
|
31
|
+
request :upload_part
|
32
|
+
|
33
|
+
model_path 'fog/aws/models/glacier'
|
34
|
+
model :vault
|
35
|
+
collection :vaults
|
36
|
+
|
37
|
+
MEGABYTE = 1024*1024
|
38
|
+
|
39
|
+
class TreeHash
|
40
|
+
|
41
|
+
def self.digest(body)
|
42
|
+
new.add_part(body)
|
43
|
+
end
|
44
|
+
|
45
|
+
def reduce_digests(digests)
|
46
|
+
while digests.length > 1
|
47
|
+
digests = digests.each_slice(2).collect do |pair|
|
48
|
+
if pair.length == 2
|
49
|
+
Digest::SHA256.digest(pair[0]+pair[1])
|
50
|
+
else
|
51
|
+
pair.first
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
digests.first
|
56
|
+
end
|
57
|
+
|
58
|
+
def initialize
|
59
|
+
@digests = []
|
60
|
+
end
|
61
|
+
|
62
|
+
def add_part(bytes)
|
63
|
+
part = self.digest_for_part(bytes)
|
64
|
+
@digests << part
|
65
|
+
part.unpack('H*').first
|
66
|
+
end
|
67
|
+
|
68
|
+
def digest_for_part(body)
|
69
|
+
chunk_count = [body.bytesize / MEGABYTE + (body.bytesize % MEGABYTE > 0 ? 1 : 0), 1].max
|
70
|
+
if body.respond_to? :byteslice
|
71
|
+
digests_for_part = chunk_count.times.collect {|chunk_index| Digest::SHA256.digest(body.byteslice(chunk_index * MEGABYTE, MEGABYTE))}
|
72
|
+
else
|
73
|
+
if body.respond_to? :encoding
|
74
|
+
old_encoding = body.encoding
|
75
|
+
body.force_encoding('BINARY')
|
76
|
+
end
|
77
|
+
digests_for_part = chunk_count.times.collect {|chunk_index| Digest::SHA256.digest(body.slice(chunk_index * MEGABYTE, MEGABYTE))}
|
78
|
+
if body.respond_to? :encoding
|
79
|
+
body.force_encoding(old_encoding)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
reduce_digests(digests_for_part)
|
83
|
+
end
|
84
|
+
|
85
|
+
def hexdigest
|
86
|
+
digest.unpack('H*').first
|
87
|
+
end
|
88
|
+
|
89
|
+
def digest
|
90
|
+
reduce_digests(@digests)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
class Mock
|
95
|
+
|
96
|
+
def initialize(options={})
|
97
|
+
Fog::Mock.not_implemented
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
class Real
|
103
|
+
include Fog::AWS::CredentialFetcher::ConnectionMethods
|
104
|
+
# Initialize connection to Glacier
|
105
|
+
#
|
106
|
+
# ==== Notes
|
107
|
+
# options parameter must include values for :aws_access_key_id and
|
108
|
+
# :aws_secret_access_key in order to create a connection
|
109
|
+
#
|
110
|
+
# ==== Examples
|
111
|
+
# ses = SES.new(
|
112
|
+
# :aws_access_key_id => your_aws_access_key_id,
|
113
|
+
# :aws_secret_access_key => your_aws_secret_access_key
|
114
|
+
# )
|
115
|
+
#
|
116
|
+
# ==== Parameters
|
117
|
+
# * options<~Hash> - config arguments for connection. Defaults to {}.
|
118
|
+
# * region<~String> - optional region to use. For instance, 'us-east-1' and etc.
|
119
|
+
#
|
120
|
+
# ==== Returns
|
121
|
+
# * Glacier object with connection to AWS.
|
122
|
+
def initialize(options={})
|
123
|
+
|
124
|
+
@use_iam_profile = options[:use_iam_profile]
|
125
|
+
@region = options[:region] || 'us-east-1'
|
126
|
+
|
127
|
+
setup_credentials(options)
|
128
|
+
|
129
|
+
@connection_options = options[:connection_options] || {}
|
130
|
+
@host = options[:host] || "glacier.#{@region}.amazonaws.com"
|
131
|
+
@version = '2012-06-01'
|
132
|
+
@path = options[:path] || '/'
|
133
|
+
@persistent = options[:persistent] || false
|
134
|
+
@port = options[:port] || 443
|
135
|
+
@scheme = options[:scheme] || 'https'
|
136
|
+
|
137
|
+
@connection = Fog::Connection.new("#{@scheme}://#{@host}:#{@port}#{@path}", @persistent, @connection_options)
|
138
|
+
end
|
139
|
+
|
140
|
+
|
141
|
+
private
|
142
|
+
def setup_credentials(options)
|
143
|
+
@aws_access_key_id = options[:aws_access_key_id]
|
144
|
+
@aws_secret_access_key = options[:aws_secret_access_key]
|
145
|
+
@aws_session_token = options[:aws_session_token]
|
146
|
+
@aws_credentials_expire_at = options[:aws_credentials_expire_at]
|
147
|
+
|
148
|
+
@signer = Fog::AWS::SignatureV4.new( @aws_access_key_id, @aws_secret_access_key,@region,'glacier')
|
149
|
+
end
|
150
|
+
|
151
|
+
def request(params, &block)
|
152
|
+
refresh_credentials_if_expired
|
153
|
+
|
154
|
+
date = Fog::Time.now
|
155
|
+
params[:headers]['Date'] = date.to_date_header
|
156
|
+
params[:headers]['x-amz-date'] = date.to_iso8601_basic
|
157
|
+
|
158
|
+
params[:headers]['Host'] = @host
|
159
|
+
params[:headers]['x-amz-glacier-version'] = @version
|
160
|
+
params[:headers]['x-amz-security-token'] = @aws_session_token if @aws_session_token
|
161
|
+
params[:headers]['Authorization'] = @signer.sign params, date
|
162
|
+
|
163
|
+
response = @connection.request(params, &block)
|
164
|
+
if response.headers['Content-Type'] == 'application/json' && response.body.size > 0 #body will be empty if the streaming form has been used
|
165
|
+
response.body = Fog::JSON.decode(response.body)
|
166
|
+
end
|
167
|
+
response
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|