fog-aws 3.0.0 → 3.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +10 -0
- data/.github/workflows/ruby.yml +36 -0
- data/.github/workflows/stale.yml +23 -0
- data/.gitignore +1 -0
- data/CHANGELOG.md +354 -22
- data/Gemfile +1 -1
- data/LICENSE.md +1 -1
- data/README.md +60 -7
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/fog-aws.gemspec +5 -4
- data/lib/fog/aws.rb +27 -19
- data/lib/fog/aws/auto_scaling.rb +1 -0
- data/lib/fog/aws/cdn.rb +15 -2
- data/lib/fog/aws/compute.rb +36 -23
- data/lib/fog/aws/credential_fetcher.rb +62 -8
- data/lib/fog/aws/dns.rb +154 -5
- data/lib/fog/aws/efs.rb +1 -1
- data/lib/fog/aws/elasticache.rb +4 -2
- data/lib/fog/aws/elb.rb +3 -2
- data/lib/fog/aws/elbv2.rb +72 -0
- data/lib/fog/aws/glacier.rb +83 -21
- data/lib/fog/aws/kinesis.rb +23 -15
- data/lib/fog/aws/models/auto_scaling/group.rb +10 -0
- data/lib/fog/aws/models/cdn/distribution.rb +4 -4
- data/lib/fog/aws/models/cdn/distribution_helper.rb +2 -2
- data/lib/fog/aws/models/cdn/distributions.rb +4 -4
- data/lib/fog/aws/models/cdn/distributions_helper.rb +2 -2
- data/lib/fog/aws/models/cdn/invalidation.rb +2 -2
- data/lib/fog/aws/models/cdn/invalidations.rb +3 -3
- data/lib/fog/aws/models/cdn/streaming_distribution.rb +3 -3
- data/lib/fog/aws/models/cdn/streaming_distributions.rb +4 -4
- data/lib/fog/aws/models/compute/address.rb +3 -2
- data/lib/fog/aws/models/compute/addresses.rb +3 -3
- data/lib/fog/aws/models/compute/dhcp_option.rb +2 -2
- data/lib/fog/aws/models/compute/dhcp_options.rb +7 -7
- data/lib/fog/aws/models/compute/flavor.rb +2 -2
- data/lib/fog/aws/models/compute/flavors.rb +2719 -397
- data/lib/fog/aws/models/compute/image.rb +2 -2
- data/lib/fog/aws/models/compute/images.rb +3 -3
- data/lib/fog/aws/models/compute/internet_gateway.rb +2 -2
- data/lib/fog/aws/models/compute/internet_gateways.rb +7 -7
- data/lib/fog/aws/models/compute/key_pair.rb +2 -2
- data/lib/fog/aws/models/compute/key_pairs.rb +3 -3
- data/lib/fog/aws/models/compute/network_acl.rb +4 -4
- data/lib/fog/aws/models/compute/network_acls.rb +6 -6
- data/lib/fog/aws/models/compute/network_interface.rb +2 -2
- data/lib/fog/aws/models/compute/network_interfaces.rb +4 -4
- data/lib/fog/aws/models/compute/route_table.rb +2 -2
- data/lib/fog/aws/models/compute/route_tables.rb +7 -7
- data/lib/fog/aws/models/compute/security_group.rb +2 -2
- data/lib/fog/aws/models/compute/security_groups.rb +3 -3
- data/lib/fog/aws/models/compute/server.rb +6 -4
- data/lib/fog/aws/models/compute/servers.rb +13 -8
- data/lib/fog/aws/models/compute/snapshot.rb +9 -8
- data/lib/fog/aws/models/compute/snapshots.rb +3 -3
- data/lib/fog/aws/models/compute/spot_request.rb +2 -2
- data/lib/fog/aws/models/compute/spot_requests.rb +3 -3
- data/lib/fog/aws/models/compute/subnet.rb +2 -2
- data/lib/fog/aws/models/compute/subnets.rb +3 -3
- data/lib/fog/aws/models/compute/tag.rb +2 -2
- data/lib/fog/aws/models/compute/tags.rb +3 -3
- data/lib/fog/aws/models/compute/volume.rb +3 -3
- data/lib/fog/aws/models/compute/volumes.rb +3 -3
- data/lib/fog/aws/models/compute/vpc.rb +10 -4
- data/lib/fog/aws/models/compute/vpcs.rb +3 -3
- data/lib/fog/aws/models/dns/record.rb +2 -2
- data/lib/fog/aws/models/dns/records.rb +4 -4
- data/lib/fog/aws/models/dns/zone.rb +3 -3
- data/lib/fog/aws/models/dns/zones.rb +4 -4
- data/lib/fog/aws/models/efs/file_system.rb +4 -0
- data/lib/fog/aws/models/rds/cluster.rb +9 -1
- data/lib/fog/aws/models/rds/server.rb +66 -63
- data/lib/fog/aws/models/storage/directories.rb +3 -3
- data/lib/fog/aws/models/storage/directory.rb +40 -6
- data/lib/fog/aws/models/storage/file.rb +132 -7
- data/lib/fog/aws/models/storage/files.rb +36 -6
- data/lib/fog/aws/models/storage/version.rb +2 -2
- data/lib/fog/aws/models/storage/versions.rb +3 -3
- data/lib/fog/aws/parsers/cdn/distribution.rb +2 -2
- data/lib/fog/aws/parsers/cdn/get_distribution_list.rb +2 -2
- data/lib/fog/aws/parsers/cdn/get_invalidation.rb +2 -2
- data/lib/fog/aws/parsers/cdn/get_invalidation_list.rb +2 -2
- data/lib/fog/aws/parsers/cdn/get_streaming_distribution_list.rb +2 -2
- data/lib/fog/aws/parsers/cdn/post_invalidation.rb +2 -2
- data/lib/fog/aws/parsers/cdn/streaming_distribution.rb +1 -1
- data/lib/fog/aws/parsers/compute/allocate_address.rb +2 -2
- data/lib/fog/aws/parsers/compute/assign_private_ip_addresses.rb +2 -2
- data/lib/fog/aws/parsers/compute/associate_address.rb +2 -2
- data/lib/fog/aws/parsers/compute/associate_route_table.rb +2 -2
- data/lib/fog/aws/parsers/compute/attach_network_interface.rb +2 -2
- data/lib/fog/aws/parsers/compute/attach_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/basic.rb +2 -2
- data/lib/fog/aws/parsers/compute/cancel_spot_instance_requests.rb +2 -2
- data/lib/fog/aws/parsers/compute/copy_image.rb +2 -2
- data/lib/fog/aws/parsers/compute/copy_snapshot.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_dhcp_options.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_image.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_internet_gateway.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_key_pair.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_network_acl.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_network_interface.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_route_table.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_security_group.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_snapshot.rb +3 -3
- data/lib/fog/aws/parsers/compute/create_subnet.rb +35 -8
- data/lib/fog/aws/parsers/compute/create_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/create_vpc.rb +2 -2
- data/lib/fog/aws/parsers/compute/deregister_image.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_account_attributes.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_addresses.rb +32 -11
- data/lib/fog/aws/parsers/compute/describe_availability_zones.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_classic_link_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_dhcp_options.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_image_attribute.rb +122 -0
- data/lib/fog/aws/parsers/compute/describe_images.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_instance_attribute.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_instance_status.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_internet_gateways.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_key_pairs.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_network_acls.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_network_interface_attribute.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_network_interfaces.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_placement_groups.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_regions.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_reserved_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_reserved_instances_offerings.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_route_tables.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_security_groups.rb +3 -3
- data/lib/fog/aws/parsers/compute/describe_snapshots.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_spot_price_history.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_subnets.rb +35 -8
- data/lib/fog/aws/parsers/compute/describe_tags.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_volume_status.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_volumes.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_volumes_modifications.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_vpc_attribute.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_vpc_classic_link.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_vpc_classic_link_dns_support.rb +2 -2
- data/lib/fog/aws/parsers/compute/describe_vpcs.rb +2 -2
- data/lib/fog/aws/parsers/compute/detach_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/get_console_output.rb +2 -2
- data/lib/fog/aws/parsers/compute/get_password_data.rb +2 -2
- data/lib/fog/aws/parsers/compute/import_key_pair.rb +2 -2
- data/lib/fog/aws/parsers/compute/modify_subnet_attribute.rb +2 -2
- data/lib/fog/aws/parsers/compute/modify_volume.rb +2 -2
- data/lib/fog/aws/parsers/compute/monitor_unmonitor_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/move_address_to_vpc.rb +2 -2
- data/lib/fog/aws/parsers/compute/network_acl_parser.rb +2 -2
- data/lib/fog/aws/parsers/compute/network_interface_parser.rb +2 -2
- data/lib/fog/aws/parsers/compute/purchase_reserved_instances_offering.rb +2 -2
- data/lib/fog/aws/parsers/compute/register_image.rb +2 -2
- data/lib/fog/aws/parsers/compute/replace_network_acl_association.rb +2 -2
- data/lib/fog/aws/parsers/compute/restore_address_to_classic.rb +2 -2
- data/lib/fog/aws/parsers/compute/run_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/spot_datafeed_subscription.rb +2 -2
- data/lib/fog/aws/parsers/compute/spot_instance_requests.rb +2 -2
- data/lib/fog/aws/parsers/compute/start_stop_instances.rb +2 -2
- data/lib/fog/aws/parsers/compute/terminate_instances.rb +2 -2
- data/lib/fog/aws/parsers/dns/change_resource_record_sets.rb +2 -2
- data/lib/fog/aws/parsers/dns/create_hosted_zone.rb +3 -3
- data/lib/fog/aws/parsers/dns/delete_hosted_zone.rb +2 -2
- data/lib/fog/aws/parsers/dns/get_change.rb +2 -2
- data/lib/fog/aws/parsers/dns/get_hosted_zone.rb +5 -5
- data/lib/fog/aws/parsers/dns/health_check.rb +2 -2
- data/lib/fog/aws/parsers/dns/list_health_checks.rb +2 -2
- data/lib/fog/aws/parsers/dns/list_hosted_zones.rb +5 -3
- data/lib/fog/aws/parsers/dns/list_resource_record_sets.rb +2 -2
- data/lib/fog/aws/parsers/elb/describe_load_balancers.rb +3 -3
- data/lib/fog/aws/parsers/elbv2/create_load_balancer.rb +88 -0
- data/lib/fog/aws/parsers/elbv2/describe_listeners.rb +110 -0
- data/lib/fog/aws/parsers/elbv2/describe_load_balancers.rb +88 -0
- data/lib/fog/aws/parsers/elbv2/describe_tags.rb +53 -0
- data/lib/fog/aws/parsers/elbv2/empty.rb +10 -0
- data/lib/fog/aws/parsers/rds/db_parser.rb +41 -2
- data/lib/fog/aws/parsers/storage/access_control_list.rb +2 -2
- data/lib/fog/aws/parsers/storage/complete_multipart_upload.rb +2 -2
- data/lib/fog/aws/parsers/storage/copy_object.rb +2 -2
- data/lib/fog/aws/parsers/storage/cors_configuration.rb +2 -2
- data/lib/fog/aws/parsers/storage/delete_multiple_objects.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_lifecycle.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_location.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_logging.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_notification.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_object_versions.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_tagging.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_versioning.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_bucket_website.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_object_tagging.rb +33 -0
- data/lib/fog/aws/parsers/storage/get_request_payment.rb +2 -2
- data/lib/fog/aws/parsers/storage/get_service.rb +2 -2
- data/lib/fog/aws/parsers/storage/initiate_multipart_upload.rb +2 -2
- data/lib/fog/aws/parsers/storage/list_multipart_uploads.rb +2 -2
- data/lib/fog/aws/parsers/storage/list_parts.rb +2 -2
- data/lib/fog/aws/parsers/storage/upload_part_copy_object.rb +18 -0
- data/lib/fog/aws/parsers/sts/assume_role_with_web_identity.rb +1 -1
- data/lib/fog/aws/requests/auto_scaling/set_instance_protection.rb +67 -0
- data/lib/fog/aws/requests/cdn/delete_distribution.rb +6 -6
- data/lib/fog/aws/requests/cdn/delete_streaming_distribution.rb +6 -6
- data/lib/fog/aws/requests/cdn/get_distribution.rb +5 -5
- data/lib/fog/aws/requests/cdn/get_distribution_list.rb +3 -3
- data/lib/fog/aws/requests/cdn/get_invalidation.rb +5 -5
- data/lib/fog/aws/requests/cdn/get_invalidation_list.rb +4 -4
- data/lib/fog/aws/requests/cdn/get_streaming_distribution.rb +5 -5
- data/lib/fog/aws/requests/cdn/get_streaming_distribution_list.rb +3 -3
- data/lib/fog/aws/requests/cdn/post_distribution.rb +6 -6
- data/lib/fog/aws/requests/cdn/post_invalidation.rb +5 -5
- data/lib/fog/aws/requests/cdn/post_streaming_distribution.rb +6 -6
- data/lib/fog/aws/requests/cdn/put_distribution_config.rb +7 -7
- data/lib/fog/aws/requests/cdn/put_streaming_distribution_config.rb +7 -7
- data/lib/fog/aws/requests/cloud_watch/put_metric_alarm.rb +2 -2
- data/lib/fog/aws/requests/compute/allocate_address.rb +4 -4
- data/lib/fog/aws/requests/compute/assign_private_ip_addresses.rb +5 -5
- data/lib/fog/aws/requests/compute/associate_address.rb +7 -7
- data/lib/fog/aws/requests/compute/associate_dhcp_options.rb +4 -4
- data/lib/fog/aws/requests/compute/associate_route_table.rb +5 -5
- data/lib/fog/aws/requests/compute/attach_classic_link_vpc.rb +7 -7
- data/lib/fog/aws/requests/compute/attach_internet_gateway.rb +4 -4
- data/lib/fog/aws/requests/compute/attach_network_interface.rb +6 -6
- data/lib/fog/aws/requests/compute/attach_volume.rb +7 -7
- data/lib/fog/aws/requests/compute/authorize_security_group_egress.rb +6 -6
- data/lib/fog/aws/requests/compute/authorize_security_group_ingress.rb +11 -11
- data/lib/fog/aws/requests/compute/cancel_spot_instance_requests.rb +4 -4
- data/lib/fog/aws/requests/compute/copy_image.rb +3 -3
- data/lib/fog/aws/requests/compute/copy_snapshot.rb +3 -3
- data/lib/fog/aws/requests/compute/create_dhcp_options.rb +3 -3
- data/lib/fog/aws/requests/compute/create_image.rb +3 -3
- data/lib/fog/aws/requests/compute/create_internet_gateway.rb +3 -3
- data/lib/fog/aws/requests/compute/create_key_pair.rb +4 -4
- data/lib/fog/aws/requests/compute/create_network_acl.rb +4 -4
- data/lib/fog/aws/requests/compute/create_network_acl_entry.rb +5 -5
- data/lib/fog/aws/requests/compute/create_network_interface.rb +6 -6
- data/lib/fog/aws/requests/compute/create_placement_group.rb +3 -3
- data/lib/fog/aws/requests/compute/create_route.rb +10 -10
- data/lib/fog/aws/requests/compute/create_route_table.rb +4 -4
- data/lib/fog/aws/requests/compute/create_security_group.rb +4 -4
- data/lib/fog/aws/requests/compute/create_snapshot.rb +3 -3
- data/lib/fog/aws/requests/compute/create_spot_datafeed_subscription.rb +3 -3
- data/lib/fog/aws/requests/compute/create_subnet.rb +6 -6
- data/lib/fog/aws/requests/compute/create_tags.rb +3 -3
- data/lib/fog/aws/requests/compute/create_volume.rb +11 -11
- data/lib/fog/aws/requests/compute/create_vpc.rb +7 -7
- data/lib/fog/aws/requests/compute/delete_dhcp_options.rb +4 -4
- data/lib/fog/aws/requests/compute/delete_internet_gateway.rb +4 -4
- data/lib/fog/aws/requests/compute/delete_key_pair.rb +3 -3
- data/lib/fog/aws/requests/compute/delete_network_acl.rb +5 -5
- data/lib/fog/aws/requests/compute/delete_network_acl_entry.rb +5 -5
- data/lib/fog/aws/requests/compute/delete_network_interface.rb +5 -5
- data/lib/fog/aws/requests/compute/delete_placement_group.rb +3 -3
- data/lib/fog/aws/requests/compute/delete_route.rb +6 -6
- data/lib/fog/aws/requests/compute/delete_route_table.rb +5 -5
- data/lib/fog/aws/requests/compute/delete_security_group.rb +9 -9
- data/lib/fog/aws/requests/compute/delete_snapshot.rb +4 -4
- data/lib/fog/aws/requests/compute/delete_spot_datafeed_subscription.rb +3 -3
- data/lib/fog/aws/requests/compute/delete_subnet.rb +4 -4
- data/lib/fog/aws/requests/compute/delete_tags.rb +3 -3
- data/lib/fog/aws/requests/compute/delete_volume.rb +5 -5
- data/lib/fog/aws/requests/compute/delete_vpc.rb +4 -4
- data/lib/fog/aws/requests/compute/deregister_image.rb +4 -4
- data/lib/fog/aws/requests/compute/describe_account_attributes.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_addresses.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_classic_link_instances.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_dhcp_options.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_image_attribute.rb +74 -0
- data/lib/fog/aws/requests/compute/describe_images.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_instance_attribute.rb +4 -4
- data/lib/fog/aws/requests/compute/describe_instance_status.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_instances.rb +4 -4
- data/lib/fog/aws/requests/compute/describe_internet_gateways.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_key_pairs.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_network_acls.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_network_interface_attribute.rb +5 -5
- data/lib/fog/aws/requests/compute/describe_network_interfaces.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_placement_groups.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_regions.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_reserved_instances.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_reserved_instances_offerings.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_route_tables.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_security_groups.rb +15 -4
- data/lib/fog/aws/requests/compute/describe_snapshots.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_spot_datafeed_subscription.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_spot_instance_requests.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_spot_price_history.rb +5 -5
- data/lib/fog/aws/requests/compute/describe_subnets.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_tags.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_volume_status.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_volumes.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_volumes_modifications.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_vpc_attribute.rb +5 -5
- data/lib/fog/aws/requests/compute/describe_vpc_classic_link.rb +4 -4
- data/lib/fog/aws/requests/compute/describe_vpc_classic_link_dns_support.rb +3 -3
- data/lib/fog/aws/requests/compute/describe_vpcs.rb +3 -3
- data/lib/fog/aws/requests/compute/detach_classic_link_vpc.rb +5 -5
- data/lib/fog/aws/requests/compute/detach_internet_gateway.rb +4 -4
- data/lib/fog/aws/requests/compute/detach_network_interface.rb +4 -4
- data/lib/fog/aws/requests/compute/detach_volume.rb +5 -5
- data/lib/fog/aws/requests/compute/disable_vpc_classic_link.rb +4 -4
- data/lib/fog/aws/requests/compute/disable_vpc_classic_link_dns_support.rb +4 -4
- data/lib/fog/aws/requests/compute/disassociate_address.rb +5 -5
- data/lib/fog/aws/requests/compute/disassociate_route_table.rb +5 -5
- data/lib/fog/aws/requests/compute/enable_vpc_classic_link.rb +4 -4
- data/lib/fog/aws/requests/compute/enable_vpc_classic_link_dns_support.rb +4 -4
- data/lib/fog/aws/requests/compute/get_console_output.rb +4 -4
- data/lib/fog/aws/requests/compute/get_password_data.rb +4 -4
- data/lib/fog/aws/requests/compute/import_key_pair.rb +4 -4
- data/lib/fog/aws/requests/compute/modify_image_attribute.rb +4 -4
- data/lib/fog/aws/requests/compute/modify_instance_attribute.rb +3 -3
- data/lib/fog/aws/requests/compute/modify_instance_placement.rb +33 -0
- data/lib/fog/aws/requests/compute/modify_network_interface_attribute.rb +8 -8
- data/lib/fog/aws/requests/compute/modify_snapshot_attribute.rb +3 -3
- data/lib/fog/aws/requests/compute/modify_subnet_attribute.rb +3 -3
- data/lib/fog/aws/requests/compute/modify_volume.rb +5 -5
- data/lib/fog/aws/requests/compute/modify_volume_attribute.rb +4 -4
- data/lib/fog/aws/requests/compute/modify_vpc_attribute.rb +7 -7
- data/lib/fog/aws/requests/compute/monitor_instances.rb +4 -4
- data/lib/fog/aws/requests/compute/move_address_to_vpc.rb +4 -4
- data/lib/fog/aws/requests/compute/purchase_reserved_instances_offering.rb +3 -3
- data/lib/fog/aws/requests/compute/reboot_instances.rb +4 -4
- data/lib/fog/aws/requests/compute/register_image.rb +4 -4
- data/lib/fog/aws/requests/compute/release_address.rb +5 -5
- data/lib/fog/aws/requests/compute/replace_network_acl_association.rb +5 -5
- data/lib/fog/aws/requests/compute/replace_network_acl_entry.rb +5 -5
- data/lib/fog/aws/requests/compute/replace_route.rb +10 -10
- data/lib/fog/aws/requests/compute/request_spot_instances.rb +8 -8
- data/lib/fog/aws/requests/compute/reset_network_interface_attribute.rb +6 -6
- data/lib/fog/aws/requests/compute/restore_address_to_classic.rb +5 -5
- data/lib/fog/aws/requests/compute/revoke_security_group_egress.rb +4 -4
- data/lib/fog/aws/requests/compute/revoke_security_group_ingress.rb +4 -4
- data/lib/fog/aws/requests/compute/run_instances.rb +24 -4
- data/lib/fog/aws/requests/compute/start_instances.rb +4 -4
- data/lib/fog/aws/requests/compute/stop_instances.rb +15 -7
- data/lib/fog/aws/requests/compute/terminate_instances.rb +4 -4
- data/lib/fog/aws/requests/compute/unmonitor_instances.rb +4 -4
- data/lib/fog/aws/requests/dns/change_resource_record_sets.rb +6 -139
- data/lib/fog/aws/requests/dns/create_health_check.rb +3 -3
- data/lib/fog/aws/requests/dns/create_hosted_zone.rb +4 -4
- data/lib/fog/aws/requests/dns/delete_health_check.rb +2 -2
- data/lib/fog/aws/requests/dns/delete_hosted_zone.rb +4 -4
- data/lib/fog/aws/requests/dns/get_change.rb +4 -4
- data/lib/fog/aws/requests/dns/get_health_check.rb +3 -3
- data/lib/fog/aws/requests/dns/get_hosted_zone.rb +4 -4
- data/lib/fog/aws/requests/dns/list_health_checks.rb +3 -3
- data/lib/fog/aws/requests/dns/list_hosted_zones.rb +3 -3
- data/lib/fog/aws/requests/dns/list_resource_record_sets.rb +5 -5
- data/lib/fog/aws/requests/dynamodb/update_item.rb +6 -5
- data/lib/fog/aws/requests/efs/create_file_system.rb +15 -3
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +7 -7
- data/lib/fog/aws/requests/elb/deregister_instances_from_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_instance_health.rb +1 -1
- data/lib/fog/aws/requests/elb/describe_tags.rb +1 -1
- data/lib/fog/aws/requests/elb/register_instances_with_load_balancer.rb +1 -1
- data/lib/fog/aws/requests/elbv2/add_tags.rb +45 -0
- data/lib/fog/aws/requests/elbv2/create_load_balancer.rb +160 -0
- data/lib/fog/aws/requests/elbv2/describe_listeners.rb +38 -0
- data/lib/fog/aws/requests/elbv2/describe_load_balancers.rb +100 -0
- data/lib/fog/aws/requests/elbv2/describe_tags.rb +50 -0
- data/lib/fog/aws/requests/elbv2/remove_tags.rb +45 -0
- data/lib/fog/aws/requests/lambda/invoke.rb +7 -7
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/rds/create_db_instance.rb +1 -1
- data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +2 -2
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +1 -1
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +1 -1
- data/lib/fog/aws/requests/storage/abort_multipart_upload.rb +3 -3
- data/lib/fog/aws/requests/storage/acl_utils.rb +3 -3
- data/lib/fog/aws/requests/storage/complete_multipart_upload.rb +4 -4
- data/lib/fog/aws/requests/storage/copy_object.rb +3 -3
- data/lib/fog/aws/requests/storage/cors_utils.rb +3 -3
- data/lib/fog/aws/requests/storage/delete_bucket.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket_cors.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket_lifecycle.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket_policy.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket_tagging.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_bucket_website.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_multiple_objects.rb +21 -11
- data/lib/fog/aws/requests/storage/delete_object.rb +2 -2
- data/lib/fog/aws/requests/storage/delete_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/get_bucket.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_acl.rb +4 -4
- data/lib/fog/aws/requests/storage/get_bucket_cors.rb +4 -4
- data/lib/fog/aws/requests/storage/get_bucket_lifecycle.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_location.rb +5 -6
- data/lib/fog/aws/requests/storage/get_bucket_logging.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_notification.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_object_versions.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_policy.rb +2 -2
- data/lib/fog/aws/requests/storage/get_bucket_tagging.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_versioning.rb +3 -3
- data/lib/fog/aws/requests/storage/get_bucket_website.rb +3 -3
- data/lib/fog/aws/requests/storage/get_object.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_acl.rb +4 -4
- data/lib/fog/aws/requests/storage/get_object_http_url.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_https_url.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_tagging.rb +41 -0
- data/lib/fog/aws/requests/storage/get_object_torrent.rb +2 -2
- data/lib/fog/aws/requests/storage/get_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/get_request_payment.rb +3 -3
- data/lib/fog/aws/requests/storage/get_service.rb +5 -5
- data/lib/fog/aws/requests/storage/head_bucket.rb +2 -2
- data/lib/fog/aws/requests/storage/head_object.rb +2 -2
- data/lib/fog/aws/requests/storage/head_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/initiate_multipart_upload.rb +4 -4
- data/lib/fog/aws/requests/storage/list_multipart_uploads.rb +3 -3
- data/lib/fog/aws/requests/storage/list_parts.rb +3 -3
- data/lib/fog/aws/requests/storage/post_object_hidden_fields.rb +2 -2
- data/lib/fog/aws/requests/storage/post_object_restore.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_acl.rb +4 -4
- data/lib/fog/aws/requests/storage/put_bucket_cors.rb +4 -4
- data/lib/fog/aws/requests/storage/put_bucket_lifecycle.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_logging.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_notification.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_policy.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_tagging.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_versioning.rb +2 -2
- data/lib/fog/aws/requests/storage/put_bucket_website.rb +2 -2
- data/lib/fog/aws/requests/storage/put_object.rb +9 -7
- data/lib/fog/aws/requests/storage/put_object_acl.rb +4 -4
- data/lib/fog/aws/requests/storage/put_object_tagging.rb +42 -0
- data/lib/fog/aws/requests/storage/put_object_url.rb +2 -2
- data/lib/fog/aws/requests/storage/put_request_payment.rb +2 -2
- data/lib/fog/aws/requests/storage/shared_mock_methods.rb +4 -3
- data/lib/fog/aws/requests/storage/sync_clock.rb +2 -2
- data/lib/fog/aws/requests/storage/upload_part.rb +3 -3
- data/lib/fog/aws/requests/storage/upload_part_copy.rb +119 -0
- data/lib/fog/aws/requests/sts/assume_role_with_web_identity.rb +7 -6
- data/lib/fog/aws/service_mapper.rb +5 -5
- data/lib/fog/aws/storage.rb +50 -19
- data/lib/fog/aws/version.rb +1 -1
- data/tests/credentials_tests.rb +102 -39
- data/tests/helper.rb +2 -2
- data/tests/helpers/collection_helper.rb +3 -4
- data/tests/helpers/compute/flavors_helper.rb +1 -5
- data/tests/helpers/compute/server_helper.rb +1 -3
- data/tests/helpers/compute/servers_helper.rb +0 -2
- data/tests/helpers/dns_helper.rb +32 -31
- data/tests/helpers/formats_helper.rb +58 -56
- data/tests/helpers/formats_helper_tests.rb +22 -25
- data/tests/helpers/mock_helper.rb +96 -96
- data/tests/helpers/model_helper.rb +4 -5
- data/tests/helpers/responds_to_helper.rb +1 -1
- data/tests/helpers/schema_validator_tests.rb +21 -24
- data/tests/helpers/succeeds_helper.rb +2 -2
- data/tests/models/compute/address_tests.rb +1 -1
- data/tests/models/compute/network_acl_tests.rb +4 -4
- data/tests/models/compute/security_group_tests.rb +1 -1
- data/tests/models/compute/volume_tests.rb +1 -1
- data/tests/models/elb/model_tests.rb +1 -1
- data/tests/models/storage/directory_tests.rb +113 -2
- data/tests/models/storage/files_tests.rb +32 -0
- data/tests/parsers/compute/describe_images_tests.rb +2 -2
- data/tests/parsers/elb/describe_load_balancers.rb +1 -1
- data/tests/parsers/elbv2/create_load_balancer_tests.rb +48 -0
- data/tests/parsers/elbv2/describe_listeners_tests.rb +76 -0
- data/tests/parsers/elbv2/describe_load_balancers_tests.rb +54 -0
- data/tests/parsers/elbv2/describe_tags_tests.rb +35 -0
- data/tests/requests/auto_scaling/auto_scaling_tests.rb +8 -0
- data/tests/requests/compute/address_tests.rb +9 -9
- data/tests/requests/compute/assign_private_ip_tests.rb +3 -3
- data/tests/requests/compute/image_tests.rb +11 -2
- data/tests/requests/compute/instance_attrib_tests.rb +1 -1
- data/tests/requests/compute/instance_tests.rb +5 -5
- data/tests/requests/compute/internet_gateway_tests.rb +1 -1
- data/tests/requests/compute/key_pair_tests.rb +1 -1
- data/tests/requests/compute/network_acl_tests.rb +2 -2
- data/tests/requests/compute/network_interface_tests.rb +6 -6
- data/tests/requests/compute/placement_group_tests.rb +2 -2
- data/tests/requests/compute/region_tests.rb +4 -4
- data/tests/requests/compute/route_tests.rb +24 -24
- data/tests/requests/compute/security_group_tests.rb +14 -14
- data/tests/requests/compute/snapshot_tests.rb +1 -1
- data/tests/requests/compute/spot_datafeed_subscription_tests.rb +1 -1
- data/tests/requests/compute/subnet_tests.rb +3 -3
- data/tests/requests/compute/tag_tests.rb +3 -3
- data/tests/requests/compute/volume_tests.rb +11 -11
- data/tests/requests/compute/vpc_tests.rb +9 -3
- data/tests/requests/dns/change_resource_record_sets_tests.rb +3 -3
- data/tests/requests/efs/helper.rb +2 -0
- data/tests/requests/elbv2/helper.rb +66 -0
- data/tests/requests/elbv2/load_balancer_tests.rb +50 -0
- data/tests/requests/glacier/tree_hash_tests.rb +29 -0
- data/tests/requests/storage/acl_utils_tests.rb +24 -24
- data/tests/requests/storage/bucket_tests.rb +1 -1
- data/tests/requests/storage/cors_utils_tests.rb +14 -14
- data/tests/requests/storage/multipart_copy_tests.rb +93 -0
- data/tests/requests/storage/object_tests.rb +7 -0
- data/tests/requests/storage/versioning_tests.rb +38 -0
- data/tests/requests/sts/assume_role_with_web_identity_tests.rb +2 -0
- data/tests/signaturev4_tests.rb +21 -22
- data/tests/signed_params_tests.rb +7 -7
- data/tests/storage_tests.rb +1 -1
- metadata +61 -17
- data/.travis.yml +0 -55
- data/gemfiles/Gemfile-ruby-2.0 +0 -7
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
module PostObjectHiddenFields
|
5
5
|
# Get a hash of hidden fields for form uploading to S3, in the form {:field_name => :field_value}
|
6
6
|
# Form should look like: <form action="http://#{bucket_name}.s3.amazonaws.com/" method="post" enctype="multipart/form-data">
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
class Real
|
5
5
|
require 'fog/aws/requests/storage/acl_utils'
|
6
6
|
|
@@ -29,7 +29,7 @@ module Fog
|
|
29
29
|
headers = {}
|
30
30
|
|
31
31
|
if acl.is_a?(Hash)
|
32
|
-
data = Fog::Storage
|
32
|
+
data = Fog::AWS::Storage.hash_to_acl(acl)
|
33
33
|
else
|
34
34
|
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
35
35
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
@@ -55,7 +55,7 @@ module Fog
|
|
55
55
|
class Mock
|
56
56
|
def put_bucket_acl(bucket_name, acl)
|
57
57
|
if acl.is_a?(Hash)
|
58
|
-
self.data[:acls][:bucket][bucket_name] = Fog::Storage
|
58
|
+
self.data[:acls][:bucket][bucket_name] = Fog::AWS::Storage.hash_to_acl(acl)
|
59
59
|
else
|
60
60
|
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
61
61
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
class Real
|
5
5
|
require 'fog/aws/requests/storage/cors_utils'
|
6
6
|
|
@@ -19,7 +19,7 @@ module Fog
|
|
19
19
|
# @see http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTBucketPUTcors.html
|
20
20
|
|
21
21
|
def put_bucket_cors(bucket_name, cors)
|
22
|
-
data = Fog::Storage
|
22
|
+
data = Fog::AWS::Storage.hash_to_cors(cors)
|
23
23
|
|
24
24
|
headers = {}
|
25
25
|
headers['Content-MD5'] = Base64.encode64(OpenSSL::Digest::MD5.digest(data)).strip
|
@@ -39,7 +39,7 @@ module Fog
|
|
39
39
|
|
40
40
|
class Mock
|
41
41
|
def put_bucket_cors(bucket_name, cors)
|
42
|
-
self.data[:cors][:bucket][bucket_name] = Fog::Storage
|
42
|
+
self.data[:cors][:bucket][bucket_name] = Fog::AWS::Storage.hash_to_cors(cors)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
class Real
|
5
5
|
# Create an object in an S3 bucket
|
6
6
|
#
|
@@ -18,8 +18,10 @@ module Fog
|
|
18
18
|
# @option options x-amz-acl [String] Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
19
19
|
# @option options x-amz-storage-class [String] Default is 'STANDARD', set to 'REDUCED_REDUNDANCY' for non-critical, reproducable data
|
20
20
|
# @option options x-amz-meta-#{name} Headers to be returned with object, note total size of request without body must be less than 8 KB. Each name, value pair must conform to US-ASCII.
|
21
|
-
# @option options encryption [String] Sets HTTP header for server-side encryption. Set to 'AES256' for SSE-S3 and SSE-C. Set to 'aws:kms' for SSE-KMS
|
22
|
-
# @option options
|
21
|
+
# @option options x-amz-server-side-encryption [String] Sets HTTP header for server-side encryption. Set to 'AES256' for SSE-S3 and SSE-C. Set to 'aws:kms' for SSE-KMS
|
22
|
+
# @option options x-amz-server-side-encryption-customer-algorithm [String] Algorithm to use to when encrypting the object for SSE-C.
|
23
|
+
# @option options x-amz-server-side-encryption-customer-key [String] Encryption customer key for SSE-C
|
24
|
+
# @option options x-amz-server-side-encryption-customer-key-MD5 [String] MD5 digest of the encryption key for SSE-C
|
23
25
|
# @option options x-amz-server-side-encryption-aws-kms-key-id [String] KMS key ID of the encryption key for SSE-KMS
|
24
26
|
# @option options x-amz-server-side-encryption-context [String] Encryption context for SSE-KMS
|
25
27
|
#
|
@@ -27,7 +29,7 @@ module Fog
|
|
27
29
|
# * headers [Hash]:
|
28
30
|
# * ETag [String] etag of new object
|
29
31
|
#
|
30
|
-
# @see
|
32
|
+
# @see https://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT.html
|
31
33
|
|
32
34
|
def self.conforming_to_us_ascii!(keys, hash)
|
33
35
|
keys.each do |k|
|
@@ -57,14 +59,14 @@ module Fog
|
|
57
59
|
|
58
60
|
class Mock # :nodoc:all
|
59
61
|
require 'fog/aws/requests/storage/shared_mock_methods'
|
60
|
-
include Fog::Storage::
|
62
|
+
include Fog::AWS::Storage::SharedMockMethods
|
61
63
|
|
62
64
|
def put_object(bucket_name, object_name, data, options = {})
|
63
65
|
define_mock_acl(bucket_name, object_name, options)
|
64
66
|
|
65
67
|
data = parse_mock_data(data)
|
66
68
|
headers = data[:headers].merge!(options)
|
67
|
-
Fog::Storage::
|
69
|
+
Fog::AWS::Storage::Real.conforming_to_us_ascii! headers.keys.grep(/^x-amz-meta-/), headers
|
68
70
|
bucket = verify_mock_bucket_exists(bucket_name)
|
69
71
|
|
70
72
|
options['Content-Type'] ||= data[:headers]['Content-Type']
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
class Real
|
5
5
|
require 'fog/aws/requests/storage/acl_utils'
|
6
6
|
|
@@ -37,7 +37,7 @@ module Fog
|
|
37
37
|
headers = {}
|
38
38
|
|
39
39
|
if acl.is_a?(Hash)
|
40
|
-
data = Fog::Storage
|
40
|
+
data = Fog::AWS::Storage.hash_to_acl(acl)
|
41
41
|
else
|
42
42
|
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
43
43
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
@@ -64,7 +64,7 @@ module Fog
|
|
64
64
|
class Mock
|
65
65
|
def put_object_acl(bucket_name, object_name, acl, options = {})
|
66
66
|
if acl.is_a?(Hash)
|
67
|
-
self.data[:acls][:object][bucket_name][object_name] = Fog::Storage
|
67
|
+
self.data[:acls][:object][bucket_name][object_name] = Fog::AWS::Storage.hash_to_acl(acl)
|
68
68
|
else
|
69
69
|
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
70
70
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
|
+
class Real
|
5
|
+
# Change tag set for an S3 object
|
6
|
+
#
|
7
|
+
# @param bucket_name [String] Name of bucket to modify object in
|
8
|
+
# @param object_name [String] Name of object to modify
|
9
|
+
#
|
10
|
+
# @param tags [Hash]:
|
11
|
+
# * Key [String]: tag key
|
12
|
+
# * Value [String]: tag value
|
13
|
+
#
|
14
|
+
# @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObjectTagging.html
|
15
|
+
|
16
|
+
def put_object_tagging(bucket_name, object_name, tags)
|
17
|
+
tagging = tags.map do |k,v|
|
18
|
+
"<Tag><Key>#{k}</Key><Value>#{v}</Value></Tag>"
|
19
|
+
end.join("\n")
|
20
|
+
data =
|
21
|
+
<<-DATA
|
22
|
+
<Tagging xmlns="http://doc.s3.amazonaws.com/2006-03-01" >
|
23
|
+
<TagSet>
|
24
|
+
#{tagging}
|
25
|
+
</TagSet>
|
26
|
+
</Tagging>
|
27
|
+
DATA
|
28
|
+
|
29
|
+
request({
|
30
|
+
:body => data,
|
31
|
+
:expects => 200,
|
32
|
+
:headers => {'Content-MD5' => Base64.encode64(OpenSSL::Digest::MD5.digest(data)).chomp!, 'Content-Type' => 'application/xml'},
|
33
|
+
:bucket_name => bucket_name,
|
34
|
+
:object_name => object_name,
|
35
|
+
:method => 'PUT',
|
36
|
+
:query => {'tagging' => nil}
|
37
|
+
})
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
module SharedMockMethods
|
5
5
|
def define_mock_acl(bucket_name, object_name, options)
|
6
6
|
acl = options['x-amz-acl'] || 'private'
|
7
|
-
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
7
|
+
if !['private', 'public-read', 'public-read-write', 'authenticated-read', 'bucket-owner-read', 'bucket-owner-full-control'].include?(acl)
|
8
8
|
raise Excon::Errors::BadRequest.new('invalid x-amz-acl')
|
9
9
|
else
|
10
10
|
self.data[:acls][:object][bucket_name] ||= {}
|
@@ -15,6 +15,7 @@ module Fog
|
|
15
15
|
def parse_mock_data(data)
|
16
16
|
data = Fog::Storage.parse_data(data)
|
17
17
|
unless data[:body].is_a?(String)
|
18
|
+
data[:body].rewind if data[:body].eof?
|
18
19
|
data[:body] = data[:body].read
|
19
20
|
end
|
20
21
|
data
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Fog
|
2
|
-
module
|
3
|
-
class
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
4
|
class Real
|
5
5
|
# Upload a part for a multipart upload
|
6
6
|
#
|
@@ -37,7 +37,7 @@ module Fog
|
|
37
37
|
|
38
38
|
class Mock # :nodoc:all
|
39
39
|
require 'fog/aws/requests/storage/shared_mock_methods'
|
40
|
-
include Fog::Storage::
|
40
|
+
include Fog::AWS::Storage::SharedMockMethods
|
41
41
|
|
42
42
|
def upload_part(bucket_name, object_name, upload_id, part_number, data, options = {})
|
43
43
|
data = parse_mock_data(data)
|
@@ -0,0 +1,119 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class Storage
|
4
|
+
# From https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
|
5
|
+
ALLOWED_UPLOAD_PART_OPTIONS = %i(
|
6
|
+
x-amz-copy-source
|
7
|
+
x-amz-copy-source-if-match
|
8
|
+
x-amz-copy-source-if-modified-since
|
9
|
+
x-amz-copy-source-if-none-match
|
10
|
+
x-amz-copy-source-if-unmodified-since
|
11
|
+
x-amz-copy-source-range
|
12
|
+
x-amz-copy-source-server-side-encryption-customer-algorithm
|
13
|
+
x-amz-copy-source-server-side-encryption-customer-key
|
14
|
+
x-amz-copy-source-server-side-encryption-customer-key-MD5
|
15
|
+
x-amz-expected-bucket-owner
|
16
|
+
x-amz-request-payer
|
17
|
+
x-amz-server-side-encryption-customer-algorithm
|
18
|
+
x-amz-server-side-encryption-customer-key
|
19
|
+
x-amz-server-side-encryption-customer-key-MD5
|
20
|
+
x-amz-source-expected-bucket-owner
|
21
|
+
).freeze
|
22
|
+
|
23
|
+
class Real
|
24
|
+
require 'fog/aws/parsers/storage/upload_part_copy_object'
|
25
|
+
|
26
|
+
# Upload a part for a multipart copy
|
27
|
+
#
|
28
|
+
# @param target_bucket_name [String] Name of bucket to create copy in
|
29
|
+
# @param target_object_name [String] Name for new copy of object
|
30
|
+
# @param upload_id [String] Id of upload to add part to
|
31
|
+
# @param part_number [String] Index of part in upload
|
32
|
+
# @param options [Hash]:
|
33
|
+
# @option options [String] x-amz-metadata-directive Specifies whether to copy metadata from source or replace with data in request. Must be in ['COPY', 'REPLACE']
|
34
|
+
# @option options [String] x-amz-copy_source-if-match Copies object if its etag matches this value
|
35
|
+
# @option options [Time] x-amz-copy_source-if-modified_since Copies object it it has been modified since this time
|
36
|
+
# @option options [String] x-amz-copy_source-if-none-match Copies object if its etag does not match this value
|
37
|
+
# @option options [Time] x-amz-copy_source-if-unmodified-since Copies object it it has not been modified since this time
|
38
|
+
# @option options [Time] x-amz-copy-source-range Specifes the range of bytes to copy from the source object
|
39
|
+
#
|
40
|
+
# @return [Excon::Response]
|
41
|
+
# * body [Hash]:
|
42
|
+
# * ETag [String] - etag of new object
|
43
|
+
# * LastModified [Time] - date object was last modified
|
44
|
+
#
|
45
|
+
# @see https://docs.aws.amazon.com/AmazonS3/latest/API/API_UploadPartCopy.html
|
46
|
+
#
|
47
|
+
def upload_part_copy(target_bucket_name, target_object_name, upload_id, part_number, options = {})
|
48
|
+
headers = options
|
49
|
+
request({
|
50
|
+
:expects => 200,
|
51
|
+
:idempotent => true,
|
52
|
+
:headers => headers,
|
53
|
+
:bucket_name => target_bucket_name,
|
54
|
+
:object_name => target_object_name,
|
55
|
+
:method => 'PUT',
|
56
|
+
:query => {'uploadId' => upload_id, 'partNumber' => part_number},
|
57
|
+
:parser => Fog::Parsers::AWS::Storage::UploadPartCopyObject.new,
|
58
|
+
})
|
59
|
+
end
|
60
|
+
end # Real
|
61
|
+
|
62
|
+
class Mock # :nodoc:all
|
63
|
+
require 'fog/aws/requests/storage/shared_mock_methods'
|
64
|
+
include Fog::AWS::Storage::SharedMockMethods
|
65
|
+
|
66
|
+
def upload_part_copy(target_bucket_name, target_object_name, upload_id, part_number, options = {})
|
67
|
+
validate_options!(options)
|
68
|
+
|
69
|
+
copy_source = options['x-amz-copy-source']
|
70
|
+
copy_range = options['x-amz-copy-source-range']
|
71
|
+
|
72
|
+
raise 'No x-amz-copy-source header provided' unless copy_source
|
73
|
+
raise 'No x-amz-copy-source-range header provided' unless copy_range
|
74
|
+
|
75
|
+
source_bucket_name, source_object_name = copy_source.split('/', 2)
|
76
|
+
verify_mock_bucket_exists(source_bucket_name)
|
77
|
+
|
78
|
+
source_bucket = self.data[:buckets][source_bucket_name]
|
79
|
+
source_object = source_bucket && source_bucket[:objects][source_object_name] && source_bucket[:objects][source_object_name].first
|
80
|
+
upload_info = get_upload_info(target_bucket_name, upload_id)
|
81
|
+
|
82
|
+
response = Excon::Response.new
|
83
|
+
|
84
|
+
if source_object
|
85
|
+
start_pos, end_pos = byte_range(copy_range, source_object[:body].length)
|
86
|
+
upload_info[:parts][part_number] = source_object[:body][start_pos..end_pos]
|
87
|
+
|
88
|
+
response.status = 200
|
89
|
+
response.body = {
|
90
|
+
# just use the part number as the ETag, for simplicity
|
91
|
+
'ETag' => part_number.to_i,
|
92
|
+
'LastModified' => Time.parse(source_object['Last-Modified'])
|
93
|
+
}
|
94
|
+
response
|
95
|
+
else
|
96
|
+
response.status = 404
|
97
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
def byte_range(range, size)
|
102
|
+
matches = range.match(/bytes=(\d*)-(\d*)/)
|
103
|
+
|
104
|
+
return nil unless matches
|
105
|
+
|
106
|
+
end_pos = [matches[2].to_i, size].min
|
107
|
+
|
108
|
+
[matches[1].to_i, end_pos]
|
109
|
+
end
|
110
|
+
|
111
|
+
def validate_options!(options)
|
112
|
+
options.keys.each do |key|
|
113
|
+
raise "Invalid UploadPart option: #{key}" unless ::Fog::AWS::Storage::ALLOWED_UPLOAD_PART_OPTIONS.include?(key.to_sym)
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end # Mock
|
117
|
+
end # Storage
|
118
|
+
end # AWS
|
119
|
+
end # Fog
|