fog 1.9.0 → 1.10.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/Gemfile +1 -1
- data/README.md +1 -1
- data/changelog.txt +743 -0
- data/fog.gemspec +3 -5
- data/lib/fog/aws.rb +1 -0
- data/lib/fog/aws/credential_fetcher.rb +1 -1
- data/lib/fog/aws/data_pipeline.rb +114 -0
- data/lib/fog/aws/dynamodb.rb +1 -1
- data/lib/fog/aws/models/compute/flavors.rb +1 -1
- data/lib/fog/aws/models/compute/spot_request.rb +2 -0
- data/lib/fog/aws/models/data_pipeline/pipeline.rb +67 -0
- data/lib/fog/aws/models/data_pipeline/pipelines.rb +36 -0
- data/lib/fog/aws/parsers/cloud_watch/list_metrics.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_instances.rb +1 -1
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -0
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +1 -0
- data/lib/fog/aws/requests/data_pipeline/activate_pipeline.rb +35 -0
- data/lib/fog/aws/requests/data_pipeline/create_pipeline.rb +41 -0
- data/lib/fog/aws/requests/data_pipeline/delete_pipeline.rb +35 -0
- data/lib/fog/aws/requests/data_pipeline/describe_pipelines.rb +36 -0
- data/lib/fog/aws/requests/data_pipeline/list_pipelines.rb +36 -0
- data/lib/fog/aws/requests/data_pipeline/put_pipeline_definition.rb +72 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +8 -9
- data/lib/fog/aws/requests/storage/get_service.rb +1 -2
- data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
- data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
- data/lib/fog/aws/storage.rb +1 -1
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/aws.rb +4 -0
- data/lib/fog/bin/bluebox.rb +2 -0
- data/lib/fog/bin/dreamhost.rb +31 -0
- data/lib/fog/bin/hp.rb +7 -0
- data/lib/fog/bin/internet_archive.rb +34 -0
- data/lib/fog/bin/openstack.rb +17 -2
- data/lib/fog/bluebox.rb +1 -0
- data/lib/fog/bluebox/blb.rb +85 -0
- data/lib/fog/bluebox/models/blb/lb_application.rb +32 -0
- data/lib/fog/bluebox/models/blb/lb_applications.rb +26 -0
- data/lib/fog/bluebox/models/blb/lb_backend.rb +22 -0
- data/lib/fog/bluebox/models/blb/lb_backends.rb +30 -0
- data/lib/fog/bluebox/models/blb/lb_service.rb +35 -0
- data/lib/fog/bluebox/models/blb/lb_services.rb +29 -0
- data/lib/fog/bluebox/requests/blb/add_machine_to_lb_application.rb +33 -0
- data/lib/fog/bluebox/requests/blb/add_machine_to_lb_backend.rb +31 -0
- data/lib/fog/bluebox/requests/blb/get_lb_application.rb +33 -0
- data/lib/fog/bluebox/requests/blb/get_lb_applications.rb +31 -0
- data/lib/fog/bluebox/requests/blb/get_lb_backend.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_backends.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_machine.rb +35 -0
- data/lib/fog/bluebox/requests/blb/get_lb_machines.rb +35 -0
- data/lib/fog/bluebox/requests/blb/get_lb_service.rb +36 -0
- data/lib/fog/bluebox/requests/blb/get_lb_services.rb +36 -0
- data/lib/fog/bluebox/requests/blb/remove_machine_from_lb_backend.rb +28 -0
- data/lib/fog/bluebox/requests/blb/update_lb_backend_machine.rb +29 -0
- data/lib/fog/brightbox/compute.rb +1 -0
- data/lib/fog/brightbox/requests/compute/create_firewall_policy.rb +1 -0
- data/lib/fog/brightbox/requests/compute/update_firewall_policy.rb +25 -0
- data/lib/fog/brightbox/requests/compute/update_server.rb +1 -0
- data/lib/fog/cdn.rb +5 -12
- data/lib/fog/compute.rb +7 -68
- data/lib/fog/core/errors.rb +5 -1
- data/lib/fog/core/scp.rb +1 -0
- data/lib/fog/core/ssh.rb +1 -0
- data/lib/fog/dns.rb +7 -27
- data/lib/fog/dreamhost.rb +11 -0
- data/lib/fog/dreamhost/dns.rb +86 -0
- data/lib/fog/dreamhost/examples/dns/getting_started.md +105 -0
- data/lib/fog/dreamhost/models/dns/record.rb +35 -0
- data/lib/fog/dreamhost/models/dns/records.rb +38 -0
- data/lib/fog/dreamhost/models/dns/zone.rb +59 -0
- data/lib/fog/dreamhost/models/dns/zones.rb +41 -0
- data/lib/fog/dreamhost/requests/dns/create_record.rb +32 -0
- data/lib/fog/dreamhost/requests/dns/delete_record.rb +31 -0
- data/lib/fog/dreamhost/requests/dns/list_records.rb +25 -0
- data/lib/fog/ecloud/models/compute/detached_disks.rb +1 -5
- data/lib/fog/ecloud/models/compute/internet_services.rb +1 -5
- data/lib/fog/ecloud/models/compute/nodes.rb +1 -5
- data/lib/fog/ecloud/models/compute/public_ips.rb +1 -5
- data/lib/fog/ecloud/models/compute/servers.rb +2 -6
- data/lib/fog/ecloud/requests/compute/get_detached_disk.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_internet_service.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_node.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_public_ip.rb +1 -1
- data/lib/fog/ecloud/requests/compute/get_server.rb +1 -1
- data/lib/fog/ecloud/requests/compute/virtual_machine_create_from_template.rb +1 -1
- data/lib/fog/glesys/compute.rb +5 -1
- data/lib/fog/glesys/models/compute/ip.rb +47 -46
- data/lib/fog/glesys/models/compute/ips.rb +95 -12
- data/lib/fog/glesys/models/compute/server.rb +66 -5
- data/lib/fog/glesys/models/compute/servers.rb +7 -1
- data/lib/fog/glesys/models/compute/template.rb +8 -16
- data/lib/fog/glesys/models/compute/templates.rb +23 -5
- data/lib/fog/glesys/requests/compute/ip_details.rb +2 -2
- data/lib/fog/glesys/requests/compute/server_details.rb +2 -2
- data/lib/fog/glesys/requests/compute/template_list.rb +2 -2
- data/lib/fog/hp.rb +56 -26
- data/lib/fog/hp/CHANGELOG.hp +113 -0
- data/lib/fog/hp/README_HP.rdoc +7 -6
- data/lib/fog/hp/block_storage.rb +169 -0
- data/lib/fog/hp/cdn.rb +29 -7
- data/lib/fog/hp/compute.rb +88 -17
- data/lib/fog/hp/models/block_storage/bootable_volumes.rb +28 -0
- data/lib/fog/hp/models/block_storage/snapshot.rb +56 -0
- data/lib/fog/hp/models/block_storage/snapshots.rb +29 -0
- data/lib/fog/hp/models/block_storage/volume.rb +102 -0
- data/lib/fog/hp/models/block_storage/volumes.rb +28 -0
- data/lib/fog/hp/models/compute/address.rb +0 -1
- data/lib/fog/hp/models/compute/image.rb +43 -4
- data/lib/fog/hp/models/compute/images.rb +0 -5
- data/lib/fog/hp/models/compute/key_pair.rb +0 -5
- data/lib/fog/hp/models/compute/meta.rb +29 -0
- data/lib/fog/hp/models/compute/metadata.rb +79 -0
- data/lib/fog/hp/models/compute/server.rb +84 -20
- data/lib/fog/hp/models/meta_parent.rb +33 -0
- data/lib/fog/hp/models/storage/directories.rb +34 -9
- data/lib/fog/hp/models/storage/directory.rb +111 -26
- data/lib/fog/hp/models/storage/file.rb +10 -0
- data/lib/fog/hp/models/storage/files.rb +8 -0
- data/lib/fog/hp/models/storage/shared_directories.rb +55 -0
- data/lib/fog/hp/models/storage/shared_directory.rb +39 -0
- data/lib/fog/hp/models/storage/shared_file.rb +67 -0
- data/lib/fog/hp/models/storage/shared_files.rb +64 -0
- data/lib/fog/hp/requests/block_storage/create_snapshot.rb +76 -0
- data/lib/fog/hp/requests/block_storage/create_volume.rb +87 -0
- data/lib/fog/hp/requests/block_storage/delete_snapshot.rb +38 -0
- data/lib/fog/hp/requests/block_storage/delete_volume.rb +38 -0
- data/lib/fog/hp/requests/block_storage/get_bootable_volume_details.rb +59 -0
- data/lib/fog/hp/requests/block_storage/get_snapshot_details.rb +54 -0
- data/lib/fog/hp/requests/block_storage/get_volume_details.rb +58 -0
- data/lib/fog/hp/requests/block_storage/list_bootable_volumes.rb +53 -0
- data/lib/fog/hp/requests/block_storage/list_snapshots.rb +48 -0
- data/lib/fog/hp/requests/block_storage/list_volumes.rb +52 -0
- data/lib/fog/hp/requests/compute/attach_volume.rb +78 -0
- data/lib/fog/hp/requests/compute/create_image.rb +5 -8
- data/lib/fog/hp/requests/compute/create_persistent_server.rb +168 -0
- data/lib/fog/hp/requests/compute/create_server.rb +36 -20
- data/lib/fog/hp/requests/compute/delete_meta.rb +55 -0
- data/lib/fog/hp/requests/compute/delete_security_group_rule.rb +4 -4
- data/lib/fog/hp/requests/compute/detach_volume.rb +47 -0
- data/lib/fog/hp/requests/compute/get_console_output.rb +43 -0
- data/lib/fog/hp/requests/compute/get_meta.rb +57 -0
- data/lib/fog/hp/requests/compute/get_windows_password.rb +43 -0
- data/lib/fog/hp/requests/compute/list_metadata.rb +56 -0
- data/lib/fog/hp/requests/compute/list_server_volumes.rb +49 -0
- data/lib/fog/hp/requests/compute/set_metadata.rb +60 -0
- data/lib/fog/hp/requests/compute/update_meta.rb +61 -0
- data/lib/fog/hp/requests/compute/update_metadata.rb +60 -0
- data/lib/fog/hp/requests/storage/delete_shared_object.rb +38 -0
- data/lib/fog/hp/requests/storage/get_object.rb +12 -10
- data/lib/fog/hp/requests/storage/get_object_temp_url.rb +31 -0
- data/lib/fog/hp/requests/storage/get_shared_container.rb +75 -0
- data/lib/fog/hp/requests/storage/get_shared_object.rb +66 -0
- data/lib/fog/hp/requests/storage/head_container.rb +1 -0
- data/lib/fog/hp/requests/storage/head_object.rb +1 -0
- data/lib/fog/hp/requests/storage/head_shared_container.rb +45 -0
- data/lib/fog/hp/requests/storage/head_shared_object.rb +39 -0
- data/lib/fog/hp/requests/storage/put_container.rb +6 -6
- data/lib/fog/hp/requests/storage/put_object.rb +12 -1
- data/lib/fog/hp/requests/storage/put_shared_object.rb +85 -0
- data/lib/fog/hp/storage.rb +175 -33
- data/lib/fog/identity.rb +5 -4
- data/lib/fog/image.rb +5 -6
- data/lib/fog/internet_archive.rb +290 -0
- data/lib/fog/internet_archive/models/storage/directories.rb +43 -0
- data/lib/fog/internet_archive/models/storage/directory.rb +126 -0
- data/lib/fog/internet_archive/models/storage/file.rb +286 -0
- data/lib/fog/internet_archive/models/storage/files.rb +122 -0
- data/lib/fog/internet_archive/models/storage/version.rb +36 -0
- data/lib/fog/internet_archive/models/storage/versions.rb +38 -0
- data/lib/fog/internet_archive/parsers/storage/access_control_list.rb +46 -0
- data/lib/fog/internet_archive/parsers/storage/complete_multipart_upload.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/copy_object.rb +22 -0
- data/lib/fog/internet_archive/parsers/storage/cors_configuration.rb +41 -0
- data/lib/fog/internet_archive/parsers/storage/delete_multiple_objects.rb +50 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket.rb +62 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_lifecycle.rb +66 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_location.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_logging.rb +40 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_object_versions.rb +88 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_versioning.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/get_bucket_website.rb +26 -0
- data/lib/fog/internet_archive/parsers/storage/get_request_payment.rb +20 -0
- data/lib/fog/internet_archive/parsers/storage/get_service.rb +32 -0
- data/lib/fog/internet_archive/parsers/storage/initiate_multipart_upload.rb +24 -0
- data/lib/fog/internet_archive/parsers/storage/list_multipart_uploads.rb +56 -0
- data/lib/fog/internet_archive/parsers/storage/list_parts.rb +40 -0
- data/lib/fog/internet_archive/requests/storage/abort_multipart_upload.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/acl_utils.rb +62 -0
- data/lib/fog/internet_archive/requests/storage/complete_multipart_upload.rb +48 -0
- data/lib/fog/internet_archive/requests/storage/copy_object.rb +81 -0
- data/lib/fog/internet_archive/requests/storage/cors_utils.rb +41 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_cors.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_lifecycle.rb +27 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_policy.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_bucket_website.rb +29 -0
- data/lib/fog/internet_archive/requests/storage/delete_multiple_objects.rb +167 -0
- data/lib/fog/internet_archive/requests/storage/delete_object.rb +118 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket.rb +112 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_acl.rb +69 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_cors.rb +65 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_lifecycle.rb +38 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_location.rb +58 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_logging.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_object_versions.rb +162 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_policy.rb +34 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_versioning.rb +69 -0
- data/lib/fog/internet_archive/requests/storage/get_bucket_website.rb +40 -0
- data/lib/fog/internet_archive/requests/storage/get_object.rb +188 -0
- data/lib/fog/internet_archive/requests/storage/get_object_acl.rb +80 -0
- data/lib/fog/internet_archive/requests/storage/get_object_http_url.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/get_object_https_url.rb +37 -0
- data/lib/fog/internet_archive/requests/storage/get_object_torrent.rb +47 -0
- data/lib/fog/internet_archive/requests/storage/get_object_url.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/get_request_payment.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/get_service.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/head_object.rb +66 -0
- data/lib/fog/internet_archive/requests/storage/initiate_multipart_upload.rb +44 -0
- data/lib/fog/internet_archive/requests/storage/list_multipart_uploads.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/list_parts.rb +55 -0
- data/lib/fog/internet_archive/requests/storage/post_object_hidden_fields.rb +38 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket.rb +74 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_acl.rb +71 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_cors.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_lifecycle.rb +77 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_logging.rb +81 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_policy.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_versioning.rb +75 -0
- data/lib/fog/internet_archive/requests/storage/put_bucket_website.rb +64 -0
- data/lib/fog/internet_archive/requests/storage/put_object.rb +113 -0
- data/lib/fog/internet_archive/requests/storage/put_object_acl.rb +80 -0
- data/lib/fog/internet_archive/requests/storage/put_object_url.rb +48 -0
- data/lib/fog/internet_archive/requests/storage/put_request_payment.rb +49 -0
- data/lib/fog/internet_archive/requests/storage/sync_clock.rb +28 -0
- data/lib/fog/internet_archive/requests/storage/upload_part.rb +41 -0
- data/lib/fog/internet_archive/signaturev4.rb +73 -0
- data/lib/fog/internet_archive/storage.rb +402 -0
- data/lib/fog/joyent/models/compute/server.rb +1 -1
- data/lib/fog/joyent/requests/compute/resize_machine.rb +2 -0
- data/lib/fog/libvirt/models/compute/volume.rb +1 -1
- data/lib/fog/network.rb +5 -6
- data/lib/fog/openstack.rb +10 -0
- data/lib/fog/openstack/compute.rb +11 -4
- data/lib/fog/openstack/identity.rb +5 -2
- data/lib/fog/openstack/models/compute/images.rb +2 -1
- data/lib/fog/openstack/models/compute/metadata.rb +4 -5
- data/lib/fog/openstack/models/compute/server.rb +36 -21
- data/lib/fog/openstack/models/identity/role.rb +1 -1
- data/lib/fog/openstack/models/network/floating_ip.rb +1 -1
- data/lib/fog/openstack/models/network/floating_ips.rb +2 -2
- data/lib/fog/openstack/models/network/network.rb +8 -0
- data/lib/fog/openstack/models/storage/directories.rb +39 -0
- data/lib/fog/openstack/models/storage/directory.rb +50 -0
- data/lib/fog/openstack/models/storage/file.rb +150 -0
- data/lib/fog/openstack/models/storage/files.rb +94 -0
- data/lib/fog/openstack/requests/compute/allocate_address.rb +1 -1
- data/lib/fog/openstack/requests/compute/delete_meta.rb +43 -0
- data/lib/fog/openstack/requests/compute/get_limits.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_snapshot_details.rb +1 -1
- data/lib/fog/openstack/requests/compute/get_volume_details.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_servers.rb +1 -1
- data/lib/fog/openstack/requests/compute/list_tenants.rb +1 -0
- data/lib/fog/openstack/requests/compute/remove_fixed_ip.rb +1 -1
- data/lib/fog/openstack/requests/compute/update_meta.rb +46 -0
- data/lib/fog/openstack/requests/compute/update_server.rb +1 -1
- data/lib/fog/openstack/requests/identity/delete_user_role.rb +2 -2
- data/lib/fog/openstack/requests/identity/get_user_by_name.rb +2 -2
- data/lib/fog/openstack/requests/image/create_image.rb +1 -1
- data/lib/fog/openstack/requests/network/associate_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/create_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/delete_floating_ip.rb +1 -1
- data/lib/fog/openstack/requests/network/disassociate_floating_ip.rb +3 -3
- data/lib/fog/openstack/requests/network/get_floating_ip.rb +1 -1
- data/lib/fog/openstack/requests/network/list_floating_ips.rb +1 -1
- data/lib/fog/openstack/requests/storage/copy_object.rb +27 -0
- data/lib/fog/openstack/requests/storage/delete_container.rb +22 -0
- data/lib/fog/openstack/requests/storage/delete_object.rb +23 -0
- data/lib/fog/openstack/requests/storage/get_container.rb +44 -0
- data/lib/fog/openstack/requests/storage/get_containers.rb +33 -0
- data/lib/fog/openstack/requests/storage/get_object.rb +29 -0
- data/lib/fog/openstack/requests/storage/get_object_https_url.rb +51 -0
- data/lib/fog/openstack/requests/storage/head_container.rb +28 -0
- data/lib/fog/openstack/requests/storage/head_containers.rb +25 -0
- data/lib/fog/openstack/requests/storage/head_object.rb +23 -0
- data/lib/fog/openstack/requests/storage/post_set_meta_temp_url_key.rb +37 -0
- data/lib/fog/openstack/requests/storage/put_container.rb +22 -0
- data/lib/fog/openstack/requests/storage/put_object.rb +30 -0
- data/lib/fog/openstack/requests/storage/put_object_manifest.rb +25 -0
- data/lib/fog/openstack/storage.rb +159 -0
- data/lib/fog/openstack/volume.rb +4 -2
- data/lib/fog/ovirt/compute.rb +1 -0
- data/lib/fog/ovirt/models/compute/server.rb +2 -2
- data/lib/fog/ovirt/models/compute/volume.rb +1 -0
- data/lib/fog/ovirt/requests/compute/get_api_version.rb +16 -0
- data/lib/fog/providers.rb +2 -1
- data/lib/fog/rackspace/block_storage.rb +1 -0
- data/lib/fog/rackspace/cdn.rb +61 -7
- data/lib/fog/rackspace/compute_v2.rb +16 -3
- data/lib/fog/rackspace/databases.rb +4 -3
- data/lib/fog/rackspace/docs/compute_v2.md +663 -0
- data/lib/fog/rackspace/docs/getting_started.md +9 -9
- data/lib/fog/rackspace/examples/README.md +47 -0
- data/lib/fog/rackspace/examples/compute_v2/README.md +47 -0
- data/lib/fog/rackspace/examples/compute_v2/create_image.rb +61 -0
- data/lib/fog/rackspace/examples/compute_v2/create_server.rb +89 -0
- data/lib/fog/rackspace/examples/compute_v2/delete_image.rb +61 -0
- data/lib/fog/rackspace/examples/compute_v2/delete_server.rb +56 -0
- data/lib/fog/rackspace/examples/compute_v2/detach_volume.rb +93 -0
- data/lib/fog/rackspace/examples/compute_v2/resize_server.rb +106 -0
- data/lib/fog/rackspace/examples/compute_v2/server_attachments.rb +69 -0
- data/lib/fog/rackspace/examples/compute_v2/server_metadata.rb +85 -0
- data/lib/fog/rackspace/identity.rb +1 -1
- data/lib/fog/rackspace/load_balancers.rb +2 -2
- data/lib/fog/rackspace/mock_data.rb +114 -96
- data/lib/fog/rackspace/models/compute_v2/attachment.rb +16 -0
- data/lib/fog/rackspace/models/compute_v2/attachments.rb +6 -0
- data/lib/fog/rackspace/models/compute_v2/flavor.rb +18 -0
- data/lib/fog/rackspace/models/compute_v2/flavors.rb +9 -1
- data/lib/fog/rackspace/models/compute_v2/image.rb +52 -7
- data/lib/fog/rackspace/models/compute_v2/images.rb +9 -0
- data/lib/fog/rackspace/models/compute_v2/meta_parent.rb +9 -0
- data/lib/fog/rackspace/models/compute_v2/metadata.rb +30 -7
- data/lib/fog/rackspace/models/compute_v2/metadatum.rb +4 -0
- data/lib/fog/rackspace/models/compute_v2/network.rb +27 -0
- data/lib/fog/rackspace/models/compute_v2/networks.rb +23 -0
- data/lib/fog/rackspace/models/compute_v2/server.rb +235 -24
- data/lib/fog/rackspace/models/compute_v2/servers.rb +19 -1
- data/lib/fog/rackspace/models/dns/zones.rb +35 -2
- data/lib/fog/rackspace/models/identity/credentials.rb +3 -2
- data/lib/fog/rackspace/models/storage/account.rb +24 -0
- data/lib/fog/rackspace/models/storage/directories.rb +3 -0
- data/lib/fog/rackspace/models/storage/directory.rb +68 -39
- data/lib/fog/rackspace/models/storage/file.rb +38 -67
- data/lib/fog/rackspace/models/storage/files.rb +11 -4
- data/lib/fog/rackspace/models/storage/metadata.rb +129 -0
- data/lib/fog/rackspace/requests/cdn/delete_object.rb +37 -0
- data/lib/fog/rackspace/requests/cdn/get_containers.rb +34 -0
- data/lib/fog/rackspace/requests/cdn/head_container.rb +24 -0
- data/lib/fog/rackspace/requests/cdn/post_container.rb +21 -0
- data/lib/fog/rackspace/requests/cdn/put_container.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/attach_volume.rb +13 -0
- data/lib/fog/rackspace/requests/compute_v2/change_server_password.rb +7 -0
- data/lib/fog/rackspace/requests/compute_v2/confirm_resize_server.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/create_image.rb +9 -5
- data/lib/fog/rackspace/requests/compute_v2/create_network.rb +36 -0
- data/lib/fog/rackspace/requests/compute_v2/create_server.rb +38 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_attachment.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_image.rb +2 -4
- data/lib/fog/rackspace/requests/compute_v2/delete_metadata_item.rb +6 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_network.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/delete_server.rb +4 -0
- data/lib/fog/rackspace/requests/compute_v2/get_attachment.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/get_flavor.rb +14 -0
- data/lib/fog/rackspace/requests/compute_v2/get_image.rb +18 -0
- data/lib/fog/rackspace/requests/compute_v2/get_metadata_item.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/get_network.rb +21 -0
- data/lib/fog/rackspace/requests/compute_v2/get_server.rb +32 -0
- data/lib/fog/rackspace/requests/compute_v2/list_addresses.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/list_addresses_by_network.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/list_attachments.rb +12 -0
- data/lib/fog/rackspace/requests/compute_v2/list_flavors.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/list_images.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/list_metadata.rb +8 -0
- data/lib/fog/rackspace/requests/compute_v2/list_networks.rb +18 -0
- data/lib/fog/rackspace/requests/compute_v2/list_servers.rb +31 -0
- data/lib/fog/rackspace/requests/compute_v2/reboot_server.rb +5 -0
- data/lib/fog/rackspace/requests/compute_v2/rebuild_server.rb +37 -0
- data/lib/fog/rackspace/requests/compute_v2/resize_server.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/revert_resize_server.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/set_metadata.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/set_metadata_item.rb +10 -0
- data/lib/fog/rackspace/requests/compute_v2/update_metadata.rb +9 -0
- data/lib/fog/rackspace/requests/compute_v2/update_server.rb +9 -0
- data/lib/fog/rackspace/requests/storage/get_object.rb +0 -1
- data/lib/fog/rackspace/requests/storage/put_container.rb +2 -1
- data/lib/fog/rackspace/storage.rb +14 -2
- data/lib/fog/schema/data_validator.rb +154 -0
- data/lib/fog/storage.rb +8 -24
- data/lib/fog/terremark/models/shared/server.rb +5 -3
- data/lib/fog/terremark/parser.rb +14 -13
- data/lib/fog/terremark/parsers/shared/get_catalog.rb +5 -19
- data/lib/fog/terremark/parsers/shared/get_catalog_item.rb +4 -14
- data/lib/fog/terremark/parsers/shared/get_internet_services.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_keys_list.rb +4 -18
- data/lib/fog/terremark/parsers/shared/get_network_ips.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_node_services.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_organization.rb +4 -3
- data/lib/fog/terremark/parsers/shared/get_organizations.rb +3 -2
- data/lib/fog/terremark/parsers/shared/get_public_ips.rb +1 -1
- data/lib/fog/terremark/parsers/shared/get_tasks_list.rb +4 -17
- data/lib/fog/terremark/parsers/shared/get_vapp_template.rb +3 -14
- data/lib/fog/terremark/parsers/shared/get_vdc.rb +6 -38
- data/lib/fog/terremark/parsers/shared/instantiate_vapp_template.rb +3 -14
- data/lib/fog/terremark/parsers/shared/internet_service.rb +2 -5
- data/lib/fog/terremark/parsers/shared/network.rb +3 -11
- data/lib/fog/terremark/parsers/shared/node_service.rb +1 -1
- data/lib/fog/terremark/parsers/shared/public_ip.rb +1 -1
- data/lib/fog/terremark/parsers/shared/task.rb +3 -14
- data/lib/fog/terremark/parsers/shared/vapp.rb +3 -14
- data/lib/fog/vcloud/compute.rb +1 -0
- data/lib/fog/vcloud/models/compute/server.rb +15 -2
- data/lib/fog/vcloud/models/compute/vapp.rb +11 -0
- data/lib/fog/vcloud/requests/compute/configure_vm_network.rb +37 -0
- data/lib/fog/vcloud/requests/compute/instantiate_vapp_template.rb +8 -4
- data/lib/fog/version.rb +1 -1
- data/lib/fog/volume.rb +6 -6
- data/lib/fog/vsphere/requests/compute/create_vm.rb +18 -3
- data/lib/fog/vsphere/requests/compute/list_vm_interfaces.rb +1 -1
- data/lib/fog/vsphere/requests/compute/vm_reconfig_hardware.rb +1 -1
- data/tests/aws/models/data_pipeline/pipeline_tests.rb +8 -0
- data/tests/aws/models/data_pipeline/pipelines_tests.rb +8 -0
- data/tests/aws/models/rds/server_tests.rb +10 -9
- data/tests/aws/requests/compute/image_tests.rb +2 -2
- data/tests/aws/requests/compute/security_group_tests.rb +1 -1
- data/tests/aws/requests/compute/spot_instance_tests.rb +3 -2
- data/tests/aws/requests/data_pipeline/helper.rb +44 -0
- data/tests/aws/requests/data_pipeline/pipeline_tests.rb +54 -0
- data/tests/aws/requests/rds/instance_tests.rb +8 -5
- data/tests/bluebox/requests/blb/helper.rb +64 -0
- data/tests/bluebox/requests/blb/lb_tests.rb +75 -0
- data/tests/brightbox/requests/compute/firewall_policy_tests.rb +7 -0
- data/tests/brightbox/requests/compute/helper.rb +4 -2
- data/tests/compute/helper.rb +8 -0
- data/tests/core/user_agent_tests.rb +6 -0
- data/tests/dreamhost/README.md +56 -0
- data/tests/dreamhost/dns_tests.rb +20 -0
- data/tests/dreamhost/helper.rb +19 -0
- data/tests/dreamhost/models/dns/record_tests.rb +73 -0
- data/tests/dreamhost/models/dns/records_tests.rb +29 -0
- data/tests/dreamhost/models/dns/zone_tests.rb +62 -0
- data/tests/dreamhost/models/dns/zones_tests.rb +29 -0
- data/tests/dreamhost/requests/dns/create_record_tests.rb +39 -0
- data/tests/dreamhost/requests/dns/delete_record_tests.rb +26 -0
- data/tests/dreamhost/requests/dns/list_records_tests.rb +31 -0
- data/tests/glesys/requests/compute/helper.rb +5 -5
- data/tests/helper.rb +1 -1
- data/tests/helpers/formats_helper.rb +63 -50
- data/tests/helpers/formats_helper_tests.rb +87 -36
- data/tests/helpers/mock_helper.rb +4 -1
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/hp/models/block_storage/bootable_volume_tests.rb +23 -0
- data/tests/hp/models/block_storage/snapshot_tests.rb +23 -0
- data/tests/hp/models/block_storage/volume_tests.rb +21 -0
- 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/metadata_image_tests.rb +60 -0
- data/tests/hp/models/compute/metadata_server_tests.rb +54 -0
- data/tests/hp/models/compute/security_group_tests.rb +3 -1
- data/tests/hp/models/compute/security_groups_tests.rb +1 -1
- data/tests/hp/models/storage/directories_tests.rb +23 -0
- data/tests/hp/models/storage/directory_tests.rb +62 -0
- data/tests/hp/models/storage/file_tests.rb +44 -0
- data/tests/hp/models/storage/files_tests.rb +38 -0
- data/tests/hp/requests/block_storage/bootable_volume_tests.rb +78 -0
- data/tests/hp/requests/block_storage/snapshot_tests.rb +56 -0
- data/tests/hp/requests/block_storage/volume_tests.rb +94 -0
- data/tests/hp/requests/cdn/container_tests.rb +1 -1
- data/tests/hp/requests/compute/address_tests.rb +5 -6
- 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/metadata_tests.rb +70 -0
- data/tests/hp/requests/compute/persistent_server_tests.rb +66 -0
- 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 +5 -6
- data/tests/hp/requests/compute/server_volume_tests.rb +76 -0
- data/tests/hp/requests/storage/container_tests.rb +1 -1
- data/tests/hp/requests/storage/object_tests.rb +9 -1
- data/tests/hp/user_agent_tests.rb +13 -0
- data/tests/internet_archive/models/storage/directory_tests.rb +51 -0
- data/tests/internet_archive/models/storage/file_tests.rb +80 -0
- data/tests/internet_archive/models/storage/files_tests.rb +56 -0
- data/tests/internet_archive/models/storage/url_tests.rb +28 -0
- data/tests/internet_archive/models/storage/version_tests.rb +52 -0
- data/tests/internet_archive/models/storage/versions_tests.rb +56 -0
- data/tests/internet_archive/requests/storage/acl_utils_tests.rb +209 -0
- data/tests/internet_archive/requests/storage/bucket_tests.rb +328 -0
- data/tests/internet_archive/requests/storage/cors_utils_tests.rb +108 -0
- data/tests/internet_archive/requests/storage/multipart_upload_tests.rb +132 -0
- data/tests/internet_archive/requests/storage/object_tests.rb +166 -0
- data/tests/internet_archive/requests/storage/versioning_tests.rb +258 -0
- data/tests/internet_archive/signaturev4_tests.rb +41 -0
- data/tests/internet_archive/signed_params_tests.rb +5 -0
- data/tests/openstack/models/compute/images_tests.rb +14 -0
- data/tests/openstack/models/compute/server_tests.rb +42 -1
- data/tests/openstack/models/identity/roles_tests.rb +1 -0
- data/tests/openstack/models/identity/user_tests.rb +2 -2
- data/tests/openstack/models/network/network_tests.rb +21 -1
- data/tests/openstack/models/storage/file_tests.rb +178 -0
- data/tests/openstack/requests/compute/limit_tests.rb +1 -1
- data/tests/openstack/requests/compute/tenant_tests.rb +2 -2
- data/tests/openstack/requests/identity/ec2_credentials_tests.rb +7 -4
- data/tests/openstack/requests/identity/helper.rb +17 -0
- data/tests/openstack/requests/identity/role_tests.rb +6 -0
- data/tests/openstack/requests/identity/tenant_tests.rb +14 -12
- data/tests/openstack/requests/identity/user_tests.rb +9 -5
- data/tests/openstack/requests/storage/container_tests.rb +64 -0
- data/tests/openstack/requests/storage/large_object_tests.rb +47 -0
- data/tests/openstack/requests/storage/object_tests.rb +84 -0
- data/tests/openstack/volume_tests.rb +15 -0
- data/tests/rackspace/cdn_tests.rb +78 -0
- data/tests/rackspace/helper.rb +9 -0
- data/tests/rackspace/models/compute_v2/flavors_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/image_tests.rb +2 -4
- data/tests/rackspace/models/compute_v2/images_tests.rb +1 -1
- data/tests/rackspace/models/compute_v2/metadata_tests.rb +5 -3
- data/tests/rackspace/models/compute_v2/network_tests.rb +10 -0
- data/tests/rackspace/models/compute_v2/networks_tests.rb +10 -0
- data/tests/rackspace/models/compute_v2/server_tests.rb +8 -7
- data/tests/rackspace/models/compute_v2/servers_tests.rb +5 -7
- data/tests/rackspace/models/dns/zones_tests.rb +22 -0
- data/tests/rackspace/models/identity/credentials_tests.rb +14 -5
- data/tests/rackspace/models/storage/account_tests.rb +28 -0
- data/tests/rackspace/models/storage/directories_tests.rb +29 -0
- data/tests/rackspace/models/storage/directory_tests.rb +141 -0
- data/tests/rackspace/models/storage/file_tests.rb +86 -11
- data/tests/rackspace/models/storage/metadata_tests.rb +174 -0
- data/tests/rackspace/requests/cdn/cdn_tests.rb +76 -0
- data/tests/rackspace/requests/compute/image_tests.rb +2 -2
- data/tests/rackspace/requests/compute_v2/image_tests.rb +6 -6
- data/tests/rackspace/requests/compute_v2/network_tests.rb +49 -0
- data/tests/rackspace/requests/identity/user_tests.rb +0 -4
- data/tests/rackspace/requests/storage/container_tests.rb +8 -1
- data/tests/rackspace/storage_tests.rb +8 -0
- data/tests/storage/helper.rb +3 -0
- metadata +341 -40
- data/docs/storage/aws.markdown +0 -21
- data/lib/fog/bin/virtual_box.rb +0 -57
- data/lib/fog/rackspace/docs/cloud_servers.md +0 -65
- data/lib/fog/rackspace/requests/identity/get_credentials.rb +0 -15
- data/lib/fog/virtual_box.rb +0 -11
- data/lib/fog/virtual_box/compute.rb +0 -59
- data/lib/fog/virtual_box/models/compute/medium.rb +0 -87
- data/lib/fog/virtual_box/models/compute/medium_format.rb +0 -34
- data/lib/fog/virtual_box/models/compute/mediums.rb +0 -32
- data/lib/fog/virtual_box/models/compute/nat_engine.rb +0 -65
- data/lib/fog/virtual_box/models/compute/nat_redirect.rb +0 -91
- data/lib/fog/virtual_box/models/compute/nat_redirects.rb +0 -41
- data/lib/fog/virtual_box/models/compute/network_adapter.rb +0 -82
- data/lib/fog/virtual_box/models/compute/network_adapters.rb +0 -42
- data/lib/fog/virtual_box/models/compute/server.rb +0 -199
- data/lib/fog/virtual_box/models/compute/servers.rb +0 -41
- data/lib/fog/virtual_box/models/compute/storage_controller.rb +0 -83
- data/lib/fog/virtual_box/models/compute/storage_controllers.rb +0 -38
@@ -0,0 +1,47 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/internet_archive/parsers/storage/get_bucket_logging'
|
7
|
+
|
8
|
+
# Get logging status for an S3 bucket
|
9
|
+
#
|
10
|
+
# @param bucket_name [String] name of bucket to get logging status for
|
11
|
+
#
|
12
|
+
# @return [Excon::Response] response:
|
13
|
+
# * body [Hash]:
|
14
|
+
# * BucketLoggingStatus (will be empty if logging is disabled) [Hash]:
|
15
|
+
# * LoggingEnabled [Hash]:
|
16
|
+
# * TargetBucket [String] - bucket where logs are stored
|
17
|
+
# * TargetPrefix [String] - prefix logs are stored with
|
18
|
+
# * TargetGrants [Array]:
|
19
|
+
# * Grant [Hash]:
|
20
|
+
# * Grantee [Hash]:
|
21
|
+
# * DisplayName [String] - Display name of grantee
|
22
|
+
# * ID [String] - Id of grantee
|
23
|
+
# or
|
24
|
+
# * URI [String] - URI of group to grant access for
|
25
|
+
# * Permission [String] - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
26
|
+
#
|
27
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETlogging.html
|
28
|
+
|
29
|
+
def get_bucket_logging(bucket_name)
|
30
|
+
unless bucket_name
|
31
|
+
raise ArgumentError.new('bucket_name is required')
|
32
|
+
end
|
33
|
+
request({
|
34
|
+
:expects => 200,
|
35
|
+
:headers => {},
|
36
|
+
:host => "#{bucket_name}.#{@host}",
|
37
|
+
:idempotent => true,
|
38
|
+
:method => 'GET',
|
39
|
+
:parser => Fog::Parsers::Storage::InternetArchive::GetBucketLogging.new,
|
40
|
+
:query => {'logging' => nil}
|
41
|
+
})
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,162 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/internet_archive/parsers/storage/get_bucket_object_versions'
|
7
|
+
|
8
|
+
# List information about object versions in an S3 bucket
|
9
|
+
#
|
10
|
+
# @param bucket_name [String] name of bucket to list object keys from
|
11
|
+
# @param options [Hash] config arguments for list
|
12
|
+
# @option options delimiter [String] causes keys with the same string between the prefix value and the first occurence of delimiter to be rolled up
|
13
|
+
# @option options key-marker [String] limits object keys to only those that appear lexicographically after its value.
|
14
|
+
# @option options max-keys [Integer] limits number of object keys returned
|
15
|
+
# @option options prefix [String] limits object keys to those beginning with its value.
|
16
|
+
# @option options version-id-marker [String] limits object versions to only those that appear lexicographically after its value
|
17
|
+
#
|
18
|
+
# @return [Excon::Response] response:
|
19
|
+
# * body [Hash]:
|
20
|
+
# * Delimeter [String] - Delimiter specified for query
|
21
|
+
# * KeyMarker [String] - Key marker specified for query
|
22
|
+
# * MaxKeys [Integer] - Maximum number of keys specified for query
|
23
|
+
# * Name [String] - Name of the bucket
|
24
|
+
# * Prefix [String] - Prefix specified for query
|
25
|
+
# * VersionIdMarker [String] - Version id marker specified for query
|
26
|
+
# * IsTruncated [Boolean] - Whether or not this is the totality of the bucket
|
27
|
+
# * Versions [Array]:
|
28
|
+
# * DeleteMarker [Hash]:
|
29
|
+
# * IsLatest [Boolean] - Whether or not this is the latest version
|
30
|
+
# * Key [String] - Name of object
|
31
|
+
# * LastModified [String]: Timestamp of last modification of object
|
32
|
+
# * Owner [Hash]:
|
33
|
+
# * DisplayName [String] - Display name of object owner
|
34
|
+
# * ID [String] - Id of object owner
|
35
|
+
# * VersionId [String] - The id of this version
|
36
|
+
# or
|
37
|
+
# * Version [Hash]:
|
38
|
+
# * ETag [String]: Etag of object
|
39
|
+
# * IsLatest [Boolean] - Whether or not this is the latest version
|
40
|
+
# * Key [String] - Name of object
|
41
|
+
# * LastModified [String]: Timestamp of last modification of object
|
42
|
+
# * Owner [Hash]:
|
43
|
+
# * DisplayName [String] - Display name of object owner
|
44
|
+
# * ID [String] - Id of object owner
|
45
|
+
# * Size [Integer] - Size of object
|
46
|
+
# * StorageClass [String] - Storage class of object
|
47
|
+
# * VersionId [String] - The id of this version
|
48
|
+
#
|
49
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETVersion.html
|
50
|
+
|
51
|
+
def get_bucket_object_versions(bucket_name, options = {})
|
52
|
+
unless bucket_name
|
53
|
+
raise ArgumentError.new('bucket_name is required')
|
54
|
+
end
|
55
|
+
request({
|
56
|
+
:expects => 200,
|
57
|
+
:headers => {},
|
58
|
+
:host => "#{bucket_name}.#{@host}",
|
59
|
+
:idempotent => true,
|
60
|
+
:method => 'GET',
|
61
|
+
:parser => Fog::Parsers::Storage::InternetArchive::GetBucketObjectVersions.new,
|
62
|
+
:query => {'versions' => nil}.merge!(options) })
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
class Mock
|
68
|
+
def get_bucket_object_versions(bucket_name, options = {})
|
69
|
+
delimiter, key_marker, max_keys, prefix, version_id_marker = \
|
70
|
+
options['delimiter'], options['key-marker'], options['max-keys'],options['prefix'],options['version-id-marker']
|
71
|
+
|
72
|
+
unless bucket_name
|
73
|
+
raise ArgumentError.new('bucket_name is required')
|
74
|
+
end
|
75
|
+
|
76
|
+
response = Excon::Response.new
|
77
|
+
|
78
|
+
# Invalid arguments.
|
79
|
+
if version_id_marker && !key_marker
|
80
|
+
response.status = 400
|
81
|
+
response.body = {
|
82
|
+
'Error' => {
|
83
|
+
'Code' => 'InvalidArgument',
|
84
|
+
'Message' => 'A version-id marker cannot be specified without a key marker.',
|
85
|
+
'ArgumentValue' => version_id_marker,
|
86
|
+
'RequestId' => Fog::Mock.random_hex(16),
|
87
|
+
'HostId' => Fog::Mock.random_base64(65)
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
# Valid case.
|
92
|
+
# TODO: (nirvdrum 12/15/11) It's not clear to me how to actually use version-id-marker, so I didn't implement it below.
|
93
|
+
elsif bucket = self.data[:buckets][bucket_name]
|
94
|
+
# We need to order results by S3 key, but since our data store is key => [versions], we want to ensure the integrity
|
95
|
+
# of the versions as well. So, sort the keys, then fetch the versions, and then combine them all as a sorted list by
|
96
|
+
# flattening the results.
|
97
|
+
contents = bucket[:objects].keys.sort.collect { |key| bucket[:objects][key] }.flatten.reject do |object|
|
98
|
+
(prefix && object['Key'][0...prefix.length] != prefix) ||
|
99
|
+
(key_marker && object['Key'] <= key_marker) ||
|
100
|
+
(delimiter && object['Key'][(prefix ? prefix.length : 0)..-1].include?(delimiter) \
|
101
|
+
&& common_prefixes << object['Key'].sub(/^(#{prefix}[^#{delimiter}]+.).*/, '\1'))
|
102
|
+
end.map do |object|
|
103
|
+
if object.has_key?(:delete_marker)
|
104
|
+
tag_name = 'DeleteMarker'
|
105
|
+
extracted_attrs = ['Key', 'VersionId']
|
106
|
+
else
|
107
|
+
tag_name = 'Version'
|
108
|
+
extracted_attrs = ['ETag', 'Key', 'StorageClass', 'VersionId']
|
109
|
+
end
|
110
|
+
|
111
|
+
data = {}
|
112
|
+
data[tag_name] = object.reject { |key, value| !extracted_attrs.include?(key) }
|
113
|
+
data[tag_name].merge!({
|
114
|
+
'LastModified' => Time.parse(object['Last-Modified']),
|
115
|
+
'Owner' => bucket['Owner'],
|
116
|
+
'IsLatest' => object == bucket[:objects][object['Key']].first
|
117
|
+
})
|
118
|
+
|
119
|
+
data[tag_name]['Size'] = object['Content-Length'].to_i if tag_name == 'Version'
|
120
|
+
data
|
121
|
+
end
|
122
|
+
|
123
|
+
max_keys = max_keys || 1000
|
124
|
+
size = [max_keys, 1000].min
|
125
|
+
truncated_contents = contents[0...size]
|
126
|
+
|
127
|
+
response.status = 200
|
128
|
+
response.body = {
|
129
|
+
'Versions' => truncated_contents,
|
130
|
+
'IsTruncated' => truncated_contents.size != contents.size,
|
131
|
+
'KeyMarker' => key_marker,
|
132
|
+
'VersionIdMarker' => version_id_marker,
|
133
|
+
'MaxKeys' => max_keys,
|
134
|
+
'Name' => bucket['Name'],
|
135
|
+
'Prefix' => prefix
|
136
|
+
}
|
137
|
+
if max_keys && max_keys < response.body['Versions'].length
|
138
|
+
response.body['IsTruncated'] = true
|
139
|
+
response.body['Versions'] = response.body['Versions'][0...max_keys]
|
140
|
+
end
|
141
|
+
|
142
|
+
# Missing bucket case.
|
143
|
+
else
|
144
|
+
response.status = 404
|
145
|
+
response.body = {
|
146
|
+
'Error' => {
|
147
|
+
'Code' => 'NoSuchBucket',
|
148
|
+
'Message' => 'The specified bucket does not exist',
|
149
|
+
'BucketName' => bucket_name,
|
150
|
+
'RequestId' => Fog::Mock.random_hex(16),
|
151
|
+
'HostId' => Fog::Mock.random_base64(65)
|
152
|
+
}
|
153
|
+
}
|
154
|
+
|
155
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
156
|
+
end
|
157
|
+
response
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Get bucket policy for an S3 bucket
|
7
|
+
#
|
8
|
+
# @param bucket_name [String] name of bucket to get policy for
|
9
|
+
#
|
10
|
+
# @return [Excon::Response] response:
|
11
|
+
# * body [Hash] - policy document
|
12
|
+
#
|
13
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETpolicy.html
|
14
|
+
|
15
|
+
def get_bucket_policy(bucket_name)
|
16
|
+
unless bucket_name
|
17
|
+
raise ArgumentError.new('bucket_name is required')
|
18
|
+
end
|
19
|
+
response = request({
|
20
|
+
:expects => 200,
|
21
|
+
:headers => {},
|
22
|
+
:host => "#{bucket_name}.#{@host}",
|
23
|
+
:idempotent => true,
|
24
|
+
:method => 'GET',
|
25
|
+
:query => {'policy' => nil}
|
26
|
+
})
|
27
|
+
response.body = Fog::JSON.decode(response.body) unless response.body.nil?
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/internet_archive/parsers/storage/get_bucket_versioning'
|
7
|
+
|
8
|
+
# Get versioning status for an S3 bucket
|
9
|
+
#
|
10
|
+
# @param bucket_name [String] name of bucket to get versioning status for
|
11
|
+
#
|
12
|
+
# @return [Excon::Response] response:
|
13
|
+
# * body [Hash]:
|
14
|
+
# * VersioningConfiguration [Hash]:
|
15
|
+
# * Status [String] - Versioning status in ['Enabled', 'Suspended', nil]
|
16
|
+
#
|
17
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETversioningStatus.html
|
18
|
+
|
19
|
+
def get_bucket_versioning(bucket_name)
|
20
|
+
unless bucket_name
|
21
|
+
raise ArgumentError.new('bucket_name is required')
|
22
|
+
end
|
23
|
+
request({
|
24
|
+
:expects => 200,
|
25
|
+
:headers => {},
|
26
|
+
:host => "#{bucket_name}.#{@host}",
|
27
|
+
:idempotent => true,
|
28
|
+
:method => 'GET',
|
29
|
+
:parser => Fog::Parsers::Storage::InternetArchive::GetBucketVersioning.new,
|
30
|
+
:query => {'versioning' => nil}
|
31
|
+
})
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Mock
|
36
|
+
def get_bucket_versioning(bucket_name)
|
37
|
+
response = Excon::Response.new
|
38
|
+
bucket = self.data[:buckets][bucket_name]
|
39
|
+
|
40
|
+
if bucket
|
41
|
+
response.status = 200
|
42
|
+
|
43
|
+
if bucket[:versioning]
|
44
|
+
response.body = { 'VersioningConfiguration' => { 'Status' => bucket[:versioning] } }
|
45
|
+
else
|
46
|
+
response.body = { 'VersioningConfiguration' => {} }
|
47
|
+
end
|
48
|
+
|
49
|
+
else
|
50
|
+
response.status = 404
|
51
|
+
response.body = {
|
52
|
+
'Error' => {
|
53
|
+
'Code' => 'NoSuchBucket',
|
54
|
+
'Message' => 'The specified bucket does not exist',
|
55
|
+
'BucketName' => bucket_name,
|
56
|
+
'RequestId' => Fog::Mock.random_hex(16),
|
57
|
+
'HostId' => Fog::Mock.random_base64(65)
|
58
|
+
}
|
59
|
+
}
|
60
|
+
|
61
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
62
|
+
end
|
63
|
+
|
64
|
+
response
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
require 'fog/internet_archive/parsers/storage/get_bucket_website'
|
7
|
+
|
8
|
+
# Get website configuration for an S3 bucket
|
9
|
+
#
|
10
|
+
#
|
11
|
+
# @param bucket_name [String] name of bucket to get website configuration for
|
12
|
+
#
|
13
|
+
# @return [Excon::Response] response:
|
14
|
+
# * body [Hash]:
|
15
|
+
# * IndexDocument [Hash]:
|
16
|
+
# * Suffix [String] - Suffix appended when directory is requested
|
17
|
+
# * ErrorDocument [Hash]:
|
18
|
+
# * Key [String] - Object key to return for 4XX class errors
|
19
|
+
#
|
20
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketGETwebsite.html
|
21
|
+
|
22
|
+
def get_bucket_website(bucket_name)
|
23
|
+
unless bucket_name
|
24
|
+
raise ArgumentError.new('bucket_name is required')
|
25
|
+
end
|
26
|
+
request({
|
27
|
+
:expects => 200,
|
28
|
+
:headers => {},
|
29
|
+
:host => "#{bucket_name}.#{@host}",
|
30
|
+
:idempotent => true,
|
31
|
+
:method => 'GET',
|
32
|
+
:parser => Fog::Parsers::Storage::InternetArchive::GetBucketWebsite.new,
|
33
|
+
:query => {'website' => nil}
|
34
|
+
})
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,188 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class InternetArchive
|
4
|
+
class Real
|
5
|
+
|
6
|
+
# Get an object from S3
|
7
|
+
#
|
8
|
+
# @param bucket_name [String] Name of bucket to read from
|
9
|
+
# @param object_name [String] Name of object to read
|
10
|
+
# @param options [Hash]
|
11
|
+
# @option options If-Match [String] Returns object only if its etag matches this value, otherwise returns 412 (Precondition Failed).
|
12
|
+
# @option options If-Modified-Since [Time] Returns object only if it has been modified since this time, otherwise returns 304 (Not Modified).
|
13
|
+
# @option options If-None-Match [String] Returns object only if its etag differs from this value, otherwise returns 304 (Not Modified)
|
14
|
+
# @option options If-Unmodified-Since [Time] Returns object only if it has not been modified since this time, otherwise returns 412 (Precodition Failed).
|
15
|
+
# @option options Range [String] Range of object to download
|
16
|
+
# @option options versionId [String] specify a particular version to retrieve
|
17
|
+
#
|
18
|
+
# @return [Excon::Response] response:
|
19
|
+
# * body [String]- Contents of object
|
20
|
+
# * headers [Hash]:
|
21
|
+
# * Content-Length [String] - Size of object contents
|
22
|
+
# * Content-Type [String] - MIME type of object
|
23
|
+
# * ETag [String] - Etag of object
|
24
|
+
# * Last-Modified [String] - Last modified timestamp for object
|
25
|
+
#
|
26
|
+
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectGET.html
|
27
|
+
|
28
|
+
def get_object(bucket_name, object_name, options = {}, &block)
|
29
|
+
unless bucket_name
|
30
|
+
raise ArgumentError.new('bucket_name is required')
|
31
|
+
end
|
32
|
+
unless object_name
|
33
|
+
raise ArgumentError.new('object_name is required')
|
34
|
+
end
|
35
|
+
|
36
|
+
params = { :headers => {} }
|
37
|
+
if version_id = options.delete('versionId')
|
38
|
+
params[:query] = {'versionId' => version_id}
|
39
|
+
end
|
40
|
+
params[:headers].merge!(options)
|
41
|
+
if options['If-Modified-Since']
|
42
|
+
params[:headers]['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header
|
43
|
+
end
|
44
|
+
if options['If-Unmodified-Since']
|
45
|
+
params[:headers]['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header
|
46
|
+
end
|
47
|
+
|
48
|
+
if block_given?
|
49
|
+
params[:response_block] = Proc.new
|
50
|
+
end
|
51
|
+
|
52
|
+
request(params.merge!({
|
53
|
+
:expects => [ 200, 206 ],
|
54
|
+
:host => "#{bucket_name}.#{@host}",
|
55
|
+
:idempotent => true,
|
56
|
+
:method => 'GET',
|
57
|
+
:path => CGI.escape(object_name),
|
58
|
+
}))
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
class Mock # :nodoc:all
|
64
|
+
|
65
|
+
def get_object(bucket_name, object_name, options = {}, &block)
|
66
|
+
version_id = options.delete('versionId')
|
67
|
+
|
68
|
+
unless bucket_name
|
69
|
+
raise ArgumentError.new('bucket_name is required')
|
70
|
+
end
|
71
|
+
|
72
|
+
unless object_name
|
73
|
+
raise ArgumentError.new('object_name is required')
|
74
|
+
end
|
75
|
+
|
76
|
+
response = Excon::Response.new
|
77
|
+
if (bucket = self.data[:buckets][bucket_name])
|
78
|
+
object = nil
|
79
|
+
if bucket[:objects].has_key?(object_name)
|
80
|
+
object = version_id ? bucket[:objects][object_name].find { |object| object['VersionId'] == version_id} : bucket[:objects][object_name].first
|
81
|
+
end
|
82
|
+
|
83
|
+
if (object && !object[:delete_marker])
|
84
|
+
if options['If-Match'] && options['If-Match'] != object['ETag']
|
85
|
+
response.status = 412
|
86
|
+
elsif options['If-Modified-Since'] && options['If-Modified-Since'] > Time.parse(object['Last-Modified'])
|
87
|
+
response.status = 304
|
88
|
+
elsif options['If-None-Match'] && options['If-None-Match'] == object['ETag']
|
89
|
+
response.status = 304
|
90
|
+
elsif options['If-Unmodified-Since'] && options['If-Unmodified-Since'] < Time.parse(object['Last-Modified'])
|
91
|
+
response.status = 412
|
92
|
+
else
|
93
|
+
response.status = 200
|
94
|
+
for key, value in object
|
95
|
+
case key
|
96
|
+
when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-Length', 'Content-MD5', 'Content-Type', 'ETag', 'Expires', 'Last-Modified', /^x-amz-meta-/
|
97
|
+
response.headers[key] = value
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
response.headers['x-amz-version-id'] = object['VersionId'] if bucket[:versioning]
|
102
|
+
|
103
|
+
body = object[:body]
|
104
|
+
if options['Range']
|
105
|
+
# since AWS S3 itself does not support multiple range headers, we will use only the first
|
106
|
+
ranges = byte_ranges(options['Range'], body.size)
|
107
|
+
unless ranges.nil? || ranges.empty?
|
108
|
+
response.status = 206
|
109
|
+
body = body[ranges.first]
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
unless block_given?
|
114
|
+
response.body = body
|
115
|
+
else
|
116
|
+
data = StringIO.new(body)
|
117
|
+
remaining = data.length
|
118
|
+
while remaining > 0
|
119
|
+
chunk = data.read([remaining, Excon::CHUNK_SIZE].min)
|
120
|
+
block.call(chunk)
|
121
|
+
remaining -= Excon::CHUNK_SIZE
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
elsif version_id && !object
|
126
|
+
response.status = 400
|
127
|
+
response.body = {
|
128
|
+
'Error' => {
|
129
|
+
'Code' => 'InvalidArgument',
|
130
|
+
'Message' => 'Invalid version id specified',
|
131
|
+
'ArgumentValue' => version_id,
|
132
|
+
'ArgumentName' => 'versionId',
|
133
|
+
'RequestId' => Fog::Mock.random_hex(16),
|
134
|
+
'HostId' => Fog::Mock.random_base64(65)
|
135
|
+
}
|
136
|
+
}
|
137
|
+
|
138
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
139
|
+
else
|
140
|
+
response.status = 404
|
141
|
+
response.body = "...<Code>NoSuchKey<\/Code>..."
|
142
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
143
|
+
end
|
144
|
+
else
|
145
|
+
response.status = 404
|
146
|
+
response.body = "...<Code>NoSuchBucket</Code>..."
|
147
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
148
|
+
end
|
149
|
+
response
|
150
|
+
end
|
151
|
+
|
152
|
+
private
|
153
|
+
|
154
|
+
# === Borrowed from rack
|
155
|
+
# Parses the "Range:" header, if present, into an array of Range objects.
|
156
|
+
# Returns nil if the header is missing or syntactically invalid.
|
157
|
+
# Returns an empty array if none of the ranges are satisfiable.
|
158
|
+
def byte_ranges(http_range, size)
|
159
|
+
# See <http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35>
|
160
|
+
return nil unless http_range
|
161
|
+
ranges = []
|
162
|
+
http_range.split(/,\s*/).each do |range_spec|
|
163
|
+
matches = range_spec.match(/bytes=(\d*)-(\d*)/)
|
164
|
+
return nil unless matches
|
165
|
+
r0,r1 = matches[1], matches[2]
|
166
|
+
if r0.empty?
|
167
|
+
return nil if r1.empty?
|
168
|
+
# suffix-byte-range-spec, represents trailing suffix of file
|
169
|
+
r0 = [size - r1.to_i, 0].max
|
170
|
+
r1 = size - 1
|
171
|
+
else
|
172
|
+
r0 = r0.to_i
|
173
|
+
if r1.empty?
|
174
|
+
r1 = size - 1
|
175
|
+
else
|
176
|
+
r1 = r1.to_i
|
177
|
+
return nil if r1 < r0 # backwards range is syntactically invalid
|
178
|
+
r1 = size-1 if r1 >= size
|
179
|
+
end
|
180
|
+
end
|
181
|
+
ranges << (r0..r1) if r0 <= r1
|
182
|
+
end
|
183
|
+
ranges
|
184
|
+
end
|
185
|
+
end
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|