fog-google 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.editorconfig +11 -0
- data/.gitignore +1 -0
- data/.hound.yml +2 -0
- data/.rubocop.yml +225 -5
- data/.travis.yml +13 -11
- data/CONTRIBUTORS.md +1 -0
- data/Gemfile +1 -1
- data/README.md +31 -16
- data/Rakefile +15 -39
- data/examples/backend_services.rb +12 -11
- data/examples/bootstrap.rb +11 -1
- data/examples/{create.rb → create_instance.rb} +20 -11
- data/examples/dns/project.rb +2 -3
- data/examples/dns/zones.rb +21 -21
- data/examples/get_list_images.rb +31 -15
- data/examples/get_list_snapshots.rb +20 -10
- data/examples/image_create.rb +5 -5
- data/examples/l7_load_balance.rb +56 -58
- data/examples/load-balance.rb +22 -23
- data/examples/metadata.rb +17 -9
- data/examples/monitoring/metric_descriptors.rb +19 -6
- data/examples/monitoring/timeseries_collection.rb +23 -11
- data/examples/monitoring/timeseries_descriptors.rb +23 -11
- data/examples/network.rb +25 -29
- data/examples/precreated_client.rb +3 -6
- data/examples/sql/flags.rb +2 -2
- data/examples/sql/instances.rb +18 -18
- data/examples/sql/operations.rb +9 -9
- data/examples/sql/ssl_certs.rb +13 -13
- data/examples/sql/tiers.rb +2 -2
- data/examples/storage.rb +37 -0
- data/examples/storage_json.rb +37 -0
- data/fog-google.gemspec +24 -21
- data/lib/fog/bin/google.rb +34 -32
- data/lib/fog/{google/compute.rb → compute/google.rb} +207 -151
- data/lib/fog/{google/models/compute → compute/google/models}/address.rb +24 -28
- data/lib/fog/{google/models/compute → compute/google/models}/addresses.rb +10 -14
- data/lib/fog/{google/models/compute → compute/google/models}/backend_service.rb +28 -34
- data/lib/fog/{google/models/compute → compute/google/models}/backend_services.rb +2 -5
- data/lib/fog/{google/models/compute → compute/google/models}/disk.rb +35 -39
- data/lib/fog/{google/models/compute → compute/google/models}/disk_type.rb +4 -6
- data/lib/fog/{google/models/compute → compute/google/models}/disk_types.rb +7 -10
- data/lib/fog/{google/models/compute → compute/google/models}/disks.rb +9 -12
- data/lib/fog/{google/models/compute → compute/google/models}/firewall.rb +10 -14
- data/lib/fog/{google/models/compute → compute/google/models}/firewalls.rb +1 -4
- data/lib/fog/compute/google/models/flavor.rb +31 -0
- data/lib/fog/{google/models/compute → compute/google/models}/flavors.rb +2 -5
- data/lib/fog/{google/models/compute → compute/google/models}/forwarding_rule.rb +24 -28
- data/lib/fog/{google/models/compute → compute/google/models}/forwarding_rules.rb +8 -11
- data/lib/fog/compute/google/models/global_forwarding_rule.rb +82 -0
- data/lib/fog/{google/models/compute → compute/google/models}/global_forwarding_rules.rb +2 -5
- data/lib/fog/compute/google/models/http_health_check.rb +80 -0
- data/lib/fog/{google/models/compute → compute/google/models}/http_health_checks.rb +2 -5
- data/lib/fog/{google/models/compute → compute/google/models}/image.rb +18 -22
- data/lib/fog/{google/models/compute → compute/google/models}/images.rb +24 -17
- data/lib/fog/{google/models/compute → compute/google/models}/instance_group.rb +5 -8
- data/lib/fog/{google/models/compute → compute/google/models}/instance_groups.rb +10 -13
- data/lib/fog/{google/models/compute → compute/google/models}/network.rb +9 -13
- data/lib/fog/{google/models/compute → compute/google/models}/networks.rb +1 -4
- data/lib/fog/{google/models/compute → compute/google/models}/operation.rb +16 -18
- data/lib/fog/{google/models/compute → compute/google/models}/operations.rb +8 -11
- data/lib/fog/{google/models/compute → compute/google/models}/project.rb +5 -7
- data/lib/fog/{google/models/compute → compute/google/models}/projects.rb +0 -3
- data/lib/fog/{google/models/compute → compute/google/models}/region.rb +5 -7
- data/lib/fog/{google/models/compute → compute/google/models}/regions.rb +1 -4
- data/lib/fog/compute/google/models/resource_view.rb +108 -0
- data/lib/fog/compute/google/models/resource_views.rb +54 -0
- data/lib/fog/{google/models/compute → compute/google/models}/route.rb +12 -16
- data/lib/fog/{google/models/compute → compute/google/models}/routes.rb +1 -4
- data/lib/fog/{google/models/compute → compute/google/models}/server.rb +81 -92
- data/lib/fog/{google/models/compute → compute/google/models}/servers.rb +13 -16
- data/lib/fog/compute/google/models/snapshot.rb +44 -0
- data/lib/fog/{google/models/compute → compute/google/models}/snapshots.rb +1 -4
- data/lib/fog/compute/google/models/subnetwork.rb +49 -0
- data/lib/fog/compute/google/models/subnetworks.rb +29 -0
- data/lib/fog/{google/models/compute → compute/google/models}/target_http_proxies.rb +2 -5
- data/lib/fog/{google/models/compute → compute/google/models}/target_http_proxy.rb +18 -22
- data/lib/fog/{google/models/compute → compute/google/models}/target_instance.rb +23 -28
- data/lib/fog/{google/models/compute → compute/google/models}/target_instances.rb +9 -12
- data/lib/fog/{google/models/compute → compute/google/models}/target_pool.rb +24 -28
- data/lib/fog/{google/models/compute → compute/google/models}/target_pools.rb +6 -9
- data/lib/fog/{google/models/compute → compute/google/models}/url_map.rb +32 -36
- data/lib/fog/{google/models/compute → compute/google/models}/url_maps.rb +1 -4
- data/lib/fog/compute/google/models/zone.rb +21 -0
- data/lib/fog/{google/models/compute → compute/google/models}/zones.rb +0 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_backend_service_backends.rb +5 -5
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_instance_group_instance.rb +4 -4
- data/lib/fog/compute/google/requests/add_region_view_resources.rb +27 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_server_access_config.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_target_pool_health_checks.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_target_pool_instances.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_url_map_host_rules.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/add_url_map_path_matchers.rb +7 -7
- data/lib/fog/compute/google/requests/add_zone_view_resources.rb +27 -0
- data/lib/fog/compute/google/requests/attach_disk.rb +34 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_address.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_backend_service.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_disk.rb +9 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_firewall.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_forwarding_rule.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_global_forwarding_rule.rb +12 -12
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_global_operation.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_http_health_check.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_image.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_instance_group.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_network.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_region_operation.rb +6 -6
- data/lib/fog/compute/google/requests/delete_region_view.rb +24 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_route.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_server.rb +15 -17
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_server_access_config.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_snapshot.rb +3 -3
- data/lib/fog/compute/google/requests/delete_subnetwork.rb +49 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_target_http_proxy.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_target_instance.rb +9 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_target_pool.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_url_map.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/delete_zone_operation.rb +5 -7
- data/lib/fog/compute/google/requests/delete_zone_view.rb +24 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/detach_disk.rb +5 -5
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_address.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_backend_service.rb +5 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_backend_service_health.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_backend_services.rb +6 -6
- data/lib/fog/compute/google/requests/get_disk.rb +46 -0
- data/lib/fog/compute/google/requests/get_disk_type.rb +40 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_firewall.rb +3 -3
- data/lib/fog/compute/google/requests/get_forwarding_rule.rb +44 -0
- data/lib/fog/compute/google/requests/get_global_forwarding_rule.rb +30 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_global_operation.rb +8 -8
- data/lib/fog/compute/google/requests/get_http_health_check.rb +37 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_image.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_instance_group.rb +5 -5
- data/lib/fog/compute/google/requests/get_machine_type.rb +41 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_network.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_project.rb +2 -2
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_region.rb +9 -9
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_region_operation.rb +11 -11
- data/lib/fog/compute/google/requests/get_region_view.rb +24 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_route.rb +3 -3
- data/lib/fog/compute/google/requests/get_server.rb +71 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_server_serial_port_output.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_snapshot.rb +5 -7
- data/lib/fog/compute/google/requests/get_subnetwork.rb +45 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_target_http_proxy.rb +4 -6
- data/lib/fog/compute/google/requests/get_target_instance.rb +28 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_target_pool.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_target_pool_health.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_url_map.rb +4 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_zone.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/get_zone_operation.rb +10 -12
- data/lib/fog/compute/google/requests/get_zone_view.rb +24 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_address.rb +5 -5
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_backend_service.rb +17 -17
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_disk.rb +26 -30
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_firewall.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_forwarding_rule.rb +13 -13
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_global_forwarding_rule.rb +13 -13
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_http_health_check.rb +11 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_image.rb +14 -14
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_instance_group.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_network.rb +6 -6
- data/lib/fog/compute/google/requests/insert_region_view.rb +25 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_route.rb +11 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_server.rb +57 -57
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_snapshot.rb +8 -8
- data/lib/fog/compute/google/requests/insert_subnetwork.rb +75 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_target_http_proxy.rb +9 -9
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_target_instance.rb +11 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_target_pool.rb +11 -11
- data/lib/fog/{google/requests/compute → compute/google/requests}/insert_url_map.rb +9 -9
- data/lib/fog/compute/google/requests/insert_zone_view.rb +26 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_addresses.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_aggregated_addresses.rb +3 -3
- data/lib/fog/compute/google/requests/list_aggregated_disk_types.rb +38 -0
- data/lib/fog/compute/google/requests/list_aggregated_disks.rb +37 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_aggregated_instance_groups.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_aggregated_machine_types.rb +1 -1
- data/lib/fog/compute/google/requests/list_aggregated_servers.rb +37 -0
- data/lib/fog/compute/google/requests/list_aggregated_subnetworks.rb +34 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_aggregated_target_instances.rb +10 -13
- data/lib/fog/compute/google/requests/list_backend_services.rb +27 -0
- data/lib/fog/compute/google/requests/list_disk_types.rb +44 -0
- data/lib/fog/compute/google/requests/list_disks.rb +27 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_firewalls.rb +1 -1
- data/lib/fog/compute/google/requests/list_forwarding_rules.rb +27 -0
- data/lib/fog/compute/google/requests/list_global_forwarding_rules.rb +28 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_global_operations.rb +1 -1
- data/lib/fog/compute/google/requests/list_http_health_checks.rb +27 -0
- data/lib/fog/compute/google/requests/list_images.rb +27 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_instance_group_instances.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_instance_groups.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_machine_types.rb +6 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_networks.rb +1 -1
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_region_operations.rb +3 -3
- data/lib/fog/compute/google/requests/list_region_view_resources.rb +24 -0
- data/lib/fog/compute/google/requests/list_region_views.rb +23 -0
- data/lib/fog/compute/google/requests/list_regions.rb +83 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_routes.rb +2 -2
- data/lib/fog/compute/google/requests/list_servers.rb +29 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_snapshots.rb +3 -3
- data/lib/fog/compute/google/requests/list_subnetworks.rb +35 -0
- data/lib/fog/compute/google/requests/list_target_http_proxies.rb +27 -0
- data/lib/fog/compute/google/requests/list_target_instances.rb +28 -0
- data/lib/fog/compute/google/requests/list_target_pools.rb +27 -0
- data/lib/fog/compute/google/requests/list_url_maps.rb +27 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/list_zone_operations.rb +3 -3
- data/lib/fog/compute/google/requests/list_zone_view_resources.rb +24 -0
- data/lib/fog/compute/google/requests/list_zone_views.rb +23 -0
- data/lib/fog/compute/google/requests/list_zones.rb +26 -0
- data/lib/fog/{google/requests/compute → compute/google/requests}/remove_instance_group_instance.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/remove_target_pool_health_checks.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/remove_target_pool_instance.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/remove_target_pool_instances.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/reset_server.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_common_instance_metadata.rb +3 -3
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_forwarding_rule_target.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_global_forwarding_rule_target.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_metadata.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_server_disk_auto_delete.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_server_scheduling.rb +7 -7
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_tags.rb +6 -6
- data/lib/fog/{google/requests/compute → compute/google/requests}/set_target_http_proxy_url_map.rb +5 -5
- data/lib/fog/{google/requests/compute → compute/google/requests}/start_server.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/stop_server.rb +4 -4
- data/lib/fog/{google/requests/compute → compute/google/requests}/update_url_map.rb +8 -8
- data/lib/fog/{google/requests/compute → compute/google/requests}/validate_url_map.rb +5 -5
- data/lib/fog/{google/dns.rb → dns/google.rb} +9 -9
- data/lib/fog/{google/models/dns → dns/google/models}/change.rb +5 -7
- data/lib/fog/{google/models/dns → dns/google/models}/changes.rb +1 -4
- data/lib/fog/{google/models/dns → dns/google/models}/project.rb +6 -8
- data/lib/fog/{google/models/dns → dns/google/models}/projects.rb +0 -3
- data/lib/fog/{google/models/dns → dns/google/models}/record.rb +17 -27
- data/lib/fog/{google/models/dns → dns/google/models}/records.rb +2 -5
- data/lib/fog/{google/models/dns → dns/google/models}/zone.rb +6 -8
- data/lib/fog/{google/models/dns → dns/google/models}/zones.rb +1 -4
- data/lib/fog/{google/requests/dns → dns/google/requests}/create_change.rb +17 -17
- data/lib/fog/dns/google/requests/create_managed_zone.rb +82 -0
- data/lib/fog/{google/requests/dns → dns/google/requests}/delete_managed_zone.rb +6 -6
- data/lib/fog/{google/requests/dns → dns/google/requests}/get_change.rb +7 -7
- data/lib/fog/{google/requests/dns → dns/google/requests}/get_managed_zone.rb +4 -4
- data/lib/fog/{google/requests/dns → dns/google/requests}/get_project.rb +12 -12
- data/lib/fog/{google/requests/dns → dns/google/requests}/list_changes.rb +7 -7
- data/lib/fog/{google/requests/dns → dns/google/requests}/list_managed_zones.rb +5 -5
- data/lib/fog/{google/requests/dns → dns/google/requests}/list_resource_record_sets.rb +11 -11
- data/lib/fog/google.rb +78 -71
- data/lib/fog/google/models/monitoring/metric_descriptor.rb +3 -3
- data/lib/fog/google/models/monitoring/metric_descriptors.rb +3 -3
- data/lib/fog/google/models/monitoring/timeseries.rb +2 -2
- data/lib/fog/google/models/monitoring/timeseries_collection.rb +3 -3
- data/lib/fog/google/models/monitoring/timeseries_descriptor.rb +1 -1
- data/lib/fog/google/models/monitoring/timeseries_descriptors.rb +3 -3
- data/lib/fog/google/models/sql/backup_run.rb +8 -8
- data/lib/fog/google/models/sql/backup_runs.rb +3 -3
- data/lib/fog/google/models/sql/flag.rb +5 -5
- data/lib/fog/google/models/sql/flags.rb +3 -3
- data/lib/fog/google/models/sql/instance.rb +54 -68
- data/lib/fog/google/models/sql/instances.rb +4 -4
- data/lib/fog/google/models/sql/operation.rb +15 -15
- data/lib/fog/google/models/sql/operations.rb +5 -5
- data/lib/fog/google/models/sql/ssl_cert.rb +17 -19
- data/lib/fog/google/models/sql/ssl_certs.rb +5 -5
- data/lib/fog/google/models/sql/tier.rb +3 -3
- data/lib/fog/google/models/sql/tiers.rb +3 -3
- data/lib/fog/google/monitoring.rb +8 -8
- data/lib/fog/google/requests/monitoring/list_metric_descriptors.rb +131 -131
- data/lib/fog/google/requests/monitoring/list_timeseries.rb +32 -32
- data/lib/fog/google/requests/monitoring/list_timeseries_descriptors.rb +50 -50
- data/lib/fog/google/requests/sql/clone_instance.rb +41 -41
- data/lib/fog/google/requests/sql/delete_instance.rb +26 -26
- data/lib/fog/google/requests/sql/delete_ssl_cert.rb +27 -27
- data/lib/fog/google/requests/sql/export_instance.rb +22 -22
- data/lib/fog/google/requests/sql/get_backup_run.rb +5 -5
- data/lib/fog/google/requests/sql/get_instance.rb +12 -12
- data/lib/fog/google/requests/sql/get_operation.rb +21 -21
- data/lib/fog/google/requests/sql/get_ssl_cert.rb +21 -21
- data/lib/fog/google/requests/sql/import_instance.rb +21 -21
- data/lib/fog/google/requests/sql/insert_instance.rb +76 -78
- data/lib/fog/google/requests/sql/insert_ssl_cert.rb +33 -33
- data/lib/fog/google/requests/sql/list_backup_runs.rb +4 -4
- data/lib/fog/google/requests/sql/list_flags.rb +84 -84
- data/lib/fog/google/requests/sql/list_instances.rb +3 -3
- data/lib/fog/google/requests/sql/list_operations.rb +13 -13
- data/lib/fog/google/requests/sql/list_ssl_certs.rb +13 -13
- data/lib/fog/google/requests/sql/list_tiers.rb +39 -39
- data/lib/fog/google/requests/sql/reset_instance_ssl_config.rb +16 -16
- data/lib/fog/google/requests/sql/restart_instance.rb +16 -16
- data/lib/fog/google/requests/sql/restore_instance_backup.rb +5 -5
- data/lib/fog/google/requests/sql/set_instance_root_password.rb +20 -20
- data/lib/fog/google/requests/sql/update_instance.rb +52 -52
- data/lib/fog/google/sql.rb +7 -7
- data/lib/fog/google/version.rb +1 -1
- data/lib/fog/parsers/storage/google.rb +15 -0
- data/lib/fog/{google/parsers/storage → parsers/storage/google}/access_control_list.rb +13 -13
- data/lib/fog/{google/parsers/storage → parsers/storage/google}/copy_object.rb +3 -3
- data/lib/fog/parsers/storage/google/get_bucket.rb +58 -0
- data/lib/fog/parsers/storage/google/get_bucket_logging.rb +36 -0
- data/lib/fog/parsers/storage/google/get_bucket_object_versions.rb +84 -0
- data/lib/fog/{google/parsers/storage → parsers/storage/google}/get_bucket_versioning.rb +3 -3
- data/lib/fog/{google/parsers/storage → parsers/storage/google}/get_request_payment.rb +1 -1
- data/lib/fog/{google/parsers/storage → parsers/storage/google}/get_service.rb +8 -8
- data/lib/fog/storage/google.rb +20 -0
- data/lib/fog/storage/google_json.rb +146 -0
- data/lib/fog/storage/google_json/models/directories.rb +26 -0
- data/lib/fog/storage/google_json/models/directory.rb +65 -0
- data/lib/fog/storage/google_json/models/file.rb +148 -0
- data/lib/fog/storage/google_json/models/files.rb +89 -0
- data/lib/fog/storage/google_json/requests/copy_object.rb +66 -0
- data/lib/fog/storage/google_json/requests/delete_bucket.rb +42 -0
- data/lib/fog/{google/requests/storage → storage/google_json/requests}/delete_object.rb +12 -12
- data/lib/fog/storage/google_json/requests/get_bucket.rb +86 -0
- data/lib/fog/{google/requests/storage → storage/google_json/requests}/get_bucket_acl.rb +12 -17
- data/lib/fog/storage/google_json/requests/get_object.rb +98 -0
- data/lib/fog/storage/google_json/requests/get_object_acl.rb +59 -0
- data/lib/fog/storage/google_json/requests/get_object_http_url.rb +40 -0
- data/lib/fog/storage/google_json/requests/get_object_https_url.rb +41 -0
- data/lib/fog/storage/google_json/requests/get_object_torrent.rb +13 -0
- data/lib/fog/storage/google_json/requests/get_object_url.rb +22 -0
- data/lib/fog/storage/google_json/requests/get_service.rb +54 -0
- data/lib/fog/storage/google_json/requests/head_object.rb +54 -0
- data/lib/fog/storage/google_json/requests/put_bucket.rb +68 -0
- data/lib/fog/storage/google_json/requests/put_bucket_acl.rb +34 -0
- data/lib/fog/storage/google_json/requests/put_object.rb +118 -0
- data/lib/fog/storage/google_json/requests/put_object_acl.rb +31 -0
- data/lib/fog/storage/google_json/requests/put_object_url.rb +45 -0
- data/lib/fog/{google/storage.rb → storage/google_xml.rb} +49 -53
- data/lib/fog/storage/google_xml/models/directories.rb +34 -0
- data/lib/fog/{google/models/storage → storage/google_xml/models}/directory.rb +13 -21
- data/lib/fog/{google/models/storage → storage/google_xml/models}/file.rb +34 -46
- data/lib/fog/{google/models/storage → storage/google_xml/models}/files.rb +21 -30
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/copy_object.rb +15 -21
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/delete_bucket.rb +10 -12
- data/lib/fog/storage/google_xml/requests/delete_object.rb +44 -0
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_bucket.rb +33 -43
- data/lib/fog/storage/google_xml/requests/get_bucket_acl.rb +53 -0
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object.rb +25 -37
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object_acl.rb +16 -24
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object_http_url.rb +8 -12
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object_https_url.rb +8 -12
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object_torrent.rb +10 -16
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_object_url.rb +1 -1
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/get_service.rb +13 -17
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/head_object.rb +14 -20
- data/lib/fog/storage/google_xml/requests/put_bucket.rb +71 -0
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/put_bucket_acl.rb +12 -14
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/put_object.rb +23 -27
- data/lib/fog/{google/requests/storage → storage/google_xml/requests}/put_object_acl.rb +12 -14
- data/lib/fog/storage/google_xml/requests/put_object_url.rb +42 -0
- data/tasks/bundler.rake +3 -0
- data/tasks/console.rake +12 -0
- data/tasks/lint.rake +3 -0
- data/tasks/smoke.rake +15 -0
- data/tasks/test.rake +13 -0
- data/test/helpers/integration_test_helper.rb +3 -3
- data/test/helpers/test_collection.rb +1 -1
- data/test/helpers/test_helper.rb +8 -8
- data/test/integration/compute/test_servers.rb +1 -1
- data/test/integration/factories/backend_services_factory.rb +2 -2
- data/test/integration/factories/collection_factory.rb +4 -4
- data/test/integration/factories/disks_factory.rb +3 -3
- data/test/integration/factories/forwarding_rules_factory.rb +3 -4
- data/test/integration/factories/global_forwarding_rules_factory.rb +2 -2
- data/test/integration/factories/http_health_checks_factory.rb +1 -1
- data/test/integration/factories/images_factory.rb +2 -2
- data/test/integration/factories/servers_factory.rb +4 -4
- data/test/integration/factories/target_http_proxies_factory.rb +2 -2
- data/test/integration/factories/target_instances_factory.rb +3 -3
- data/test/integration/factories/target_pools_factory.rb +4 -4
- data/test/integration/factories/url_maps_factory.rb +2 -2
- data/test/integration/storage/test_buckets.rb +56 -0
- data/test/integration/storage/test_directories.rb +60 -0
- data/test/integration/storage/test_files.rb +132 -0
- data/test/integration/storage/test_objects.rb +111 -0
- data/test/integration/test_authentication.rb +14 -10
- data/tests/helper.rb +40 -42
- data/tests/helpers/collection_helper.rb +26 -37
- data/tests/helpers/compute/flavors_helper.rb +4 -8
- data/tests/helpers/compute/server_helper.rb +1 -5
- data/tests/helpers/compute/servers_helper.rb +0 -2
- data/tests/helpers/formats_helper.rb +12 -12
- data/tests/helpers/formats_helper_tests.rb +43 -47
- data/tests/helpers/mock_helper.rb +6 -8
- data/tests/helpers/model_helper.rb +6 -10
- data/tests/helpers/schema_validator_tests.rb +41 -47
- data/tests/helpers/succeeds_helper.rb +1 -1
- data/tests/models/dns/change_tests.rb +8 -10
- data/tests/models/dns/changes_tests.rb +8 -12
- data/tests/models/dns/projects_tests.rb +2 -5
- data/tests/models/dns/record_tests.rb +9 -10
- data/tests/models/dns/records_tests.rb +9 -13
- data/tests/models/dns/zone_tests.rb +6 -6
- data/tests/models/dns/zones_tests.rb +5 -5
- data/tests/models/monitoring/metric_descriptors_tests.rb +2 -5
- data/tests/models/monitoring/timeseries_collection_tests.rb +3 -6
- data/tests/models/monitoring/timeseries_descriptors_tests.rb +3 -6
- data/tests/models/sql/flags_tests.rb +2 -5
- data/tests/models/sql/instance_tests.rb +4 -7
- data/tests/models/sql/instances_tests.rb +4 -9
- data/tests/models/sql/operation_tests.rb +3 -6
- data/tests/models/sql/operations_tests.rb +4 -9
- data/tests/models/sql/ssl_cert_tests.rb +3 -6
- data/tests/models/sql/ssl_certs_tests.rb +4 -9
- data/tests/models/sql/tiers_tests.rb +2 -5
- data/tests/requests/compute/backend_service_tests.rb +43 -47
- data/tests/requests/compute/disk_tests.rb +42 -46
- data/tests/requests/compute/disk_type_tests.rb +18 -21
- data/tests/requests/compute/firewall_tests.rb +42 -45
- data/tests/requests/compute/forwarding_rules_tests.rb +44 -48
- data/tests/requests/compute/global_forwarding_rules_tests.rb +44 -48
- data/tests/requests/compute/http_health_checks_tests.rb +44 -48
- data/tests/requests/compute/image_tests.rb +41 -45
- data/tests/requests/compute/network_tests.rb +38 -41
- data/tests/requests/compute/operation_tests.rb +2 -3
- data/tests/requests/compute/region_tests.rb +18 -18
- data/tests/requests/compute/server_tests.rb +45 -47
- data/tests/requests/compute/target_http_proxies_test.rb +39 -43
- data/tests/requests/compute/target_instances_tests.rb +43 -47
- data/tests/requests/compute/target_pools_tests.rb +43 -47
- data/tests/requests/compute/url_maps_tests.rb +42 -46
- data/tests/requests/compute/zone_tests.rb +15 -19
- data/tests/requests/dns/change_tests.rb +18 -22
- data/tests/requests/dns/managed_zone_tests.rb +27 -30
- data/tests/requests/dns/project_tests.rb +13 -16
- data/tests/requests/dns/record_tests.rb +15 -18
- data/tests/requests/monitoring/metric_descriptor_tests.rb +9 -12
- data/tests/requests/monitoring/timeseries_collection_tests.rb +9 -12
- data/tests/requests/monitoring/timeseries_descriptor_tests.rb +10 -13
- data/tests/requests/sql/flag_tests.rb +11 -14
- data/tests/requests/sql/instance_tests.rb +36 -39
- data/tests/requests/sql/operation_tests.rb +17 -20
- data/tests/requests/sql/ssl_cert_tests.rb +21 -24
- data/tests/requests/sql/tier_tests.rb +9 -12
- data/tests/requests/storage/bucket_tests.rb +30 -36
- data/tests/requests/storage/object_tests.rb +21 -27
- metadata +309 -235
- data/examples/eric-fail.rb +0 -36
- data/examples/image_all.rb +0 -6
- data/examples/launch_micro_instance.rb +0 -29
- data/gemfiles/Gemfile.2.0.0+ +0 -6
- data/gemfiles/Gemfile.2.0.0- +0 -10
- data/lib/fog/google/models/compute/flavor.rb +0 -33
- data/lib/fog/google/models/compute/global_forwarding_rule.rb +0 -86
- data/lib/fog/google/models/compute/http_health_check.rb +0 -84
- data/lib/fog/google/models/compute/snapshot.rb +0 -48
- data/lib/fog/google/models/compute/zone.rb +0 -23
- data/lib/fog/google/models/storage/directories.rb +0 -39
- data/lib/fog/google/parsers/storage/get_bucket.rb +0 -58
- data/lib/fog/google/parsers/storage/get_bucket_logging.rb +0 -36
- data/lib/fog/google/parsers/storage/get_bucket_object_versions.rb +0 -84
- data/lib/fog/google/requests/compute/attach_disk.rb +0 -34
- data/lib/fog/google/requests/compute/get_disk.rb +0 -52
- data/lib/fog/google/requests/compute/get_disk_type.rb +0 -42
- data/lib/fog/google/requests/compute/get_forwarding_rule.rb +0 -46
- data/lib/fog/google/requests/compute/get_global_forwarding_rule.rb +0 -32
- data/lib/fog/google/requests/compute/get_http_health_check.rb +0 -39
- data/lib/fog/google/requests/compute/get_machine_type.rb +0 -43
- data/lib/fog/google/requests/compute/get_server.rb +0 -75
- data/lib/fog/google/requests/compute/get_target_instance.rb +0 -32
- data/lib/fog/google/requests/compute/list_aggregated_disk_types.rb +0 -40
- data/lib/fog/google/requests/compute/list_aggregated_disks.rb +0 -40
- data/lib/fog/google/requests/compute/list_aggregated_servers.rb +0 -40
- data/lib/fog/google/requests/compute/list_backend_services.rb +0 -29
- data/lib/fog/google/requests/compute/list_disk_types.rb +0 -46
- data/lib/fog/google/requests/compute/list_disks.rb +0 -29
- data/lib/fog/google/requests/compute/list_forwarding_rules.rb +0 -29
- data/lib/fog/google/requests/compute/list_global_forwarding_rules.rb +0 -30
- data/lib/fog/google/requests/compute/list_http_health_checks.rb +0 -29
- data/lib/fog/google/requests/compute/list_images.rb +0 -29
- data/lib/fog/google/requests/compute/list_regions.rb +0 -85
- data/lib/fog/google/requests/compute/list_servers.rb +0 -31
- data/lib/fog/google/requests/compute/list_target_http_proxies.rb +0 -30
- data/lib/fog/google/requests/compute/list_target_instances.rb +0 -30
- data/lib/fog/google/requests/compute/list_target_pools.rb +0 -29
- data/lib/fog/google/requests/compute/list_url_maps.rb +0 -29
- data/lib/fog/google/requests/compute/list_zones.rb +0 -28
- data/lib/fog/google/requests/dns/create_managed_zone.rb +0 -82
- data/lib/fog/google/requests/storage/put_bucket.rb +0 -71
- data/lib/fog/google/requests/storage/put_object_url.rb +0 -50
@@ -0,0 +1,54 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
4
|
+
class Real
|
5
|
+
# Get headers for an object from Google Storage
|
6
|
+
# https://cloud.google.com/storage/docs/json_api/v1/objects/get
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * bucket_name<~String> - Name of bucket to read from
|
10
|
+
# * object_name<~String> - Name of object to read
|
11
|
+
# * options<~Hash>:
|
12
|
+
# * 'If-Match'<~String> - Returns object only if its etag matches this value, otherwise returns 412 (Precondition Failed).
|
13
|
+
# * 'If-Modified-Since'<~Time> - Returns object only if it has been modified since this time, otherwise returns 304 (Not Modified).
|
14
|
+
# * 'If-None-Match'<~String> - Returns object only if its etag differs from this value, otherwise returns 304 (Not Modified)
|
15
|
+
# * 'If-Unmodified-Since'<~Time> - Returns object only if it has not been modified since this time, otherwise returns 412 (Precodition Failed).
|
16
|
+
# * 'Range'<~String> - Range of object to download
|
17
|
+
# * 'versionId'<~String> - specify a particular version to retrieve
|
18
|
+
#
|
19
|
+
# ==== Returns
|
20
|
+
# * response<~Excon::Response>:
|
21
|
+
# * body<~String> - Contents of object
|
22
|
+
# * headers<~Hash>:
|
23
|
+
# * 'Content-Length'<~String> - Size of object contents
|
24
|
+
# * 'Content-Type'<~String> - MIME type of object
|
25
|
+
# * 'ETag'<~String> - Etag of object
|
26
|
+
# * 'Last-Modified'<~String> - Last modified timestamp for object
|
27
|
+
def head_object(bucket_name, object_name, _options = {})
|
28
|
+
raise ArgumentError.new("bucket_name is required") unless bucket_name
|
29
|
+
raise ArgumentError.new("object_name is required") unless object_name
|
30
|
+
|
31
|
+
api_method = @storage_json.objects.get
|
32
|
+
parameters = {
|
33
|
+
"bucket" => bucket_name,
|
34
|
+
"object" => object_name,
|
35
|
+
"projection" => "full"
|
36
|
+
}
|
37
|
+
|
38
|
+
object = request(api_method, parameters)
|
39
|
+
object.headers = object.body
|
40
|
+
object.body = nil
|
41
|
+
object
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
class Mock
|
46
|
+
def head_object(bucket_name, object_name, options = {})
|
47
|
+
response = get_object(bucket_name, object_name, options)
|
48
|
+
response.body = nil
|
49
|
+
response
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
4
|
+
class Real
|
5
|
+
# Create an Google Storage bucket
|
6
|
+
# https://cloud.google.com/storage/docs/json_api/v1/buckets/insert
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * bucket_name<~String> - name of bucket to create
|
10
|
+
# * options<~Hash> - config arguments for bucket. Defaults to {}.
|
11
|
+
# * 'LocationConstraint'<~Symbol> - sets the location for the bucket
|
12
|
+
# * 'x-amz-acl'<~String> - Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
13
|
+
#
|
14
|
+
# ==== Returns
|
15
|
+
# * response<~Excon::Response>:
|
16
|
+
# * status<~Integer> - 200
|
17
|
+
def put_bucket(bucket_name, options = {})
|
18
|
+
location = options["LocationConstraint"] if options["LocationConstraint"]
|
19
|
+
|
20
|
+
api_method = @storage_json.buckets.insert
|
21
|
+
parameters = {
|
22
|
+
"project" => @project,
|
23
|
+
"projection" => "full"
|
24
|
+
}
|
25
|
+
body_object = {
|
26
|
+
"name" => bucket_name,
|
27
|
+
"location" => location
|
28
|
+
}
|
29
|
+
parameters.merge! options
|
30
|
+
|
31
|
+
request(api_method, parameters, body_object = body_object)
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
class Mock
|
36
|
+
def put_bucket(bucket_name, options = {})
|
37
|
+
acl = options["x-goog-acl"] || "private"
|
38
|
+
if !%w(private publicRead publicReadWrite authenticatedRead).include?(acl)
|
39
|
+
raise Excon::Errors::BadRequest.new("invalid x-goog-acl")
|
40
|
+
else
|
41
|
+
data[:acls][:bucket][bucket_name] = self.class.acls(options[acl])
|
42
|
+
end
|
43
|
+
response = Excon::Response.new
|
44
|
+
response.status = 200
|
45
|
+
bucket = {
|
46
|
+
:objects => {},
|
47
|
+
"Name" => bucket_name,
|
48
|
+
"CreationDate" => Time.now,
|
49
|
+
"Owner" => { "DisplayName" => "owner", "ID" => "some_id" },
|
50
|
+
"Payer" => "BucketOwner"
|
51
|
+
}
|
52
|
+
if options["LocationConstraint"]
|
53
|
+
bucket["LocationConstraint"] = options["LocationConstraint"]
|
54
|
+
else
|
55
|
+
bucket["LocationConstraint"] = ""
|
56
|
+
end
|
57
|
+
if data[:buckets][bucket_name].nil?
|
58
|
+
data[:buckets][bucket_name] = bucket
|
59
|
+
else
|
60
|
+
response.status = 409
|
61
|
+
raise(Excon::Errors.status_error({ :expects => 200 }, response))
|
62
|
+
end
|
63
|
+
response
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
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
|
+
# https://cloud.google.com/storage/docs/json_api/v1/bucketAccessControls/insert
|
13
|
+
#
|
14
|
+
# ==== Parameters
|
15
|
+
# * bucket_name<~String> - name of bucket to create
|
16
|
+
# * acl<~Hash> - ACL hash to add to bucket, see GCS documentation above
|
17
|
+
# * entity
|
18
|
+
# * role
|
19
|
+
def put_bucket_acl(bucket_name, acl)
|
20
|
+
raise ArgumentError.new("bucket_name is required") unless bucket_name
|
21
|
+
raise ArgumentError.new("acl is required") unless acl
|
22
|
+
|
23
|
+
api_method = @storage_json.bucket_access_controls.insert
|
24
|
+
parameters = {
|
25
|
+
"bucket" => bucket_name
|
26
|
+
}
|
27
|
+
body_object = acl
|
28
|
+
|
29
|
+
request(api_method, parameters, body_object = body_object)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,118 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
4
|
+
class Real
|
5
|
+
# Create an object in an Google Storage bucket
|
6
|
+
# https://cloud.google.com/storage/docs/json_api/v1/objects/insert
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * bucket_name<~String> - Name of bucket to create object in
|
10
|
+
# * object_name<~String> - Name of object to create
|
11
|
+
# * data<~File> - File or String to create object from
|
12
|
+
# * options<~Hash>:
|
13
|
+
# * 'Cache-Control'<~String> - Caching behaviour
|
14
|
+
# * 'Content-Disposition'<~String> - Presentational information for the object
|
15
|
+
# * 'Content-Encoding'<~String> - Encoding of object data
|
16
|
+
# * 'Content-Length'<~String> - Size of object in bytes (defaults to object.read.length)
|
17
|
+
# * 'Content-MD5'<~String> - Base64 encoded 128-bit MD5 digest of message (defaults to Base64 encoded MD5 of object.read)
|
18
|
+
# * 'Content-Type'<~String> - Standard MIME type describing contents (defaults to MIME::Types.of.first)
|
19
|
+
# * 'x-goog-acl'<~String> - Permissions, must be in ['private', 'public-read', 'public-read-write', 'authenticated-read']
|
20
|
+
# * "x-goog-meta-#{name}" - Headers to be returned with object, note total size of request without body must be less than 8 KB.
|
21
|
+
#
|
22
|
+
# ==== Returns
|
23
|
+
# * response<~Excon::Response>:
|
24
|
+
# * headers<~Hash>:
|
25
|
+
# * 'ETag'<~String> - etag of new object
|
26
|
+
def put_object(bucket_name, object_name, data, options = {})
|
27
|
+
if options["contentType"]
|
28
|
+
mime_type = options["contentType"]
|
29
|
+
if data.is_a? String
|
30
|
+
data = StringIO.new(data)
|
31
|
+
end
|
32
|
+
elsif data.is_a? String
|
33
|
+
data = StringIO.new(data)
|
34
|
+
mime_type = "text/plain"
|
35
|
+
elsif data.is_a? File
|
36
|
+
mime_type = Fog::Storage.parse_data(data)[:headers]["Content-Type"]
|
37
|
+
end
|
38
|
+
|
39
|
+
media = ::Google::APIClient::UploadIO.new(data, mime_type, object_name)
|
40
|
+
api_method = @storage_json.objects.insert
|
41
|
+
parameters = {
|
42
|
+
"uploadType" => "multipart",
|
43
|
+
"bucket" => bucket_name,
|
44
|
+
"name" => object_name
|
45
|
+
}
|
46
|
+
|
47
|
+
body_object = {
|
48
|
+
:contentType => mime_type,
|
49
|
+
:contentEncoding => options["contentEncoding"],
|
50
|
+
}
|
51
|
+
body_object.merge! options
|
52
|
+
|
53
|
+
acl = []
|
54
|
+
case options["predefinedAcl"]
|
55
|
+
when "publicRead"
|
56
|
+
acl.push({ "entity" => "allUsers", "role" => "READER" })
|
57
|
+
when "publicReadWrite"
|
58
|
+
acl.push({ "entity" => "allUsers", "role" => "OWNER" })
|
59
|
+
when "authenticatedRead"
|
60
|
+
acl.push({ "entity" => "allAuthenticatedUsers", "role" => "READER" })
|
61
|
+
end
|
62
|
+
|
63
|
+
unless acl.empty?
|
64
|
+
body_object[:acl] = acl
|
65
|
+
end
|
66
|
+
|
67
|
+
request(api_method, parameters, body_object = body_object, media = media)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
class Mock
|
72
|
+
def put_object(bucket_name, object_name, data, options = {})
|
73
|
+
acl = options["x-goog-acl"] || "private"
|
74
|
+
if !%w(private publicRead publicReadWrite authenticatedRead).include?(acl)
|
75
|
+
raise Excon::Errors::BadRequest.new("invalid x-goog-acl")
|
76
|
+
else
|
77
|
+
self.data[:acls][:object][bucket_name] ||= {}
|
78
|
+
self.data[:acls][:object][bucket_name][object_name] = self.class.acls(acl)
|
79
|
+
end
|
80
|
+
|
81
|
+
data = Fog::Storage.parse_data(data)
|
82
|
+
data[:body] = data[:body].read unless data[:body].is_a?(String)
|
83
|
+
response = Excon::Response.new
|
84
|
+
if (bucket = self.data[:buckets][bucket_name])
|
85
|
+
response.status = 200
|
86
|
+
object = {
|
87
|
+
:body => data[:body],
|
88
|
+
"Content-Type" => options["Content-Type"] || data[:headers]["Content-Type"],
|
89
|
+
"ETag" => Fog::Google::Mock.etag,
|
90
|
+
"Key" => object_name,
|
91
|
+
"Last-Modified" => Fog::Time.now.to_date_header,
|
92
|
+
"Content-Length" => options["Content-Length"] || data[:headers]["Content-Length"]
|
93
|
+
}
|
94
|
+
|
95
|
+
for key, value in options
|
96
|
+
case key
|
97
|
+
when "Cache-Control", "Content-Disposition", "Content-Encoding", "Content-MD5", "Expires", /^x-goog-meta-/
|
98
|
+
object[key] = value
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
bucket[:objects][object_name] = object
|
103
|
+
response.headers = {
|
104
|
+
"Content-Length" => object["Content-Length"],
|
105
|
+
"Content-Type" => object["Content-Type"],
|
106
|
+
"ETag" => object["ETag"],
|
107
|
+
"Last-Modified" => object["Last-Modified"]
|
108
|
+
}
|
109
|
+
else
|
110
|
+
response.status = 404
|
111
|
+
raise(Excon::Errors.status_error({ :expects => 200 }, response))
|
112
|
+
end
|
113
|
+
response
|
114
|
+
end
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
4
|
+
class Real
|
5
|
+
# Change access control list for an Google Storage object
|
6
|
+
# https://cloud.google.com/storage/docs/json_api/v1/objectAccessControls/insert
|
7
|
+
#
|
8
|
+
# ==== Parameters
|
9
|
+
# * bucket_name<~String> - name of bucket object is in
|
10
|
+
# * object_name<~String> - name of object to add ACL to
|
11
|
+
# * acl<~Hash> - ACL hash to add to bucket, see GCS documentation above
|
12
|
+
# * entity
|
13
|
+
# * role
|
14
|
+
def put_object_acl(bucket_name, object_name, acl)
|
15
|
+
raise ArgumentError.new("bucket_name is required") unless bucket_name
|
16
|
+
raise ArgumentError.new("object_name is required") unless object_name
|
17
|
+
raise ArgumentError.new("acl is required") unless acl
|
18
|
+
|
19
|
+
api_method = @storage_json.object_access_controls.insert
|
20
|
+
parameters = {
|
21
|
+
"bucket" => bucket_name,
|
22
|
+
"object" => object_name
|
23
|
+
}
|
24
|
+
body_object = acl
|
25
|
+
|
26
|
+
request(api_method, parameters, body_object = body_object)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
module Fog
|
2
|
+
module Storage
|
3
|
+
class GoogleJSON
|
4
|
+
class Real
|
5
|
+
# Get an expiring object url from Google Storage for putting an object
|
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
|
+
# https://cloud.google.com/storage/docs/access-control#Signed-URLs
|
18
|
+
#
|
19
|
+
def put_object_url(bucket_name, object_name, headers = {})
|
20
|
+
raise ArgumentError.new("bucket_name is required") unless bucket_name
|
21
|
+
raise ArgumentError.new("object_name is required") unless object_name
|
22
|
+
https_url({
|
23
|
+
:headers => headers,
|
24
|
+
:host => @host,
|
25
|
+
:method => "PUT",
|
26
|
+
:path => "#{bucket_name}/#{object_name}"
|
27
|
+
}, expires)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
class Mock
|
32
|
+
def put_object_url(bucket_name, object_name, expires, headers = {})
|
33
|
+
raise ArgumentError.new("bucket_name is required") unless bucket_name
|
34
|
+
raise ArgumentError.new("object_name is required") unless object_name
|
35
|
+
https_url({
|
36
|
+
:headers => headers,
|
37
|
+
:host => @host,
|
38
|
+
:method => "PUT",
|
39
|
+
:path => "#{bucket_name}/#{object_name}"
|
40
|
+
}, expires)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -1,16 +1,16 @@
|
|
1
1
|
module Fog
|
2
2
|
module Storage
|
3
|
-
class
|
3
|
+
class GoogleXML < Fog::Service
|
4
4
|
requires :google_storage_access_key_id, :google_storage_secret_access_key
|
5
5
|
recognizes :host, :port, :scheme, :persistent, :path_style
|
6
6
|
|
7
|
-
model_path
|
8
|
-
collection
|
9
|
-
model
|
10
|
-
collection
|
11
|
-
model
|
7
|
+
model_path "fog/storage/google_xml/models"
|
8
|
+
collection :directories
|
9
|
+
model :directory
|
10
|
+
collection :files
|
11
|
+
model :file
|
12
12
|
|
13
|
-
request_path
|
13
|
+
request_path "fog/storage/google_xml/requests"
|
14
14
|
request :copy_object
|
15
15
|
request :delete_bucket
|
16
16
|
request :delete_object
|
@@ -47,8 +47,8 @@ module Fog
|
|
47
47
|
private
|
48
48
|
|
49
49
|
def host_path_query(params, expires)
|
50
|
-
params[:headers][
|
51
|
-
params[:path] = CGI.escape(params[:path]).gsub(
|
50
|
+
params[:headers]["Date"] = expires.to_i
|
51
|
+
params[:path] = CGI.escape(params[:path]).gsub("%2F", "/")
|
52
52
|
query = [params[:query]].compact
|
53
53
|
query << "GoogleAccessId=#{@google_storage_access_key_id}"
|
54
54
|
query << "Signature=#{CGI.escape(signature(params))}"
|
@@ -58,7 +58,7 @@ module Fog
|
|
58
58
|
|
59
59
|
def request_params(params)
|
60
60
|
subdomain = params[:host].split(".#{@host}").first
|
61
|
-
if @path_style
|
61
|
+
if @path_style || subdomain !~ /^(?!goog)(?:[a-z]|\d(?!\d{0,2}(?:\.\d{1,3}){3}$))(?:[a-z0-9]|\.(?![\.\-])|\-(?![\.])){1,61}[a-z0-9]$/
|
62
62
|
if subdomain =~ /_/
|
63
63
|
# https://github.com/fog/fog/pull/1258#issuecomment-10248620.
|
64
64
|
Fog::Logger.warning("fog: the specified google storage bucket name (#{subdomain}) is not DNS compliant (only characters a through z, digits 0 through 9, and the hyphen).")
|
@@ -81,12 +81,10 @@ module Fog
|
|
81
81
|
subdomain = nil
|
82
82
|
end
|
83
83
|
|
84
|
-
if subdomain && subdomain != @host
|
85
|
-
params[:subdomain] = subdomain
|
86
|
-
end
|
84
|
+
params[:subdomain] = subdomain if subdomain && subdomain != @host
|
87
85
|
|
88
86
|
params[:scheme] ||= @scheme
|
89
|
-
params[:port]
|
87
|
+
params[:port] ||= @port
|
90
88
|
params
|
91
89
|
end
|
92
90
|
end
|
@@ -96,61 +94,61 @@ module Fog
|
|
96
94
|
|
97
95
|
def self.acls(type)
|
98
96
|
case type
|
99
|
-
when
|
97
|
+
when "private"
|
100
98
|
{
|
101
|
-
"AccessControlList"=> [
|
99
|
+
"AccessControlList" => [
|
102
100
|
{
|
103
101
|
"Permission" => "FULL_CONTROL",
|
104
|
-
"Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
|
102
|
+
"Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
|
105
103
|
}
|
106
104
|
],
|
107
|
-
"Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
|
105
|
+
"Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
|
108
106
|
}
|
109
|
-
when
|
107
|
+
when "public-read"
|
110
108
|
{
|
111
|
-
"AccessControlList"=> [
|
109
|
+
"AccessControlList" => [
|
112
110
|
{
|
113
111
|
"Permission" => "FULL_CONTROL",
|
114
|
-
"Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
|
112
|
+
"Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
|
115
113
|
},
|
116
114
|
{
|
117
115
|
"Permission" => "READ",
|
118
|
-
"Scope" => {"type" => "AllUsers"}
|
116
|
+
"Scope" => { "type" => "AllUsers" }
|
119
117
|
}
|
120
118
|
],
|
121
|
-
"Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
|
119
|
+
"Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
|
122
120
|
}
|
123
|
-
when
|
121
|
+
when "public-read-write"
|
124
122
|
{
|
125
|
-
"AccessControlList"=> [
|
123
|
+
"AccessControlList" => [
|
126
124
|
{
|
127
125
|
"Permission" => "FULL_CONTROL",
|
128
|
-
"Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
|
126
|
+
"Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
|
129
127
|
},
|
130
128
|
{
|
131
129
|
"Permission" => "READ",
|
132
|
-
"Scope" => {"type" => "AllUsers"}
|
130
|
+
"Scope" => { "type" => "AllUsers" }
|
133
131
|
},
|
134
132
|
{
|
135
133
|
"Permission" => "WRITE",
|
136
|
-
"Scope" => {"type" => "AllUsers"}
|
134
|
+
"Scope" => { "type" => "AllUsers" }
|
137
135
|
}
|
138
136
|
],
|
139
|
-
"Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
|
137
|
+
"Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
|
140
138
|
}
|
141
|
-
when
|
139
|
+
when "authenticated-read"
|
142
140
|
{
|
143
|
-
"AccessControlList"=> [
|
141
|
+
"AccessControlList" => [
|
144
142
|
{
|
145
143
|
"Permission" => "FULL_CONTROL",
|
146
|
-
"Scope" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById"}
|
144
|
+
"Scope" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0", "type" => "UserById" }
|
147
145
|
},
|
148
146
|
{
|
149
147
|
"Permission" => "READ",
|
150
|
-
"Scope" => {"type" => "AllAuthenticatedUsers"}
|
148
|
+
"Scope" => { "type" => "AllAuthenticatedUsers" }
|
151
149
|
}
|
152
150
|
],
|
153
|
-
"Owner" => {"ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0"}
|
151
|
+
"Owner" => { "ID" => "2744ccd10c7533bd736ad890f9dd5cab2adb27b07d500b9493f29cdc420cb2e0" }
|
154
152
|
}
|
155
153
|
end
|
156
154
|
end
|
@@ -171,7 +169,7 @@ module Fog
|
|
171
169
|
@data = nil
|
172
170
|
end
|
173
171
|
|
174
|
-
def initialize(options={})
|
172
|
+
def initialize(options = {})
|
175
173
|
@google_storage_access_key_id = options[:google_storage_access_key_id]
|
176
174
|
end
|
177
175
|
|
@@ -183,7 +181,7 @@ module Fog
|
|
183
181
|
self.class.data.delete(@google_storage_access_key_id)
|
184
182
|
end
|
185
183
|
|
186
|
-
def signature(
|
184
|
+
def signature(_params)
|
187
185
|
"foo"
|
188
186
|
end
|
189
187
|
end
|
@@ -208,17 +206,16 @@ module Fog
|
|
208
206
|
#
|
209
207
|
# ==== Returns
|
210
208
|
# * Storage object with connection to google.
|
211
|
-
def initialize(options={})
|
212
|
-
|
209
|
+
def initialize(options = {})
|
213
210
|
@google_storage_access_key_id = options[:google_storage_access_key_id]
|
214
211
|
@google_storage_secret_access_key = options[:google_storage_secret_access_key]
|
215
212
|
@connection_options = options[:connection_options] || {}
|
216
|
-
@hmac = Fog::HMAC.new(
|
217
|
-
@host = options[:host] ||
|
213
|
+
@hmac = Fog::HMAC.new("sha1", @google_storage_secret_access_key)
|
214
|
+
@host = options[:host] || "storage.googleapis.com"
|
218
215
|
@persistent = options.fetch(:persistent, true)
|
219
|
-
@port = options[:port]
|
220
|
-
@scheme = options[:scheme]
|
221
|
-
@path_style = options[:path_style]
|
216
|
+
@port = options[:port] || 443
|
217
|
+
@scheme = options[:scheme] || "https"
|
218
|
+
@path_style = options[:path_style] || false
|
222
219
|
end
|
223
220
|
|
224
221
|
def reload
|
@@ -234,27 +231,26 @@ module Fog
|
|
234
231
|
#{params[:headers]['Date']}
|
235
232
|
DATA
|
236
233
|
|
237
|
-
google_headers
|
234
|
+
google_headers = {}
|
235
|
+
canonical_google_headers = ""
|
238
236
|
for key, value in params[:headers]
|
239
|
-
if key[0..6] ==
|
240
|
-
google_headers[key] = value
|
241
|
-
end
|
237
|
+
google_headers[key] = value if key[0..6] == "x-goog-"
|
242
238
|
end
|
243
239
|
|
244
|
-
google_headers = google_headers.sort {|x, y| x[0] <=> y[0]}
|
240
|
+
google_headers = google_headers.sort { |x, y| x[0] <=> y[0] }
|
245
241
|
for key, value in google_headers
|
246
242
|
canonical_google_headers << "#{key}:#{value}\n"
|
247
243
|
end
|
248
244
|
string_to_sign << "#{canonical_google_headers}"
|
249
245
|
|
250
|
-
canonical_resource
|
246
|
+
canonical_resource = "/"
|
251
247
|
if subdomain = params.delete(:subdomain)
|
252
248
|
canonical_resource << "#{CGI.escape(subdomain).downcase}/"
|
253
249
|
end
|
254
250
|
canonical_resource << "#{params[:path]}"
|
255
|
-
canonical_resource <<
|
251
|
+
canonical_resource << "?"
|
256
252
|
for key in (params[:query] || {}).keys
|
257
|
-
if
|
253
|
+
if %w(acl cors location logging requestPayment torrent versions versioning).include?(key)
|
258
254
|
canonical_resource << "#{key}&"
|
259
255
|
end
|
260
256
|
end
|
@@ -287,8 +283,8 @@ DATA
|
|
287
283
|
host = params.delete(:host)
|
288
284
|
port = params.delete(:port)
|
289
285
|
|
290
|
-
params[:headers][
|
291
|
-
params[:headers][
|
286
|
+
params[:headers]["Date"] = Fog::Time.now.to_date_header
|
287
|
+
params[:headers]["Authorization"] = "GOOG1 #{@google_storage_access_key_id}:#{signature(params)}"
|
292
288
|
|
293
289
|
connection(scheme, host, port).request(params, &block)
|
294
290
|
end
|