fog-google 1.10.0 → 1.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/dependabot.yml +10 -0
- data/.github/workflows/ruby.yml +34 -0
- data/.github/workflows/stale.yml +23 -0
- data/.rubocop.yml +3 -3
- data/CHANGELOG.md +100 -1
- data/README.md +56 -10
- data/ci/docker-image/Dockerfile +3 -3
- data/fog-google.gemspec +4 -4
- data/lib/fog/compute/google.rb +0 -4
- data/lib/fog/compute/google/models/address.rb +1 -1
- data/lib/fog/compute/google/models/addresses.rb +6 -6
- data/lib/fog/compute/google/models/backend_service.rb +1 -1
- data/lib/fog/compute/google/models/disk.rb +3 -3
- data/lib/fog/compute/google/models/disk_types.rb +2 -2
- data/lib/fog/compute/google/models/disks.rb +2 -2
- data/lib/fog/compute/google/models/firewall.rb +2 -2
- data/lib/fog/compute/google/models/firewalls.rb +1 -1
- data/lib/fog/compute/google/models/forwarding_rules.rb +2 -2
- data/lib/fog/compute/google/models/global_addresses.rb +1 -1
- data/lib/fog/compute/google/models/global_forwarding_rules.rb +1 -1
- data/lib/fog/compute/google/models/http_health_check.rb +2 -2
- data/lib/fog/compute/google/models/instance_group_managers.rb +2 -2
- data/lib/fog/compute/google/models/machine_types.rb +2 -2
- data/lib/fog/compute/google/models/operations.rb +3 -3
- data/lib/fog/compute/google/models/server.rb +3 -3
- data/lib/fog/compute/google/models/servers.rb +3 -3
- data/lib/fog/compute/google/models/subnetworks.rb +2 -2
- data/lib/fog/compute/google/models/target_instances.rb +2 -2
- data/lib/fog/compute/google/models/target_pools.rb +2 -2
- data/lib/fog/compute/google/models/url_maps.rb +1 -1
- data/lib/fog/compute/google/requests/abandon_instances.rb +1 -1
- data/lib/fog/compute/google/requests/add_instance_group_instances.rb +3 -3
- data/lib/fog/compute/google/requests/add_server_access_config.rb +3 -3
- data/lib/fog/compute/google/requests/add_target_pool_health_checks.rb +2 -2
- data/lib/fog/compute/google/requests/add_target_pool_instances.rb +2 -2
- data/lib/fog/compute/google/requests/attach_disk.rb +1 -1
- data/lib/fog/compute/google/requests/create_disk_snapshot.rb +1 -1
- data/lib/fog/compute/google/requests/expand_subnetwork_ip_cidr_range.rb +1 -1
- data/lib/fog/compute/google/requests/get_backend_service_health.rb +1 -1
- data/lib/fog/compute/google/requests/get_server_serial_port_output.rb +2 -2
- data/lib/fog/compute/google/requests/get_target_pool_health.rb +1 -1
- data/lib/fog/compute/google/requests/insert_address.rb +2 -2
- data/lib/fog/compute/google/requests/insert_backend_service.rb +1 -1
- data/lib/fog/compute/google/requests/insert_disk.rb +1 -1
- data/lib/fog/compute/google/requests/insert_firewall.rb +1 -1
- data/lib/fog/compute/google/requests/insert_forwarding_rule.rb +1 -1
- data/lib/fog/compute/google/requests/insert_global_address.rb +1 -1
- data/lib/fog/compute/google/requests/insert_global_forwarding_rule.rb +1 -1
- data/lib/fog/compute/google/requests/insert_http_health_check.rb +1 -1
- data/lib/fog/compute/google/requests/insert_image.rb +1 -1
- data/lib/fog/compute/google/requests/insert_instance_group.rb +3 -3
- data/lib/fog/compute/google/requests/insert_instance_group_manager.rb +7 -7
- data/lib/fog/compute/google/requests/insert_instance_template.rb +3 -3
- data/lib/fog/compute/google/requests/insert_network.rb +1 -1
- data/lib/fog/compute/google/requests/insert_route.rb +10 -10
- data/lib/fog/compute/google/requests/insert_server.rb +12 -8
- data/lib/fog/compute/google/requests/insert_ssl_certificate.rb +4 -4
- data/lib/fog/compute/google/requests/insert_subnetwork.rb +1 -1
- data/lib/fog/compute/google/requests/insert_target_http_proxy.rb +3 -3
- data/lib/fog/compute/google/requests/insert_target_https_proxy.rb +4 -4
- data/lib/fog/compute/google/requests/insert_target_instance.rb +1 -1
- data/lib/fog/compute/google/requests/insert_target_pool.rb +1 -1
- data/lib/fog/compute/google/requests/insert_url_map.rb +1 -1
- data/lib/fog/compute/google/requests/invalidate_url_map_cache.rb +1 -1
- data/lib/fog/compute/google/requests/list_addresses.rb +4 -4
- data/lib/fog/compute/google/requests/list_aggregated_addresses.rb +1 -1
- data/lib/fog/compute/google/requests/list_aggregated_disk_types.rb +2 -2
- data/lib/fog/compute/google/requests/list_aggregated_disks.rb +2 -2
- data/lib/fog/compute/google/requests/list_aggregated_forwarding_rules.rb +2 -2
- data/lib/fog/compute/google/requests/list_aggregated_instance_group_managers.rb +4 -4
- data/lib/fog/compute/google/requests/list_aggregated_instance_groups.rb +1 -1
- data/lib/fog/compute/google/requests/list_aggregated_machine_types.rb +2 -2
- data/lib/fog/compute/google/requests/list_aggregated_servers.rb +2 -2
- data/lib/fog/compute/google/requests/list_aggregated_subnetworks.rb +4 -4
- data/lib/fog/compute/google/requests/list_aggregated_target_instances.rb +4 -4
- data/lib/fog/compute/google/requests/list_aggregated_target_pools.rb +4 -4
- data/lib/fog/compute/google/requests/list_disk_types.rb +2 -2
- data/lib/fog/compute/google/requests/list_disks.rb +2 -2
- data/lib/fog/compute/google/requests/list_firewalls.rb +4 -4
- data/lib/fog/compute/google/requests/list_forwarding_rules.rb +2 -2
- data/lib/fog/compute/google/requests/list_global_addresses.rb +5 -5
- data/lib/fog/compute/google/requests/list_global_forwarding_rules.rb +2 -2
- data/lib/fog/compute/google/requests/list_global_operations.rb +4 -4
- data/lib/fog/compute/google/requests/list_http_health_checks.rb +2 -2
- data/lib/fog/compute/google/requests/list_images.rb +2 -2
- data/lib/fog/compute/google/requests/list_instance_group_managers.rb +2 -2
- data/lib/fog/compute/google/requests/list_instance_templates.rb +4 -4
- data/lib/fog/compute/google/requests/list_machine_types.rb +4 -4
- data/lib/fog/compute/google/requests/list_networks.rb +4 -4
- data/lib/fog/compute/google/requests/list_subnetworks.rb +4 -4
- data/lib/fog/compute/google/requests/list_target_pools.rb +4 -4
- data/lib/fog/compute/google/requests/list_url_maps.rb +2 -2
- data/lib/fog/compute/google/requests/patch_firewall.rb +1 -1
- data/lib/fog/compute/google/requests/remove_instance_group_instances.rb +3 -3
- data/lib/fog/compute/google/requests/remove_target_pool_health_checks.rb +2 -2
- data/lib/fog/compute/google/requests/remove_target_pool_instance.rb +2 -2
- data/lib/fog/compute/google/requests/remove_target_pool_instances.rb +2 -2
- data/lib/fog/compute/google/requests/set_common_instance_metadata.rb +2 -2
- data/lib/fog/compute/google/requests/set_forwarding_rule_target.rb +1 -1
- data/lib/fog/compute/google/requests/set_global_forwarding_rule_target.rb +1 -1
- data/lib/fog/compute/google/requests/set_server_metadata.rb +3 -3
- data/lib/fog/compute/google/requests/set_server_tags.rb +2 -2
- data/lib/fog/compute/google/requests/set_snapshot_labels.rb +2 -2
- data/lib/fog/compute/google/requests/set_subnetwork_private_ip_google_access.rb +1 -1
- data/lib/fog/compute/google/requests/set_target_http_proxy_url_map.rb +1 -1
- data/lib/fog/compute/google/requests/set_target_https_proxy_ssl_certificates.rb +1 -1
- data/lib/fog/compute/google/requests/set_target_https_proxy_url_map.rb +1 -1
- data/lib/fog/compute/google/requests/set_target_pool_backup.rb +2 -2
- data/lib/fog/compute/google/requests/update_firewall.rb +1 -1
- data/lib/fog/compute/google/requests/update_http_health_check.rb +1 -1
- data/lib/fog/compute/google/requests/update_url_map.rb +1 -1
- data/lib/fog/compute/google/requests/validate_url_map.rb +1 -1
- data/lib/fog/dns/google/requests/create_change.rb +2 -2
- data/lib/fog/google/models/sql/instance.rb +2 -2
- data/lib/fog/google/requests/monitoring/create_metric_descriptor.rb +8 -8
- data/lib/fog/google/requests/monitoring/create_timeseries.rb +1 -1
- data/lib/fog/google/requests/monitoring/list_timeseries.rb +1 -1
- data/lib/fog/google/requests/pubsub/acknowledge_subscription.rb +1 -1
- data/lib/fog/google/requests/pubsub/create_subscription.rb +3 -3
- data/lib/fog/google/requests/pubsub/pull_subscription.rb +5 -1
- data/lib/fog/google/requests/sql/clone_instance.rb +4 -4
- data/lib/fog/google/requests/sql/delete_user.rb +1 -1
- data/lib/fog/google/requests/sql/export_instance.rb +3 -3
- data/lib/fog/google/requests/sql/import_instance.rb +2 -2
- data/lib/fog/google/requests/sql/insert_backup_run.rb +1 -1
- data/lib/fog/google/requests/sql/insert_instance.rb +2 -2
- data/lib/fog/google/requests/sql/insert_ssl_cert.rb +1 -1
- data/lib/fog/google/requests/sql/insert_user.rb +1 -1
- data/lib/fog/google/requests/sql/restore_instance_backup.rb +4 -4
- data/lib/fog/google/requests/sql/update_instance.rb +2 -2
- data/lib/fog/google/shared.rb +10 -5
- data/lib/fog/google/version.rb +1 -1
- data/lib/fog/storage/google_json.rb +4 -0
- data/lib/fog/storage/google_json/mock.rb +6 -0
- data/lib/fog/storage/google_json/models/directories.rb +1 -1
- data/lib/fog/storage/google_json/models/directory.rb +1 -1
- data/lib/fog/storage/google_json/models/file.rb +1 -1
- data/lib/fog/storage/google_json/models/files.rb +1 -1
- data/lib/fog/storage/google_json/real.rb +106 -3
- data/lib/fog/storage/google_json/requests/copy_object.rb +12 -1
- data/lib/fog/storage/google_json/requests/get_object.rb +5 -3
- data/lib/fog/storage/google_json/requests/list_buckets.rb +4 -4
- data/lib/fog/storage/google_json/requests/list_objects.rb +1 -1
- data/lib/fog/storage/google_json/requests/put_bucket.rb +1 -1
- data/lib/fog/storage/google_json/requests/put_bucket_acl.rb +1 -1
- data/lib/fog/storage/google_json/requests/put_object.rb +1 -1
- data/lib/fog/storage/google_json/requests/put_object_acl.rb +1 -1
- data/lib/fog/storage/google_json/utils.rb +6 -2
- data/lib/fog/storage/google_xml/models/file.rb +2 -2
- data/lib/fog/storage/google_xml/requests/get_bucket.rb +0 -1
- data/lib/fog/storage/google_xml/requests/head_object.rb +7 -6
- data/tasks/changelog.rake +10 -1
- data/test/helpers/integration_test_helper.rb +15 -1
- data/test/integration/monitoring/test_metric_descriptors.rb +1 -1
- data/test/integration/monitoring/test_timeseries.rb +11 -25
- data/test/integration/pubsub/test_pubsub_models.rb +3 -3
- data/test/integration/pubsub/test_pubsub_requests.rb +2 -2
- data/test/integration/sql/test_certs.rb +0 -1
- data/test/integration/storage/test_objects.rb +36 -0
- data/test/unit/storage/test_common_xml_collections.rb +11 -0
- data/test/unit/storage/test_json_requests.rb +8 -0
- metadata +28 -13
- data/.travis.yml +0 -16
@@ -14,7 +14,7 @@ module Fog
|
|
14
14
|
def set_target_pool_backup(target_pool, region, backup_target,
|
15
15
|
failover_ratio: nil)
|
16
16
|
target_ref = ::Google::Apis::ComputeV1::TargetReference.new(
|
17
|
-
:
|
17
|
+
target: backup_target
|
18
18
|
)
|
19
19
|
|
20
20
|
@compute.set_target_pool_backup(
|
@@ -22,7 +22,7 @@ module Fog
|
|
22
22
|
region.split("/")[-1],
|
23
23
|
target_pool,
|
24
24
|
target_ref,
|
25
|
-
:
|
25
|
+
failover_ratio: failover_ratio
|
26
26
|
)
|
27
27
|
end
|
28
28
|
end
|
@@ -14,7 +14,7 @@ module Fog
|
|
14
14
|
@compute.validate_url_map(
|
15
15
|
@project, url_map_name,
|
16
16
|
::Google::Apis::ComputeV1::ValidateUrlMapsRequest.new(
|
17
|
-
:
|
17
|
+
url_map: ::Google::Apis::ComputeV1::UrlMap.new(**url_map)
|
18
18
|
)
|
19
19
|
)
|
20
20
|
end
|
@@ -98,7 +98,7 @@ module Fog
|
|
98
98
|
requires :identity
|
99
99
|
|
100
100
|
data = service.insert_instance(identity, attributes[:tier], attributes)
|
101
|
-
operation = Fog::Google::SQL::Operations.new(:
|
101
|
+
operation = Fog::Google::SQL::Operations.new(service: service).get(data.name)
|
102
102
|
operation.wait_for { ready? } unless async
|
103
103
|
reload
|
104
104
|
end
|
@@ -271,7 +271,7 @@ module Fog
|
|
271
271
|
requires :identity
|
272
272
|
|
273
273
|
data = service.restore_instance_backup(identity, backup_run_id)
|
274
|
-
operation = Fog::Google::SQL::Operations.new(:
|
274
|
+
operation = Fog::Google::SQL::Operations.new(service: service).get(data.name)
|
275
275
|
operation.tap { |o| o.wait_for { ready? } unless async }
|
276
276
|
end
|
277
277
|
|
@@ -25,14 +25,14 @@ module Fog
|
|
25
25
|
def create_metric_descriptor(metric_type: nil, unit: nil, value_type: nil,
|
26
26
|
description: nil, display_name: nil, labels: [], metric_kind: nil)
|
27
27
|
metric_descriptor = ::Google::Apis::MonitoringV3::MetricDescriptor.new(
|
28
|
-
:
|
29
|
-
:
|
30
|
-
:
|
31
|
-
:
|
32
|
-
:
|
33
|
-
:
|
34
|
-
:
|
35
|
-
:
|
28
|
+
name: "projects/#{@project}/metricDescriptors/#{metric_type}",
|
29
|
+
type: metric_type,
|
30
|
+
unit: unit,
|
31
|
+
value_type: value_type,
|
32
|
+
description: description,
|
33
|
+
display_name: display_name,
|
34
|
+
labels: labels.map { |l| ::Google::Apis::MonitoringV3::LabelDescriptor.new(**l) },
|
35
|
+
metric_kind: metric_kind
|
36
36
|
)
|
37
37
|
|
38
38
|
@monitoring.create_project_metric_descriptor("projects/#{@project}", metric_descriptor)
|
@@ -11,7 +11,7 @@ module Fog
|
|
11
11
|
#
|
12
12
|
def create_timeseries(timeseries: [])
|
13
13
|
request = ::Google::Apis::MonitoringV3::CreateTimeSeriesRequest.new(
|
14
|
-
:
|
14
|
+
time_series: timeseries
|
15
15
|
)
|
16
16
|
@monitoring.create_project_time_series("projects/#{@project}", request)
|
17
17
|
end
|
@@ -18,9 +18,9 @@ module Fog
|
|
18
18
|
# @see https://cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/create
|
19
19
|
def create_subscription(subscription_name, topic, push_config = {}, ack_deadline_seconds = nil)
|
20
20
|
subscription = ::Google::Apis::PubsubV1::Subscription.new(
|
21
|
-
:
|
22
|
-
:
|
23
|
-
:
|
21
|
+
topic: topic,
|
22
|
+
ack_deadline_seconds: ack_deadline_seconds,
|
23
|
+
push_config: push_config
|
24
24
|
)
|
25
25
|
|
26
26
|
@pubsub.create_subscription(subscription_name, subscription)
|
@@ -16,7 +16,11 @@ module Fog
|
|
16
16
|
# @option options [Number] :max_messages maximum number of messages to
|
17
17
|
# retrieve (defaults to 10)
|
18
18
|
# @see https://cloud.google.com/pubsub/reference/rest/v1/projects.subscriptions/pull
|
19
|
-
def pull_subscription(subscription, options = {
|
19
|
+
def pull_subscription(subscription, options = {})
|
20
|
+
defaults = { :return_immediately => true,
|
21
|
+
:max_messages => 10 }
|
22
|
+
options = defaults.merge(options)
|
23
|
+
|
20
24
|
pull_request = ::Google::Apis::PubsubV1::PullRequest.new(
|
21
25
|
:return_immediately => options[:return_immediately],
|
22
26
|
:max_messages => options[:max_messages]
|
@@ -15,14 +15,14 @@ module Fog
|
|
15
15
|
|
16
16
|
unless log_filename.nil? || log_position.nil?
|
17
17
|
context[:bin_log_coordinates] = ::Google::Apis::SqladminV1beta4::BinLogCoordinates.new(
|
18
|
-
:
|
19
|
-
:
|
20
|
-
:
|
18
|
+
kind: "sql#binLogCoordinates",
|
19
|
+
log_filename: log_filename,
|
20
|
+
log_position: log_position
|
21
21
|
)
|
22
22
|
end
|
23
23
|
|
24
24
|
clone_request = ::Google::Apis::SqladminV1beta4::CloneInstancesRequest.new(
|
25
|
-
:
|
25
|
+
clone_context: ::Google::Apis::SqladminV1beta4::CloneContext.new(**context)
|
26
26
|
)
|
27
27
|
|
28
28
|
@sql.clone_instance(@project, instance_id, clone_request)
|
@@ -24,12 +24,12 @@ module Fog
|
|
24
24
|
|
25
25
|
unless csv_export_options.empty?
|
26
26
|
data[:csv_export_options] =
|
27
|
-
::Google::Apis::SqladminV1beta4::ExportContext::CsvExportOptions.new(csv_export_options)
|
27
|
+
::Google::Apis::SqladminV1beta4::ExportContext::CsvExportOptions.new(**csv_export_options)
|
28
28
|
end
|
29
29
|
|
30
30
|
unless sql_export_options.nil?
|
31
31
|
data[:sql_export_options] =
|
32
|
-
::Google::Apis::SqladminV1beta4::ExportContext::SqlExportOptions.new(sql_export_options)
|
32
|
+
::Google::Apis::SqladminV1beta4::ExportContext::SqlExportOptions.new(**sql_export_options)
|
33
33
|
end
|
34
34
|
|
35
35
|
export_context = ::Google::Apis::SqladminV1beta4::ExportContext.new(export_context)
|
@@ -37,7 +37,7 @@ module Fog
|
|
37
37
|
@project,
|
38
38
|
instance_id,
|
39
39
|
::Google::Apis::SqladminV1beta4::ExportInstancesRequest.new(
|
40
|
-
:
|
40
|
+
export_context: export_context
|
41
41
|
)
|
42
42
|
)
|
43
43
|
end
|
@@ -19,14 +19,14 @@ module Fog
|
|
19
19
|
data[:import_user] = import_user unless import_user.nil?
|
20
20
|
unless csv_import_options.nil?
|
21
21
|
data[:csv_import_options] =
|
22
|
-
::Google::Apis::SqladminV1beta4::ImportContext::CsvImportOptions.new(csv_import_options)
|
22
|
+
::Google::Apis::SqladminV1beta4::ImportContext::CsvImportOptions.new(**csv_import_options)
|
23
23
|
end
|
24
24
|
|
25
25
|
@sql.import_instance(
|
26
26
|
@project,
|
27
27
|
instance_id,
|
28
28
|
::Google::Apis::SqladminV1beta4::ImportInstancesRequest.new(
|
29
|
-
:
|
29
|
+
import_context: ::Google::Apis::SqladminV1beta4::ImportContext.new(**data)
|
30
30
|
)
|
31
31
|
)
|
32
32
|
end
|
@@ -8,9 +8,9 @@ module Fog
|
|
8
8
|
|
9
9
|
class Real
|
10
10
|
def insert_instance(name, tier, options = {})
|
11
|
-
instance = ::Google::Apis::SqladminV1beta4::DatabaseInstance.new(options)
|
11
|
+
instance = ::Google::Apis::SqladminV1beta4::DatabaseInstance.new(**options)
|
12
12
|
instance.name = name
|
13
|
-
instance.settings = ::Google::Apis::SqladminV1beta4::Settings.new(instance.settings || {})
|
13
|
+
instance.settings = ::Google::Apis::SqladminV1beta4::Settings.new(**instance.settings || {})
|
14
14
|
instance.settings.tier = tier
|
15
15
|
@sql.insert_instance(@project, instance)
|
16
16
|
end
|
@@ -9,10 +9,10 @@ module Fog
|
|
9
9
|
class Real
|
10
10
|
def restore_instance_backup(instance_id, backup_run_id)
|
11
11
|
request = ::Google::Apis::SqladminV1beta4::RestoreInstancesBackupRequest.new(
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
15
|
-
:
|
12
|
+
restore_backup_context: ::Google::Apis::SqladminV1beta4::RestoreBackupContext.new(
|
13
|
+
backup_run_id: backup_run_id,
|
14
|
+
instance_id: instance_id,
|
15
|
+
kind: "sql#restoreBackupContext"
|
16
16
|
)
|
17
17
|
)
|
18
18
|
@sql.restore_instance_backup(@project, instance_id, request)
|
@@ -7,14 +7,14 @@ module Fog
|
|
7
7
|
# @see https://cloud.google.com/sql/docs/mysql/admin-api/v1beta4/instances/update
|
8
8
|
class Real
|
9
9
|
def update_instance(instance_id, settings_version, tier, settings = {})
|
10
|
-
settings = ::Google::Apis::SqladminV1beta4::Settings.new(settings)
|
10
|
+
settings = ::Google::Apis::SqladminV1beta4::Settings.new(**settings)
|
11
11
|
settings.tier = tier
|
12
12
|
settings.settings_version = settings_version
|
13
13
|
|
14
14
|
@sql.update_instance(
|
15
15
|
@project,
|
16
16
|
instance_id,
|
17
|
-
::Google::Apis::SqladminV1beta4::DatabaseInstance.new(:
|
17
|
+
::Google::Apis::SqladminV1beta4::DatabaseInstance.new(settings: settings)
|
18
18
|
)
|
19
19
|
end
|
20
20
|
end
|
data/lib/fog/google/shared.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require "google-cloud-env"
|
2
|
+
|
1
3
|
module Fog
|
2
4
|
module Google
|
3
5
|
module Shared
|
@@ -14,6 +16,9 @@ module Fog
|
|
14
16
|
@project = project
|
15
17
|
@api_version = api_version
|
16
18
|
@api_url = base_url + api_version + "/projects/"
|
19
|
+
# google-cloud-env allows us to figure out which GCP runtime we're running in and query metadata
|
20
|
+
# e.g. whether we're running in GCE/GKE/AppEngine or what region the instance is running in
|
21
|
+
@google_cloud_env = ::Google::Cloud::Env.get
|
17
22
|
end
|
18
23
|
|
19
24
|
##
|
@@ -33,14 +38,14 @@ module Fog
|
|
33
38
|
def initialize_google_client(options)
|
34
39
|
# NOTE: loaded here to avoid requiring this as a core Fog dependency
|
35
40
|
begin
|
36
|
-
#
|
37
|
-
# of funky things, like this nonsense.
|
41
|
+
# TODO: google-api-client is in gemspec now, re-assess if this initialization logic is still needed
|
38
42
|
require "google/apis/monitoring_#{Fog::Google::Monitoring::GOOGLE_MONITORING_API_VERSION}"
|
39
43
|
require "google/apis/compute_#{Fog::Compute::Google::GOOGLE_COMPUTE_API_VERSION}"
|
40
44
|
require "google/apis/dns_#{Fog::DNS::Google::GOOGLE_DNS_API_VERSION}"
|
41
45
|
require "google/apis/pubsub_#{Fog::Google::Pubsub::GOOGLE_PUBSUB_API_VERSION}"
|
42
46
|
require "google/apis/sqladmin_#{Fog::Google::SQL::GOOGLE_SQL_API_VERSION}"
|
43
47
|
require "google/apis/storage_#{Fog::Storage::GoogleJSON::GOOGLE_STORAGE_JSON_API_VERSION}"
|
48
|
+
require "google/apis/iamcredentials_#{Fog::Storage::GoogleJSON::GOOGLE_STORAGE_JSON_IAM_API_VERSION}"
|
44
49
|
require "googleauth"
|
45
50
|
rescue LoadError => error
|
46
51
|
Fog::Errors::Error.new("Please install the google-api-client (>= 0.9) gem before using this provider")
|
@@ -82,10 +87,10 @@ module Fog
|
|
82
87
|
# Applies given options to the client instance
|
83
88
|
#
|
84
89
|
# @param [Google::Apis::Core::BaseService] service API service client instance
|
85
|
-
# @param [Hash]
|
86
|
-
# @param [Hash] _ignored Rest of the options (for convenience, ignored)
|
90
|
+
# @param [Hash] options (all ignored a.t.m., except :google_client_options)
|
87
91
|
# @return [void]
|
88
|
-
def apply_client_options(service,
|
92
|
+
def apply_client_options(service, options = {})
|
93
|
+
google_client_options = options[:google_client_options]
|
89
94
|
return if google_client_options.nil? || google_client_options.empty?
|
90
95
|
(service.client_options.members & google_client_options.keys).each do |option|
|
91
96
|
service.client_options[option] = google_client_options[option]
|
data/lib/fog/google/version.rb
CHANGED
@@ -27,6 +27,10 @@ module Fog
|
|
27
27
|
GOOGLE_STORAGE_JSON_BASE_URL = "https://www.googleapis.com/storage/".freeze
|
28
28
|
GOOGLE_STORAGE_BUCKET_BASE_URL = "https://storage.googleapis.com/".freeze
|
29
29
|
|
30
|
+
# Version of IAM API used for blob signing, see Fog::Storage::GoogleJSON::Real#iam_signer
|
31
|
+
GOOGLE_STORAGE_JSON_IAM_API_VERSION = "v1".freeze
|
32
|
+
GOOGLE_STORAGE_JSON_IAM_API_SCOPE_URLS = %w(https://www.googleapis.com/auth/devstorage.full_control).freeze
|
33
|
+
|
30
34
|
# TODO: Come up with a way to only request a subset of permissions.
|
31
35
|
# https://cloud.google.com/storage/docs/json_api/v1/how-tos/authorizing
|
32
36
|
GOOGLE_STORAGE_JSON_API_SCOPE_URLS = %w(https://www.googleapis.com/auth/devstorage.full_control).freeze
|
@@ -10,11 +10,17 @@ module Fog
|
|
10
10
|
def initialize(options = {})
|
11
11
|
shared_initialize(options[:google_project], GOOGLE_STORAGE_JSON_API_VERSION, GOOGLE_STORAGE_JSON_BASE_URL)
|
12
12
|
@client = MockClient.new('test')
|
13
|
+
@storage_json = MockClient.new('test')
|
14
|
+
@iam_service = MockClient.new('test')
|
13
15
|
end
|
14
16
|
|
15
17
|
def signature(_params)
|
16
18
|
"foo"
|
17
19
|
end
|
20
|
+
|
21
|
+
def google_access_id
|
22
|
+
"my-account@project.iam.gserviceaccount"
|
23
|
+
end
|
18
24
|
end
|
19
25
|
end
|
20
26
|
end
|
@@ -105,7 +105,7 @@ module Fog
|
|
105
105
|
|
106
106
|
options[:predefined_acl] ||= @predefined_acl
|
107
107
|
|
108
|
-
service.put_object(directory.key, key, body, options)
|
108
|
+
service.put_object(directory.key, key, body, **options)
|
109
109
|
self.content_length = Fog::Storage.get_body_size(body)
|
110
110
|
self.content_type ||= Fog::Storage.get_content_type(body)
|
111
111
|
true
|
@@ -33,7 +33,7 @@ module Fog
|
|
33
33
|
|
34
34
|
def get(key, options = {}, &block)
|
35
35
|
requires :directory
|
36
|
-
data = service.get_object(directory.key, key, options, &block).to_h
|
36
|
+
data = service.get_object(directory.key, key, **options, &block).to_h
|
37
37
|
new(data)
|
38
38
|
rescue ::Google::Apis::ClientError => e
|
39
39
|
raise e unless e.status_code == 404
|