fog-google 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rubocop.yml +20 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +17 -0
- data/CONTRIBUTING.md +18 -0
- data/CONTRIBUTORS.md +41 -0
- data/Gemfile +4 -0
- data/LICENSE.md +20 -0
- data/README.md +55 -0
- data/Rakefile +34 -0
- data/examples/backend_services.rb +22 -0
- data/examples/bootstrap.rb +9 -0
- data/examples/create.rb +49 -0
- data/examples/dns/project.rb +8 -0
- data/examples/dns/zones.rb +43 -0
- data/examples/eric-fail.rb +36 -0
- data/examples/get_list_images.rb +26 -0
- data/examples/get_list_snapshots.rb +18 -0
- data/examples/image_all.rb +6 -0
- data/examples/image_create.rb +17 -0
- data/examples/l7_load_balance.rb +73 -0
- data/examples/launch_micro_instance.rb +29 -0
- data/examples/load-balance.rb +98 -0
- data/examples/metadata.rb +30 -0
- data/examples/monitoring/metric_descriptors.rb +11 -0
- data/examples/monitoring/timeseries_collection.rb +15 -0
- data/examples/monitoring/timeseries_descriptors.rb +15 -0
- data/examples/network.rb +38 -0
- data/examples/precreated_client.rb +14 -0
- data/examples/sql/flags.rb +7 -0
- data/examples/sql/instances.rb +38 -0
- data/examples/sql/operations.rb +20 -0
- data/examples/sql/ssl_certs.rb +28 -0
- data/examples/sql/tiers.rb +7 -0
- data/fog-google.gemspec +37 -0
- data/gemfiles/Gemfile.1.9.2+ +6 -0
- data/gemfiles/Gemfile.1.9.2- +9 -0
- data/lib/fog/bin/google.rb +88 -0
- data/lib/fog/google.rb +226 -0
- data/lib/fog/google/compute.rb +1068 -0
- data/lib/fog/google/dns.rb +96 -0
- data/lib/fog/google/models/compute/address.rb +94 -0
- data/lib/fog/google/models/compute/addresses.rb +40 -0
- data/lib/fog/google/models/compute/backend_service.rb +92 -0
- data/lib/fog/google/models/compute/backend_services.rb +22 -0
- data/lib/fog/google/models/compute/disk.rb +120 -0
- data/lib/fog/google/models/compute/disk_type.rb +28 -0
- data/lib/fog/google/models/compute/disk_types.rb +40 -0
- data/lib/fog/google/models/compute/disks.rb +41 -0
- data/lib/fog/google/models/compute/firewall.rb +46 -0
- data/lib/fog/google/models/compute/firewalls.rb +25 -0
- data/lib/fog/google/models/compute/flavor.rb +33 -0
- data/lib/fog/google/models/compute/flavors.rb +31 -0
- data/lib/fog/google/models/compute/forwarding_rule.rb +86 -0
- data/lib/fog/google/models/compute/forwarding_rules.rb +41 -0
- data/lib/fog/google/models/compute/global_forwarding_rule.rb +86 -0
- data/lib/fog/google/models/compute/global_forwarding_rules.rb +23 -0
- data/lib/fog/google/models/compute/http_health_check.rb +84 -0
- data/lib/fog/google/models/compute/http_health_checks.rb +26 -0
- data/lib/fog/google/models/compute/image.rb +90 -0
- data/lib/fog/google/models/compute/images.rb +73 -0
- data/lib/fog/google/models/compute/network.rb +43 -0
- data/lib/fog/google/models/compute/networks.rb +25 -0
- data/lib/fog/google/models/compute/operation.rb +75 -0
- data/lib/fog/google/models/compute/operations.rb +37 -0
- data/lib/fog/google/models/compute/project.rb +30 -0
- data/lib/fog/google/models/compute/projects.rb +20 -0
- data/lib/fog/google/models/compute/region.rb +32 -0
- data/lib/fog/google/models/compute/regions.rb +25 -0
- data/lib/fog/google/models/compute/resource_view.rb +116 -0
- data/lib/fog/google/models/compute/resource_views.rb +57 -0
- data/lib/fog/google/models/compute/route.rb +50 -0
- data/lib/fog/google/models/compute/routes.rb +25 -0
- data/lib/fog/google/models/compute/server.rb +258 -0
- data/lib/fog/google/models/compute/servers.rb +80 -0
- data/lib/fog/google/models/compute/snapshot.rb +48 -0
- data/lib/fog/google/models/compute/snapshots.rb +26 -0
- data/lib/fog/google/models/compute/target_http_proxies.rb +22 -0
- data/lib/fog/google/models/compute/target_http_proxy.rb +75 -0
- data/lib/fog/google/models/compute/target_instance.rb +74 -0
- data/lib/fog/google/models/compute/target_instances.rb +28 -0
- data/lib/fog/google/models/compute/target_pool.rb +113 -0
- data/lib/fog/google/models/compute/target_pools.rb +41 -0
- data/lib/fog/google/models/compute/url_map.rb +95 -0
- data/lib/fog/google/models/compute/url_maps.rb +22 -0
- data/lib/fog/google/models/compute/zone.rb +23 -0
- data/lib/fog/google/models/compute/zones.rb +24 -0
- data/lib/fog/google/models/dns/change.rb +40 -0
- data/lib/fog/google/models/dns/changes.rb +52 -0
- data/lib/fog/google/models/dns/project.rb +75 -0
- data/lib/fog/google/models/dns/projects.rb +25 -0
- data/lib/fog/google/models/dns/record.rb +112 -0
- data/lib/fog/google/models/dns/records.rb +52 -0
- data/lib/fog/google/models/dns/zone.rb +74 -0
- data/lib/fog/google/models/dns/zones.rb +34 -0
- data/lib/fog/google/models/monitoring/metric_descriptor.rb +20 -0
- data/lib/fog/google/models/monitoring/metric_descriptors.rb +28 -0
- data/lib/fog/google/models/monitoring/timeseries.rb +17 -0
- data/lib/fog/google/models/monitoring/timeseries_collection.rb +31 -0
- data/lib/fog/google/models/monitoring/timeseries_descriptor.rb +20 -0
- data/lib/fog/google/models/monitoring/timeseries_descriptors.rb +31 -0
- data/lib/fog/google/models/sql/backup_run.rb +34 -0
- data/lib/fog/google/models/sql/backup_runs.rb +38 -0
- data/lib/fog/google/models/sql/flag.rb +22 -0
- data/lib/fog/google/models/sql/flags.rb +21 -0
- data/lib/fog/google/models/sql/instance.rb +353 -0
- data/lib/fog/google/models/sql/instances.rb +39 -0
- data/lib/fog/google/models/sql/operation.rb +61 -0
- data/lib/fog/google/models/sql/operations.rb +49 -0
- data/lib/fog/google/models/sql/ssl_cert.rb +73 -0
- data/lib/fog/google/models/sql/ssl_certs.rb +49 -0
- data/lib/fog/google/models/sql/tier.rb +20 -0
- data/lib/fog/google/models/sql/tiers.rb +21 -0
- data/lib/fog/google/models/storage/directories.rb +39 -0
- data/lib/fog/google/models/storage/directory.rb +74 -0
- data/lib/fog/google/models/storage/file.rb +144 -0
- data/lib/fog/google/models/storage/files.rb +104 -0
- data/lib/fog/google/monitoring.rb +87 -0
- data/lib/fog/google/parsers/storage/access_control_list.rb +44 -0
- data/lib/fog/google/parsers/storage/copy_object.rb +18 -0
- data/lib/fog/google/parsers/storage/get_bucket.rb +58 -0
- data/lib/fog/google/parsers/storage/get_bucket_logging.rb +36 -0
- data/lib/fog/google/parsers/storage/get_bucket_object_versions.rb +84 -0
- data/lib/fog/google/parsers/storage/get_bucket_versioning.rb +20 -0
- data/lib/fog/google/parsers/storage/get_request_payment.rb +16 -0
- data/lib/fog/google/parsers/storage/get_service.rb +28 -0
- data/lib/fog/google/requests/compute/add_backend_service_backends.rb +29 -0
- data/lib/fog/google/requests/compute/add_region_view_resources.rb +27 -0
- data/lib/fog/google/requests/compute/add_server_access_config.rb +32 -0
- data/lib/fog/google/requests/compute/add_target_pool_health_checks.rb +27 -0
- data/lib/fog/google/requests/compute/add_target_pool_instances.rb +27 -0
- data/lib/fog/google/requests/compute/add_url_map_host_rules.rb +25 -0
- data/lib/fog/google/requests/compute/add_url_map_path_matchers.rb +29 -0
- data/lib/fog/google/requests/compute/add_zone_view_resources.rb +27 -0
- data/lib/fog/google/requests/compute/attach_disk.rb +34 -0
- data/lib/fog/google/requests/compute/delete_address.rb +24 -0
- data/lib/fog/google/requests/compute/delete_backend_service.rb +43 -0
- data/lib/fog/google/requests/compute/delete_disk.rb +48 -0
- data/lib/fog/google/requests/compute/delete_firewall.rb +23 -0
- data/lib/fog/google/requests/compute/delete_forwarding_rule.rb +49 -0
- data/lib/fog/google/requests/compute/delete_global_forwarding_rule.rb +48 -0
- data/lib/fog/google/requests/compute/delete_global_operation.rb +25 -0
- data/lib/fog/google/requests/compute/delete_http_health_check.rb +41 -0
- data/lib/fog/google/requests/compute/delete_image.rb +42 -0
- data/lib/fog/google/requests/compute/delete_network.rb +23 -0
- data/lib/fog/google/requests/compute/delete_region_operation.rb +29 -0
- data/lib/fog/google/requests/compute/delete_region_view.rb +24 -0
- data/lib/fog/google/requests/compute/delete_route.rb +23 -0
- data/lib/fog/google/requests/compute/delete_server.rb +69 -0
- data/lib/fog/google/requests/compute/delete_server_access_config.rb +26 -0
- data/lib/fog/google/requests/compute/delete_snapshot.rb +23 -0
- data/lib/fog/google/requests/compute/delete_target_http_proxy.rb +43 -0
- data/lib/fog/google/requests/compute/delete_target_instance.rb +48 -0
- data/lib/fog/google/requests/compute/delete_target_pool.rb +49 -0
- data/lib/fog/google/requests/compute/delete_url_map.rb +43 -0
- data/lib/fog/google/requests/compute/delete_zone_operation.rb +29 -0
- data/lib/fog/google/requests/compute/delete_zone_view.rb +24 -0
- data/lib/fog/google/requests/compute/detach_disk.rb +25 -0
- data/lib/fog/google/requests/compute/get_address.rb +24 -0
- data/lib/fog/google/requests/compute/get_backend_service.rb +26 -0
- data/lib/fog/google/requests/compute/get_backend_service_health.rb +27 -0
- data/lib/fog/google/requests/compute/get_backend_services.rb +23 -0
- data/lib/fog/google/requests/compute/get_disk.rb +52 -0
- data/lib/fog/google/requests/compute/get_disk_type.rb +42 -0
- data/lib/fog/google/requests/compute/get_firewall.rb +23 -0
- data/lib/fog/google/requests/compute/get_forwarding_rule.rb +46 -0
- data/lib/fog/google/requests/compute/get_global_forwarding_rule.rb +32 -0
- data/lib/fog/google/requests/compute/get_global_operation.rb +50 -0
- data/lib/fog/google/requests/compute/get_http_health_check.rb +39 -0
- data/lib/fog/google/requests/compute/get_image.rb +36 -0
- data/lib/fog/google/requests/compute/get_machine_type.rb +43 -0
- data/lib/fog/google/requests/compute/get_network.rb +23 -0
- data/lib/fog/google/requests/compute/get_project.rb +22 -0
- data/lib/fog/google/requests/compute/get_region.rb +37 -0
- data/lib/fog/google/requests/compute/get_region_operation.rb +55 -0
- data/lib/fog/google/requests/compute/get_region_view.rb +24 -0
- data/lib/fog/google/requests/compute/get_route.rb +23 -0
- data/lib/fog/google/requests/compute/get_server.rb +75 -0
- data/lib/fog/google/requests/compute/get_server_serial_port_output.rb +24 -0
- data/lib/fog/google/requests/compute/get_snapshot.rb +27 -0
- data/lib/fog/google/requests/compute/get_target_http_proxy.rb +27 -0
- data/lib/fog/google/requests/compute/get_target_instance.rb +32 -0
- data/lib/fog/google/requests/compute/get_target_pool.rb +40 -0
- data/lib/fog/google/requests/compute/get_target_pool_health.rb +29 -0
- data/lib/fog/google/requests/compute/get_url_map.rb +27 -0
- data/lib/fog/google/requests/compute/get_zone.rb +36 -0
- data/lib/fog/google/requests/compute/get_zone_operation.rb +55 -0
- data/lib/fog/google/requests/compute/get_zone_view.rb +24 -0
- data/lib/fog/google/requests/compute/insert_address.rb +25 -0
- data/lib/fog/google/requests/compute/insert_backend_service.rb +63 -0
- data/lib/fog/google/requests/compute/insert_disk.rb +113 -0
- data/lib/fog/google/requests/compute/insert_firewall.rb +43 -0
- data/lib/fog/google/requests/compute/insert_forwarding_rule.rb +60 -0
- data/lib/fog/google/requests/compute/insert_global_forwarding_rule.rb +56 -0
- data/lib/fog/google/requests/compute/insert_http_health_check.rb +59 -0
- data/lib/fog/google/requests/compute/insert_image.rb +64 -0
- data/lib/fog/google/requests/compute/insert_network.rb +29 -0
- data/lib/fog/google/requests/compute/insert_region_view.rb +25 -0
- data/lib/fog/google/requests/compute/insert_route.rb +35 -0
- data/lib/fog/google/requests/compute/insert_server.rb +191 -0
- data/lib/fog/google/requests/compute/insert_snapshot.rb +40 -0
- data/lib/fog/google/requests/compute/insert_target_http_proxy.rb +52 -0
- data/lib/fog/google/requests/compute/insert_target_instance.rb +55 -0
- data/lib/fog/google/requests/compute/insert_target_pool.rb +58 -0
- data/lib/fog/google/requests/compute/insert_url_map.rb +55 -0
- data/lib/fog/google/requests/compute/insert_zone_view.rb +27 -0
- data/lib/fog/google/requests/compute/list_addresses.rb +23 -0
- data/lib/fog/google/requests/compute/list_aggregated_addresses.rb +23 -0
- data/lib/fog/google/requests/compute/list_aggregated_disk_types.rb +40 -0
- data/lib/fog/google/requests/compute/list_aggregated_disks.rb +40 -0
- data/lib/fog/google/requests/compute/list_aggregated_machine_types.rb +22 -0
- data/lib/fog/google/requests/compute/list_aggregated_servers.rb +40 -0
- data/lib/fog/google/requests/compute/list_backend_services.rb +29 -0
- data/lib/fog/google/requests/compute/list_disk_types.rb +46 -0
- data/lib/fog/google/requests/compute/list_disks.rb +29 -0
- data/lib/fog/google/requests/compute/list_firewalls.rb +22 -0
- data/lib/fog/google/requests/compute/list_forwarding_rules.rb +29 -0
- data/lib/fog/google/requests/compute/list_global_forwarding_rules.rb +30 -0
- data/lib/fog/google/requests/compute/list_global_operations.rb +24 -0
- data/lib/fog/google/requests/compute/list_http_health_checks.rb +29 -0
- data/lib/fog/google/requests/compute/list_images.rb +29 -0
- data/lib/fog/google/requests/compute/list_machine_types.rb +30 -0
- data/lib/fog/google/requests/compute/list_networks.rb +22 -0
- data/lib/fog/google/requests/compute/list_region_operations.rb +25 -0
- data/lib/fog/google/requests/compute/list_region_view_resources.rb +25 -0
- data/lib/fog/google/requests/compute/list_region_views.rb +23 -0
- data/lib/fog/google/requests/compute/list_regions.rb +85 -0
- data/lib/fog/google/requests/compute/list_routes.rb +22 -0
- data/lib/fog/google/requests/compute/list_servers.rb +31 -0
- data/lib/fog/google/requests/compute/list_snapshots.rb +23 -0
- data/lib/fog/google/requests/compute/list_target_http_proxies.rb +30 -0
- data/lib/fog/google/requests/compute/list_target_instances.rb +30 -0
- data/lib/fog/google/requests/compute/list_target_pools.rb +29 -0
- data/lib/fog/google/requests/compute/list_url_maps.rb +29 -0
- data/lib/fog/google/requests/compute/list_zone_operations.rb +25 -0
- data/lib/fog/google/requests/compute/list_zone_view_resources.rb +25 -0
- data/lib/fog/google/requests/compute/list_zone_views.rb +23 -0
- data/lib/fog/google/requests/compute/list_zones.rb +28 -0
- data/lib/fog/google/requests/compute/remove_target_pool_health_checks.rb +27 -0
- data/lib/fog/google/requests/compute/remove_target_pool_instance.rb +27 -0
- data/lib/fog/google/requests/compute/remove_target_pool_instances.rb +27 -0
- data/lib/fog/google/requests/compute/reset_server.rb +24 -0
- data/lib/fog/google/requests/compute/set_common_instance_metadata.rb +26 -0
- data/lib/fog/google/requests/compute/set_forwarding_rule_target.rb +27 -0
- data/lib/fog/google/requests/compute/set_global_forwarding_rule_target.rb +27 -0
- data/lib/fog/google/requests/compute/set_metadata.rb +39 -0
- data/lib/fog/google/requests/compute/set_server_disk_auto_delete.rb +26 -0
- data/lib/fog/google/requests/compute/set_server_scheduling.rb +29 -0
- data/lib/fog/google/requests/compute/set_tags.rb +24 -0
- data/lib/fog/google/requests/compute/set_target_http_proxy_url_map.rb +27 -0
- data/lib/fog/google/requests/compute/start_server.rb +24 -0
- data/lib/fog/google/requests/compute/stop_server.rb +24 -0
- data/lib/fog/google/requests/compute/update_url_map.rb +39 -0
- data/lib/fog/google/requests/compute/validate_url_map.rb +24 -0
- data/lib/fog/google/requests/dns/create_change.rb +64 -0
- data/lib/fog/google/requests/dns/create_managed_zone.rb +82 -0
- data/lib/fog/google/requests/dns/delete_managed_zone.rb +35 -0
- data/lib/fog/google/requests/dns/get_change.rb +42 -0
- data/lib/fog/google/requests/dns/get_managed_zone.rb +37 -0
- data/lib/fog/google/requests/dns/get_project.rb +42 -0
- data/lib/fog/google/requests/dns/list_changes.rb +41 -0
- data/lib/fog/google/requests/dns/list_managed_zones.rb +31 -0
- data/lib/fog/google/requests/dns/list_resource_record_sets.rb +50 -0
- data/lib/fog/google/requests/monitoring/list_metric_descriptors.rb +191 -0
- data/lib/fog/google/requests/monitoring/list_timeseries.rb +68 -0
- data/lib/fog/google/requests/monitoring/list_timeseries_descriptors.rb +87 -0
- data/lib/fog/google/requests/sql/clone_instance.rb +84 -0
- data/lib/fog/google/requests/sql/delete_instance.rb +67 -0
- data/lib/fog/google/requests/sql/delete_ssl_cert.rb +68 -0
- data/lib/fog/google/requests/sql/export_instance.rb +56 -0
- data/lib/fog/google/requests/sql/get_backup_run.rb +30 -0
- data/lib/fog/google/requests/sql/get_instance.rb +48 -0
- data/lib/fog/google/requests/sql/get_operation.rb +66 -0
- data/lib/fog/google/requests/sql/get_ssl_cert.rb +66 -0
- data/lib/fog/google/requests/sql/import_instance.rb +55 -0
- data/lib/fog/google/requests/sql/insert_instance.rb +165 -0
- data/lib/fog/google/requests/sql/insert_ssl_cert.rb +80 -0
- data/lib/fog/google/requests/sql/list_backup_runs.rb +30 -0
- data/lib/fog/google/requests/sql/list_flags.rb +143 -0
- data/lib/fog/google/requests/sql/list_instances.rb +32 -0
- data/lib/fog/google/requests/sql/list_operations.rb +52 -0
- data/lib/fog/google/requests/sql/list_ssl_certs.rb +51 -0
- data/lib/fog/google/requests/sql/list_tiers.rb +82 -0
- data/lib/fog/google/requests/sql/reset_instance_ssl_config.rb +49 -0
- data/lib/fog/google/requests/sql/restart_instance.rb +47 -0
- data/lib/fog/google/requests/sql/restore_instance_backup.rb +30 -0
- data/lib/fog/google/requests/sql/set_instance_root_password.rb +54 -0
- data/lib/fog/google/requests/sql/update_instance.rb +132 -0
- data/lib/fog/google/requests/storage/copy_object.rb +68 -0
- data/lib/fog/google/requests/storage/delete_bucket.rb +41 -0
- data/lib/fog/google/requests/storage/delete_object.rb +46 -0
- data/lib/fog/google/requests/storage/get_bucket.rb +106 -0
- data/lib/fog/google/requests/storage/get_bucket_acl.rb +59 -0
- data/lib/fog/google/requests/storage/get_object.rb +108 -0
- data/lib/fog/google/requests/storage/get_object_acl.rb +70 -0
- data/lib/fog/google/requests/storage/get_object_http_url.rb +44 -0
- data/lib/fog/google/requests/storage/get_object_https_url.rb +44 -0
- data/lib/fog/google/requests/storage/get_object_torrent.rb +45 -0
- data/lib/fog/google/requests/storage/get_object_url.rb +33 -0
- data/lib/fog/google/requests/storage/get_service.rb +48 -0
- data/lib/fog/google/requests/storage/head_object.rb +60 -0
- data/lib/fog/google/requests/storage/put_bucket.rb +71 -0
- data/lib/fog/google/requests/storage/put_bucket_acl.rb +58 -0
- data/lib/fog/google/requests/storage/put_object.rb +89 -0
- data/lib/fog/google/requests/storage/put_object_acl.rb +51 -0
- data/lib/fog/google/requests/storage/put_object_url.rb +50 -0
- data/lib/fog/google/sql.rb +130 -0
- data/lib/fog/google/storage.rb +298 -0
- data/lib/fog/google/version.rb +5 -0
- data/spec/minitest_helper.rb +31 -0
- data/tests/credentials_tests.rb +73 -0
- data/tests/helper.rb +126 -0
- data/tests/helpers/collection_helper.rb +97 -0
- data/tests/helpers/compute/flavors_helper.rb +32 -0
- data/tests/helpers/compute/server_helper.rb +25 -0
- data/tests/helpers/compute/servers_helper.rb +10 -0
- data/tests/helpers/formats_helper.rb +98 -0
- data/tests/helpers/formats_helper_tests.rb +110 -0
- data/tests/helpers/mock_helper.rb +18 -0
- data/tests/helpers/model_helper.rb +31 -0
- data/tests/helpers/responds_to_helper.rb +11 -0
- data/tests/helpers/schema_validator_tests.rb +107 -0
- data/tests/helpers/succeeds_helper.rb +9 -0
- data/tests/lorem.txt +1 -0
- data/tests/models/compute/backend_service_tests.rb +6 -0
- data/tests/models/compute/backend_services_tests.rb +8 -0
- data/tests/models/compute/disk_tests.rb +9 -0
- data/tests/models/compute/disk_types_tests.rb +22 -0
- data/tests/models/compute/disks_tests.rb +9 -0
- data/tests/models/compute/forwarding_rule_tests.rb +8 -0
- data/tests/models/compute/forwarding_rules_tests.rb +8 -0
- data/tests/models/compute/global_forwarding_rule_tests.rb +7 -0
- data/tests/models/compute/global_forwarding_rules_tests.rb +7 -0
- data/tests/models/compute/http_health_check_tests.rb +5 -0
- data/tests/models/compute/http_health_checks_tests.rb +5 -0
- data/tests/models/compute/image_tests.rb +6 -0
- data/tests/models/compute/images_tests.rb +6 -0
- data/tests/models/compute/region_tests.rb +10 -0
- data/tests/models/compute/regions_tests.rb +19 -0
- data/tests/models/compute/server_tests.rb +37 -0
- data/tests/models/compute/servers_tests.rb +14 -0
- data/tests/models/compute/target_http_proxies_tests.rb +7 -0
- data/tests/models/compute/target_http_proxy_test.rb +6 -0
- data/tests/models/compute/target_instance_tests.rb +7 -0
- data/tests/models/compute/target_instances_tests.rb +7 -0
- data/tests/models/compute/target_pool_tests.rb +12 -0
- data/tests/models/compute/target_pools_tests.rb +11 -0
- data/tests/models/compute/url_map_tests.rb +6 -0
- data/tests/models/compute/url_maps_tests.rb +7 -0
- data/tests/models/dns/change_tests.rb +28 -0
- data/tests/models/dns/changes_tests.rb +36 -0
- data/tests/models/dns/projects_tests.rb +12 -0
- data/tests/models/dns/record_tests.rb +42 -0
- data/tests/models/dns/records_tests.rb +36 -0
- data/tests/models/dns/zone_tests.rb +28 -0
- data/tests/models/dns/zones_tests.rb +14 -0
- data/tests/models/monitoring/metric_descriptors_tests.rb +12 -0
- data/tests/models/monitoring/timeseries_collection_tests.rb +12 -0
- data/tests/models/monitoring/timeseries_descriptors_tests.rb +13 -0
- data/tests/models/sql/flags_tests.rb +12 -0
- data/tests/models/sql/instance_tests.rb +56 -0
- data/tests/models/sql/instances_tests.rb +32 -0
- data/tests/models/sql/operation_tests.rb +25 -0
- data/tests/models/sql/operations_tests.rb +38 -0
- data/tests/models/sql/ssl_cert_tests.rb +24 -0
- data/tests/models/sql/ssl_certs_tests.rb +39 -0
- data/tests/models/sql/tiers_tests.rb +12 -0
- data/tests/requests/compute/backend_service_tests.rb +83 -0
- data/tests/requests/compute/disk_tests.rb +74 -0
- data/tests/requests/compute/disk_type_tests.rb +45 -0
- data/tests/requests/compute/firewall_tests.rb +88 -0
- data/tests/requests/compute/forwarding_rules_tests.rb +83 -0
- data/tests/requests/compute/global_forwarding_rules_tests.rb +83 -0
- data/tests/requests/compute/http_health_checks_tests.rb +83 -0
- data/tests/requests/compute/image_tests.rb +83 -0
- data/tests/requests/compute/network_tests.rb +75 -0
- data/tests/requests/compute/operation_tests.rb +20 -0
- data/tests/requests/compute/region_tests.rb +39 -0
- data/tests/requests/compute/server_tests.rb +84 -0
- data/tests/requests/compute/target_http_proxies_test.rb +79 -0
- data/tests/requests/compute/target_instances_tests.rb +83 -0
- data/tests/requests/compute/target_pools_tests.rb +82 -0
- data/tests/requests/compute/url_maps_tests.rb +82 -0
- data/tests/requests/compute/zone_tests.rb +37 -0
- data/tests/requests/dns/change_tests.rb +86 -0
- data/tests/requests/dns/managed_zone_tests.rb +66 -0
- data/tests/requests/dns/project_tests.rb +29 -0
- data/tests/requests/dns/record_tests.rb +49 -0
- data/tests/requests/monitoring/metric_descriptor_tests.rb +25 -0
- data/tests/requests/monitoring/timeseries_collection_tests.rb +25 -0
- data/tests/requests/monitoring/timeseries_descriptor_tests.rb +26 -0
- data/tests/requests/sql/flag_tests.rb +27 -0
- data/tests/requests/sql/instance_tests.rb +129 -0
- data/tests/requests/sql/operation_tests.rb +42 -0
- data/tests/requests/sql/ssl_cert_tests.rb +61 -0
- data/tests/requests/sql/tier_tests.rb +25 -0
- data/tests/requests/storage/bucket_tests.rb +77 -0
- data/tests/requests/storage/object_tests.rb +84 -0
- metadata +625 -0
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
module GetObjectHttpUrl
|
|
5
|
+
def get_object_http_url(bucket_name, object_name, expires)
|
|
6
|
+
unless bucket_name
|
|
7
|
+
raise ArgumentError.new('bucket_name is required')
|
|
8
|
+
end
|
|
9
|
+
unless object_name
|
|
10
|
+
raise ArgumentError.new('object_name is required')
|
|
11
|
+
end
|
|
12
|
+
http_url({
|
|
13
|
+
:headers => {},
|
|
14
|
+
:host => @host,
|
|
15
|
+
:method => 'GET',
|
|
16
|
+
:path => "#{bucket_name}/#{object_name}"
|
|
17
|
+
}, expires)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Real
|
|
22
|
+
# Get an expiring object http url from S3
|
|
23
|
+
#
|
|
24
|
+
# ==== Parameters
|
|
25
|
+
# * bucket_name<~String> - Name of bucket containing object
|
|
26
|
+
# * object_name<~String> - Name of object to get expiring url for
|
|
27
|
+
# * expires<~Time> - An expiry time for this url
|
|
28
|
+
#
|
|
29
|
+
# ==== Returns
|
|
30
|
+
# * response<~Excon::Response>:
|
|
31
|
+
# * body<~String> - url for object
|
|
32
|
+
#
|
|
33
|
+
# ==== See Also
|
|
34
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
35
|
+
|
|
36
|
+
include GetObjectHttpUrl
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class Mock # :nodoc:all
|
|
40
|
+
include GetObjectHttpUrl
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
module GetObjectHttpsUrl
|
|
5
|
+
def get_object_https_url(bucket_name, object_name, expires)
|
|
6
|
+
unless bucket_name
|
|
7
|
+
raise ArgumentError.new('bucket_name is required')
|
|
8
|
+
end
|
|
9
|
+
unless object_name
|
|
10
|
+
raise ArgumentError.new('object_name is required')
|
|
11
|
+
end
|
|
12
|
+
https_url({
|
|
13
|
+
:headers => {},
|
|
14
|
+
:host => @host,
|
|
15
|
+
:method => 'GET',
|
|
16
|
+
:path => "#{bucket_name}/#{object_name}"
|
|
17
|
+
}, expires)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
class Real
|
|
22
|
+
# Get an expiring object https url from Google Storage
|
|
23
|
+
#
|
|
24
|
+
# ==== Parameters
|
|
25
|
+
# * bucket_name<~String> - Name of bucket containing object
|
|
26
|
+
# * object_name<~String> - Name of object to get expiring url for
|
|
27
|
+
# * expires<~Time> - An expiry time for this url
|
|
28
|
+
#
|
|
29
|
+
# ==== Returns
|
|
30
|
+
# * response<~Excon::Response>:
|
|
31
|
+
# * body<~String> - url for object
|
|
32
|
+
#
|
|
33
|
+
# ==== See Also
|
|
34
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
35
|
+
|
|
36
|
+
include GetObjectHttpsUrl
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
class Mock # :nodoc:all
|
|
40
|
+
include GetObjectHttpsUrl
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
# Get torrent for an Google Storage object
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * bucket_name<~String> - name of bucket containing object
|
|
9
|
+
# * object_name<~String> - name of object to get torrent for
|
|
10
|
+
#
|
|
11
|
+
# ==== Returns
|
|
12
|
+
# * response<~Excon::Response>:
|
|
13
|
+
# * body<~Hash>:
|
|
14
|
+
# * 'AccessControlPolicy'<~Hash>
|
|
15
|
+
# * 'Owner'<~Hash>:
|
|
16
|
+
# * 'DisplayName'<~String> - Display name of object owner
|
|
17
|
+
# * 'ID'<~String> - Id of object owner
|
|
18
|
+
# * 'AccessControlList'<~Array>:
|
|
19
|
+
# * 'Grant'<~Hash>:
|
|
20
|
+
# * 'Grantee'<~Hash>:
|
|
21
|
+
# * 'DisplayName'<~String> - Display name of grantee
|
|
22
|
+
# * 'ID'<~String> - Id of grantee
|
|
23
|
+
# * 'Permission'<~String> - Permission, in [FULL_CONTROL, WRITE, WRITE_ACP, READ, READ_ACP]
|
|
24
|
+
#
|
|
25
|
+
def get_object_torrent(bucket_name, object_name)
|
|
26
|
+
unless bucket_name
|
|
27
|
+
raise ArgumentError.new('bucket_name is required')
|
|
28
|
+
end
|
|
29
|
+
unless object_name
|
|
30
|
+
raise ArgumentError.new('object_name is required')
|
|
31
|
+
end
|
|
32
|
+
request({
|
|
33
|
+
:expects => 200,
|
|
34
|
+
:headers => {},
|
|
35
|
+
:host => "#{bucket_name}.#{@host}",
|
|
36
|
+
:idempotent => true,
|
|
37
|
+
:method => 'GET',
|
|
38
|
+
:path => CGI.escape(object_name),
|
|
39
|
+
:query => {'torrent' => nil}
|
|
40
|
+
})
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
# Get an expiring object url from Google Storage
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * bucket_name<~String> - Name of bucket containing object
|
|
9
|
+
# * object_name<~String> - Name of object to get expiring url for
|
|
10
|
+
# * expires<~Time> - An expiry time for this url
|
|
11
|
+
#
|
|
12
|
+
# ==== Returns
|
|
13
|
+
# * response<~Excon::Response>:
|
|
14
|
+
# * body<~String> - url for object
|
|
15
|
+
#
|
|
16
|
+
# ==== See Also
|
|
17
|
+
# http://docs.amazonwebservices.com/AmazonS3/latest/dev/S3_QSAuth.html
|
|
18
|
+
|
|
19
|
+
def get_object_url(bucket_name, object_name, expires)
|
|
20
|
+
Fog::Logger.deprecation("Fog::Storage::Google => ##{get_object_url} is deprecated, use ##{get_object_https_url} instead[/] [light_black](#{caller.first})")
|
|
21
|
+
get_object_https_url(bucket_name, object_name, expires)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
class Mock # :nodoc:all
|
|
26
|
+
def get_object_url(bucket_name, object_name, expires)
|
|
27
|
+
Fog::Logger.deprecation("Fog::Storage::Google => ##{get_object_url} is deprecated, use ##{get_object_https_url} instead[/] [light_black](#{caller.first})")
|
|
28
|
+
get_object_https_url(bucket_name, object_name, expires)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
require 'fog/google/parsers/storage/get_service'
|
|
6
|
+
|
|
7
|
+
# List information about Google Storage buckets for authorized user
|
|
8
|
+
#
|
|
9
|
+
# ==== Returns
|
|
10
|
+
# * response<~Excon::Response>:
|
|
11
|
+
# * body<~Hash>:
|
|
12
|
+
# * 'Buckets'<~Hash>:
|
|
13
|
+
# * 'Name'<~String> - Name of bucket
|
|
14
|
+
# * 'CreationTime'<~Time> - Timestamp of bucket creation
|
|
15
|
+
# * 'Owner'<~Hash>:
|
|
16
|
+
# * 'DisplayName'<~String> - Display name of bucket owner
|
|
17
|
+
# * 'ID'<~String> - Id of bucket owner
|
|
18
|
+
def get_service
|
|
19
|
+
request({
|
|
20
|
+
:expects => 200,
|
|
21
|
+
:headers => {},
|
|
22
|
+
:host => @host,
|
|
23
|
+
:idempotent => true,
|
|
24
|
+
:method => 'GET',
|
|
25
|
+
:parser => Fog::Parsers::Storage::Google::GetService.new
|
|
26
|
+
})
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
class Mock
|
|
31
|
+
def get_service
|
|
32
|
+
response = Excon::Response.new
|
|
33
|
+
response.headers['Status'] = 200
|
|
34
|
+
buckets = self.data[:buckets].values.map do |bucket|
|
|
35
|
+
bucket.reject do |key, value|
|
|
36
|
+
!['CreationDate', 'Name'].include?(key)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
response.body = {
|
|
40
|
+
'Buckets' => buckets,
|
|
41
|
+
'Owner' => { 'ID' => 'some_id'}
|
|
42
|
+
}
|
|
43
|
+
response
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
# Get headers for an object from Google Storage
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * bucket_name<~String> - Name of bucket to read from
|
|
9
|
+
# * object_name<~String> - Name of object to read
|
|
10
|
+
# * options<~Hash>:
|
|
11
|
+
# * 'If-Match'<~String> - Returns object only if its etag matches this value, otherwise returns 412 (Precondition Failed).
|
|
12
|
+
# * 'If-Modified-Since'<~Time> - Returns object only if it has been modified since this time, otherwise returns 304 (Not Modified).
|
|
13
|
+
# * 'If-None-Match'<~String> - Returns object only if its etag differs from this value, otherwise returns 304 (Not Modified)
|
|
14
|
+
# * 'If-Unmodified-Since'<~Time> - Returns object only if it has not been modified since this time, otherwise returns 412 (Precodition Failed).
|
|
15
|
+
# * 'Range'<~String> - Range of object to download
|
|
16
|
+
# * 'versionId'<~String> - specify a particular version to retrieve
|
|
17
|
+
#
|
|
18
|
+
# ==== Returns
|
|
19
|
+
# * response<~Excon::Response>:
|
|
20
|
+
# * body<~String> - Contents of object
|
|
21
|
+
# * headers<~Hash>:
|
|
22
|
+
# * 'Content-Length'<~String> - Size of object contents
|
|
23
|
+
# * 'Content-Type'<~String> - MIME type of object
|
|
24
|
+
# * 'ETag'<~String> - Etag of object
|
|
25
|
+
# * 'Last-Modified'<~String> - Last modified timestamp for object
|
|
26
|
+
def head_object(bucket_name, object_name, options={})
|
|
27
|
+
unless bucket_name
|
|
28
|
+
raise ArgumentError.new('bucket_name is required')
|
|
29
|
+
end
|
|
30
|
+
unless object_name
|
|
31
|
+
raise ArgumentError.new('object_name is required')
|
|
32
|
+
end
|
|
33
|
+
if version_id = options.delete('versionId')
|
|
34
|
+
query = {'versionId' => version_id}
|
|
35
|
+
end
|
|
36
|
+
headers = {}
|
|
37
|
+
headers['If-Modified-Since'] = Fog::Time.at(options['If-Modified-Since'].to_i).to_date_header if options['If-Modified-Since']
|
|
38
|
+
headers['If-Unmodified-Since'] = Fog::Time.at(options['If-Unmodified-Since'].to_i).to_date_header if options['If-Modified-Since']
|
|
39
|
+
headers.merge!(options)
|
|
40
|
+
request({
|
|
41
|
+
:expects => 200,
|
|
42
|
+
:headers => headers,
|
|
43
|
+
:host => "#{bucket_name}.#{@host}",
|
|
44
|
+
:method => 'HEAD',
|
|
45
|
+
:path => CGI.escape(object_name),
|
|
46
|
+
:query => query
|
|
47
|
+
})
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class Mock
|
|
52
|
+
def head_object(bucket_name, object_name, options = {})
|
|
53
|
+
response = get_object(bucket_name, object_name, options)
|
|
54
|
+
response.body = nil
|
|
55
|
+
response
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
# Create an Google Storage bucket
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * bucket_name<~String> - name of bucket to create
|
|
9
|
+
# * options<~Hash> - config arguments for bucket. Defaults to {}.
|
|
10
|
+
# * 'LocationConstraint'<~Symbol> - sets the location for the bucket
|
|
11
|
+
# * 'x-amz-acl'<~String> - Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
|
12
|
+
#
|
|
13
|
+
# ==== Returns
|
|
14
|
+
# * response<~Excon::Response>:
|
|
15
|
+
# * status<~Integer> - 200
|
|
16
|
+
def put_bucket(bucket_name, options = {})
|
|
17
|
+
if location_constraint = options.delete('LocationConstraint')
|
|
18
|
+
data =
|
|
19
|
+
<<-DATA
|
|
20
|
+
<CreateBucketConfiguration>
|
|
21
|
+
<LocationConstraint>#{location_constraint}</LocationConstraint>
|
|
22
|
+
</CreateBucketConfiguration>
|
|
23
|
+
DATA
|
|
24
|
+
else
|
|
25
|
+
data = nil
|
|
26
|
+
end
|
|
27
|
+
request({
|
|
28
|
+
:expects => 200,
|
|
29
|
+
:body => data,
|
|
30
|
+
:headers => options,
|
|
31
|
+
:idempotent => true,
|
|
32
|
+
:host => "#{bucket_name}.#{@host}",
|
|
33
|
+
:method => 'PUT'
|
|
34
|
+
})
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
class Mock
|
|
39
|
+
def put_bucket(bucket_name, options = {})
|
|
40
|
+
acl = options['x-goog-acl'] || 'private'
|
|
41
|
+
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
|
42
|
+
raise Excon::Errors::BadRequest.new('invalid x-goog-acl')
|
|
43
|
+
else
|
|
44
|
+
self.data[:acls][:bucket][bucket_name] = self.class.acls(options[acl])
|
|
45
|
+
end
|
|
46
|
+
response = Excon::Response.new
|
|
47
|
+
response.status = 200
|
|
48
|
+
bucket = {
|
|
49
|
+
:objects => {},
|
|
50
|
+
'Name' => bucket_name,
|
|
51
|
+
'CreationDate' => Time.now,
|
|
52
|
+
'Owner' => { 'DisplayName' => 'owner', 'ID' => 'some_id'},
|
|
53
|
+
'Payer' => 'BucketOwner'
|
|
54
|
+
}
|
|
55
|
+
if options['LocationConstraint']
|
|
56
|
+
bucket['LocationConstraint'] = options['LocationConstraint']
|
|
57
|
+
else
|
|
58
|
+
bucket['LocationConstraint'] = ''
|
|
59
|
+
end
|
|
60
|
+
if self.data[:buckets][bucket_name].nil?
|
|
61
|
+
self.data[:buckets][bucket_name] = bucket
|
|
62
|
+
else
|
|
63
|
+
response.status = 409
|
|
64
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
65
|
+
end
|
|
66
|
+
response
|
|
67
|
+
end
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Mock
|
|
5
|
+
def put_bucket_acl(bucket_name, acl)
|
|
6
|
+
Fog::Mock.not_implemented
|
|
7
|
+
end
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
class Real
|
|
11
|
+
# Change access control list for an Google Storage bucket
|
|
12
|
+
def put_bucket_acl(bucket_name, acl)
|
|
13
|
+
data = <<-DATA
|
|
14
|
+
<AccessControlList>
|
|
15
|
+
<Owner>
|
|
16
|
+
#{tag('ID', acl['Owner']['ID'])}
|
|
17
|
+
</Owner>
|
|
18
|
+
<Entries>
|
|
19
|
+
#{entries_list(acl['AccessControlList'])}
|
|
20
|
+
</Entries>
|
|
21
|
+
</AccessControlList>
|
|
22
|
+
DATA
|
|
23
|
+
|
|
24
|
+
request({
|
|
25
|
+
:body => data,
|
|
26
|
+
:expects => 200,
|
|
27
|
+
:headers => {},
|
|
28
|
+
:host => "#{bucket_name}.#{@host}",
|
|
29
|
+
:method => 'PUT',
|
|
30
|
+
:query => {'acl' => nil}
|
|
31
|
+
})
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
private
|
|
35
|
+
|
|
36
|
+
def tag(name, value)
|
|
37
|
+
"<#{name}>#{value}</#{name}>"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def scope_tag(scope)
|
|
41
|
+
if %w(AllUsers AllAuthenticatedUsers).include?(scope['type'])
|
|
42
|
+
"<Scope type='#{scope['type']}'/>"
|
|
43
|
+
else
|
|
44
|
+
"<Scope type='#{scope['type']}'>" +
|
|
45
|
+
scope.to_a.select { |pair| pair[0] != 'type' }.map { |pair| tag(pair[0], pair[1]) }.join("\n") +
|
|
46
|
+
"</Scope>"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def entries_list(access_control_list)
|
|
51
|
+
access_control_list.map do |entry|
|
|
52
|
+
tag('Entry', scope_tag(entry['Scope']) + tag('Permission', entry['Permission']))
|
|
53
|
+
end.join("\n")
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
module Fog
|
|
2
|
+
module Storage
|
|
3
|
+
class Google
|
|
4
|
+
class Real
|
|
5
|
+
# Create an object in an Google Storage bucket
|
|
6
|
+
#
|
|
7
|
+
# ==== Parameters
|
|
8
|
+
# * bucket_name<~String> - Name of bucket to create object in
|
|
9
|
+
# * object_name<~String> - Name of object to create
|
|
10
|
+
# * data<~File> - File or String to create object from
|
|
11
|
+
# * options<~Hash>:
|
|
12
|
+
# * 'Cache-Control'<~String> - Caching behaviour
|
|
13
|
+
# * 'Content-Disposition'<~String> - Presentational information for the object
|
|
14
|
+
# * 'Content-Encoding'<~String> - Encoding of object data
|
|
15
|
+
# * 'Content-Length'<~String> - Size of object in bytes (defaults to object.read.length)
|
|
16
|
+
# * 'Content-MD5'<~String> - Base64 encoded 128-bit MD5 digest of message (defaults to Base64 encoded MD5 of object.read)
|
|
17
|
+
# * 'Content-Type'<~String> - Standard MIME type describing contents (defaults to MIME::Types.of.first)
|
|
18
|
+
# * 'x-goog-acl'<~String> - Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
|
19
|
+
# * "x-goog-meta-#{name}" - Headers to be returned with object, note total size of request without body must be less than 8 KB.
|
|
20
|
+
#
|
|
21
|
+
# ==== Returns
|
|
22
|
+
# * response<~Excon::Response>:
|
|
23
|
+
# * headers<~Hash>:
|
|
24
|
+
# * 'ETag'<~String> - etag of new object
|
|
25
|
+
def put_object(bucket_name, object_name, data, options = {})
|
|
26
|
+
data = Fog::Storage.parse_data(data)
|
|
27
|
+
headers = data[:headers].merge!(options)
|
|
28
|
+
request({
|
|
29
|
+
:body => data[:body],
|
|
30
|
+
:expects => 200,
|
|
31
|
+
:headers => headers,
|
|
32
|
+
:host => "#{bucket_name}.#{@host}",
|
|
33
|
+
:idempotent => true,
|
|
34
|
+
:method => 'PUT',
|
|
35
|
+
:path => CGI.escape(object_name)
|
|
36
|
+
})
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
class Mock
|
|
41
|
+
def put_object(bucket_name, object_name, data, options = {})
|
|
42
|
+
acl = options['x-goog-acl'] || 'private'
|
|
43
|
+
if !['private', 'public-read', 'public-read-write', 'authenticated-read'].include?(acl)
|
|
44
|
+
raise Excon::Errors::BadRequest.new('invalid x-goog-acl')
|
|
45
|
+
else
|
|
46
|
+
self.data[:acls][:object][bucket_name] ||= {}
|
|
47
|
+
self.data[:acls][:object][bucket_name][object_name] = self.class.acls(acl)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
data = Fog::Storage.parse_data(data)
|
|
51
|
+
unless data[:body].is_a?(String)
|
|
52
|
+
data[:body] = data[:body].read
|
|
53
|
+
end
|
|
54
|
+
response = Excon::Response.new
|
|
55
|
+
if (bucket = self.data[:buckets][bucket_name])
|
|
56
|
+
response.status = 200
|
|
57
|
+
object = {
|
|
58
|
+
:body => data[:body],
|
|
59
|
+
'Content-Type' => options['Content-Type'] || data[:headers]['Content-Type'],
|
|
60
|
+
'ETag' => Fog::Google::Mock.etag,
|
|
61
|
+
'Key' => object_name,
|
|
62
|
+
'Last-Modified' => Fog::Time.now.to_date_header,
|
|
63
|
+
'Content-Length' => options['Content-Length'] || data[:headers]['Content-Length']
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
for key, value in options
|
|
67
|
+
case key
|
|
68
|
+
when 'Cache-Control', 'Content-Disposition', 'Content-Encoding', 'Content-MD5', 'Expires', /^x-goog-meta-/
|
|
69
|
+
object[key] = value
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
bucket[:objects][object_name] = object
|
|
74
|
+
response.headers = {
|
|
75
|
+
'Content-Length' => object['Content-Length'],
|
|
76
|
+
'Content-Type' => object['Content-Type'],
|
|
77
|
+
'ETag' => object['ETag'],
|
|
78
|
+
'Last-Modified' => object['Last-Modified']
|
|
79
|
+
}
|
|
80
|
+
else
|
|
81
|
+
response.status = 404
|
|
82
|
+
raise(Excon::Errors.status_error({:expects => 200}, response))
|
|
83
|
+
end
|
|
84
|
+
response
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|