fog-google 1.13.0 → 1.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +1 -1
  3. data/.github/workflows/stale.yml +1 -1
  4. data/CHANGELOG.md +27 -0
  5. data/lib/fog/compute/google/models/address.rb +1 -1
  6. data/lib/fog/compute/google/models/addresses.rb +6 -6
  7. data/lib/fog/compute/google/models/backend_service.rb +1 -1
  8. data/lib/fog/compute/google/models/disk.rb +3 -3
  9. data/lib/fog/compute/google/models/disk_types.rb +2 -2
  10. data/lib/fog/compute/google/models/disks.rb +2 -2
  11. data/lib/fog/compute/google/models/firewall.rb +2 -2
  12. data/lib/fog/compute/google/models/firewalls.rb +1 -1
  13. data/lib/fog/compute/google/models/forwarding_rules.rb +2 -2
  14. data/lib/fog/compute/google/models/global_addresses.rb +1 -1
  15. data/lib/fog/compute/google/models/global_forwarding_rules.rb +1 -1
  16. data/lib/fog/compute/google/models/http_health_check.rb +2 -2
  17. data/lib/fog/compute/google/models/instance_group_managers.rb +2 -2
  18. data/lib/fog/compute/google/models/machine_types.rb +2 -2
  19. data/lib/fog/compute/google/models/operations.rb +3 -3
  20. data/lib/fog/compute/google/models/servers.rb +3 -3
  21. data/lib/fog/compute/google/models/subnetworks.rb +2 -2
  22. data/lib/fog/compute/google/models/target_instances.rb +2 -2
  23. data/lib/fog/compute/google/models/target_pools.rb +2 -2
  24. data/lib/fog/compute/google/models/url_maps.rb +1 -1
  25. data/lib/fog/compute/google/requests/abandon_instances.rb +1 -1
  26. data/lib/fog/compute/google/requests/add_instance_group_instances.rb +3 -3
  27. data/lib/fog/compute/google/requests/add_server_access_config.rb +3 -3
  28. data/lib/fog/compute/google/requests/add_target_pool_health_checks.rb +2 -2
  29. data/lib/fog/compute/google/requests/add_target_pool_instances.rb +2 -2
  30. data/lib/fog/compute/google/requests/attach_disk.rb +1 -1
  31. data/lib/fog/compute/google/requests/create_disk_snapshot.rb +1 -1
  32. data/lib/fog/compute/google/requests/expand_subnetwork_ip_cidr_range.rb +1 -1
  33. data/lib/fog/compute/google/requests/get_backend_service_health.rb +1 -1
  34. data/lib/fog/compute/google/requests/get_server_serial_port_output.rb +2 -2
  35. data/lib/fog/compute/google/requests/get_target_pool_health.rb +1 -1
  36. data/lib/fog/compute/google/requests/insert_address.rb +2 -2
  37. data/lib/fog/compute/google/requests/insert_backend_service.rb +1 -1
  38. data/lib/fog/compute/google/requests/insert_disk.rb +1 -1
  39. data/lib/fog/compute/google/requests/insert_firewall.rb +1 -1
  40. data/lib/fog/compute/google/requests/insert_forwarding_rule.rb +1 -1
  41. data/lib/fog/compute/google/requests/insert_global_address.rb +1 -1
  42. data/lib/fog/compute/google/requests/insert_global_forwarding_rule.rb +1 -1
  43. data/lib/fog/compute/google/requests/insert_http_health_check.rb +1 -1
  44. data/lib/fog/compute/google/requests/insert_image.rb +1 -1
  45. data/lib/fog/compute/google/requests/insert_instance_group.rb +3 -3
  46. data/lib/fog/compute/google/requests/insert_instance_group_manager.rb +7 -7
  47. data/lib/fog/compute/google/requests/insert_instance_template.rb +3 -3
  48. data/lib/fog/compute/google/requests/insert_network.rb +1 -1
  49. data/lib/fog/compute/google/requests/insert_route.rb +10 -10
  50. data/lib/fog/compute/google/requests/insert_server.rb +9 -9
  51. data/lib/fog/compute/google/requests/insert_ssl_certificate.rb +4 -4
  52. data/lib/fog/compute/google/requests/insert_subnetwork.rb +1 -1
  53. data/lib/fog/compute/google/requests/insert_target_http_proxy.rb +3 -3
  54. data/lib/fog/compute/google/requests/insert_target_https_proxy.rb +4 -4
  55. data/lib/fog/compute/google/requests/insert_target_instance.rb +1 -1
  56. data/lib/fog/compute/google/requests/insert_target_pool.rb +1 -1
  57. data/lib/fog/compute/google/requests/insert_url_map.rb +1 -1
  58. data/lib/fog/compute/google/requests/invalidate_url_map_cache.rb +1 -1
  59. data/lib/fog/compute/google/requests/list_addresses.rb +4 -4
  60. data/lib/fog/compute/google/requests/list_aggregated_addresses.rb +1 -1
  61. data/lib/fog/compute/google/requests/list_aggregated_disk_types.rb +2 -2
  62. data/lib/fog/compute/google/requests/list_aggregated_disks.rb +2 -2
  63. data/lib/fog/compute/google/requests/list_aggregated_forwarding_rules.rb +2 -2
  64. data/lib/fog/compute/google/requests/list_aggregated_instance_group_managers.rb +4 -4
  65. data/lib/fog/compute/google/requests/list_aggregated_instance_groups.rb +1 -1
  66. data/lib/fog/compute/google/requests/list_aggregated_machine_types.rb +2 -2
  67. data/lib/fog/compute/google/requests/list_aggregated_servers.rb +2 -2
  68. data/lib/fog/compute/google/requests/list_aggregated_subnetworks.rb +4 -4
  69. data/lib/fog/compute/google/requests/list_aggregated_target_instances.rb +4 -4
  70. data/lib/fog/compute/google/requests/list_aggregated_target_pools.rb +4 -4
  71. data/lib/fog/compute/google/requests/list_disk_types.rb +2 -2
  72. data/lib/fog/compute/google/requests/list_disks.rb +2 -2
  73. data/lib/fog/compute/google/requests/list_firewalls.rb +4 -4
  74. data/lib/fog/compute/google/requests/list_forwarding_rules.rb +2 -2
  75. data/lib/fog/compute/google/requests/list_global_addresses.rb +5 -5
  76. data/lib/fog/compute/google/requests/list_global_forwarding_rules.rb +2 -2
  77. data/lib/fog/compute/google/requests/list_global_operations.rb +4 -4
  78. data/lib/fog/compute/google/requests/list_http_health_checks.rb +2 -2
  79. data/lib/fog/compute/google/requests/list_images.rb +2 -2
  80. data/lib/fog/compute/google/requests/list_instance_group_managers.rb +2 -2
  81. data/lib/fog/compute/google/requests/list_instance_templates.rb +4 -4
  82. data/lib/fog/compute/google/requests/list_machine_types.rb +4 -4
  83. data/lib/fog/compute/google/requests/list_networks.rb +4 -4
  84. data/lib/fog/compute/google/requests/list_subnetworks.rb +4 -4
  85. data/lib/fog/compute/google/requests/list_target_pools.rb +4 -4
  86. data/lib/fog/compute/google/requests/list_url_maps.rb +2 -2
  87. data/lib/fog/compute/google/requests/patch_firewall.rb +1 -1
  88. data/lib/fog/compute/google/requests/remove_instance_group_instances.rb +3 -3
  89. data/lib/fog/compute/google/requests/remove_target_pool_health_checks.rb +2 -2
  90. data/lib/fog/compute/google/requests/remove_target_pool_instance.rb +2 -2
  91. data/lib/fog/compute/google/requests/remove_target_pool_instances.rb +2 -2
  92. data/lib/fog/compute/google/requests/set_common_instance_metadata.rb +2 -2
  93. data/lib/fog/compute/google/requests/set_forwarding_rule_target.rb +1 -1
  94. data/lib/fog/compute/google/requests/set_global_forwarding_rule_target.rb +1 -1
  95. data/lib/fog/compute/google/requests/set_server_metadata.rb +2 -2
  96. data/lib/fog/compute/google/requests/set_server_tags.rb +2 -2
  97. data/lib/fog/compute/google/requests/set_snapshot_labels.rb +2 -2
  98. data/lib/fog/compute/google/requests/set_subnetwork_private_ip_google_access.rb +1 -1
  99. data/lib/fog/compute/google/requests/set_target_http_proxy_url_map.rb +1 -1
  100. data/lib/fog/compute/google/requests/set_target_https_proxy_ssl_certificates.rb +1 -1
  101. data/lib/fog/compute/google/requests/set_target_https_proxy_url_map.rb +1 -1
  102. data/lib/fog/compute/google/requests/set_target_pool_backup.rb +2 -2
  103. data/lib/fog/compute/google/requests/update_firewall.rb +1 -1
  104. data/lib/fog/compute/google/requests/update_http_health_check.rb +1 -1
  105. data/lib/fog/compute/google/requests/update_url_map.rb +1 -1
  106. data/lib/fog/compute/google/requests/validate_url_map.rb +1 -1
  107. data/lib/fog/dns/google/requests/create_change.rb +2 -2
  108. data/lib/fog/google/models/sql/instance.rb +2 -2
  109. data/lib/fog/google/requests/monitoring/create_metric_descriptor.rb +8 -8
  110. data/lib/fog/google/requests/monitoring/create_timeseries.rb +1 -1
  111. data/lib/fog/google/requests/monitoring/list_timeseries.rb +1 -1
  112. data/lib/fog/google/requests/pubsub/acknowledge_subscription.rb +1 -1
  113. data/lib/fog/google/requests/pubsub/create_subscription.rb +3 -3
  114. data/lib/fog/google/requests/sql/clone_instance.rb +4 -4
  115. data/lib/fog/google/requests/sql/export_instance.rb +3 -3
  116. data/lib/fog/google/requests/sql/import_instance.rb +2 -2
  117. data/lib/fog/google/requests/sql/insert_backup_run.rb +1 -1
  118. data/lib/fog/google/requests/sql/insert_instance.rb +2 -2
  119. data/lib/fog/google/requests/sql/insert_ssl_cert.rb +1 -1
  120. data/lib/fog/google/requests/sql/insert_user.rb +1 -1
  121. data/lib/fog/google/requests/sql/restore_instance_backup.rb +4 -4
  122. data/lib/fog/google/requests/sql/update_instance.rb +2 -2
  123. data/lib/fog/google/shared.rb +1 -2
  124. data/lib/fog/google/version.rb +1 -1
  125. data/lib/fog/storage/google_json/models/directories.rb +1 -1
  126. data/lib/fog/storage/google_json/models/directory.rb +1 -1
  127. data/lib/fog/storage/google_json/models/file.rb +1 -1
  128. data/lib/fog/storage/google_json/models/files.rb +1 -1
  129. data/lib/fog/storage/google_json/requests/copy_object.rb +11 -1
  130. data/lib/fog/storage/google_json/requests/get_object.rb +5 -3
  131. data/lib/fog/storage/google_json/requests/list_buckets.rb +4 -4
  132. data/lib/fog/storage/google_json/requests/list_objects.rb +1 -1
  133. data/lib/fog/storage/google_json/requests/put_bucket.rb +1 -1
  134. data/lib/fog/storage/google_json/requests/put_bucket_acl.rb +1 -1
  135. data/lib/fog/storage/google_json/requests/put_object.rb +1 -1
  136. data/lib/fog/storage/google_json/requests/put_object_acl.rb +1 -1
  137. data/lib/fog/storage/google_json/utils.rb +3 -2
  138. data/lib/fog/storage/google_xml/models/file.rb +1 -1
  139. data/test/integration/monitoring/test_metric_descriptors.rb +1 -1
  140. data/test/integration/storage/test_objects.rb +20 -0
  141. data/test/unit/storage/test_json_requests.rb +8 -0
  142. metadata +3 -3
@@ -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
@@ -15,9 +15,19 @@ module Fog
15
15
  target_bucket, target_object, options = {})
16
16
  request_options = ::Google::Apis::RequestOptions.default.merge(options)
17
17
 
18
+ object = ::Google::Apis::StorageV1::Object.new(**options)
19
+
18
20
  @storage_json.copy_object(source_bucket, source_object,
19
21
  target_bucket, target_object,
20
- request_options, **options)
22
+ object, options: request_options, **filter_keyword_args(options))
23
+ end
24
+
25
+ private
26
+
27
+ def filter_keyword_args(options)
28
+ method = @storage_json.method(:copy_object)
29
+ allowed = method.parameters.filter { |param| %i(key keyreq).include?(param[0]) }.map { |param| param[1] }.compact
30
+ options.filter { |key, _| allowed.include?(key) }
21
31
  end
22
32
  end
23
33
 
@@ -39,6 +39,7 @@ module Fog
39
39
  raise ArgumentError.new("object_name is required") unless object_name
40
40
 
41
41
  buf = Tempfile.new("fog-google-storage-temp")
42
+ buf.unlink
42
43
 
43
44
  # Two requests are necessary, first for metadata, then for content.
44
45
  # google-api-ruby-client doesn't allow fetching both metadata and content
@@ -53,18 +54,19 @@ module Fog
53
54
  :options => request_options
54
55
  }
55
56
 
56
- object = @storage_json.get_object(bucket_name, object_name, all_opts).to_h
57
+ object = @storage_json.get_object(bucket_name, object_name, **all_opts).to_h
57
58
  @storage_json.get_object(
58
59
  bucket_name,
59
60
  object_name,
60
- all_opts.merge(:download_dest => buf.path)
61
+ **all_opts.merge(:download_dest => buf)
61
62
  )
62
63
 
64
+ buf.seek(0)
65
+
63
66
  if block_given?
64
67
  yield buf.read, nil, nil
65
68
  else
66
69
  object[:body] = buf.read
67
- buf.unlink
68
70
  end
69
71
 
70
72
  object
@@ -11,10 +11,10 @@ module Fog
11
11
  prefix: nil, projection: nil)
12
12
  @storage_json.list_buckets(
13
13
  @project,
14
- :max_results => max_results,
15
- :page_token => page_token,
16
- :prefix => prefix,
17
- :projection => projection
14
+ max_results: max_results,
15
+ page_token: page_token,
16
+ prefix: prefix,
17
+ projection: projection
18
18
  )
19
19
  end
20
20
  end
@@ -31,7 +31,7 @@ module Fog
31
31
 
32
32
  @storage_json.list_objects(
33
33
  bucket,
34
- options.select { |k, _| allowed_opts.include? k }
34
+ **options.select { |k, _| allowed_opts.include? k }
35
35
  )
36
36
  end
37
37
  end
@@ -19,7 +19,7 @@ module Fog
19
19
  predefined_default_object_acl: nil,
20
20
  **options)
21
21
  bucket = ::Google::Apis::StorageV1::Bucket.new(
22
- options.merge(:name => bucket_name)
22
+ **options.merge(:name => bucket_name)
23
23
  )
24
24
 
25
25
  @storage_json.insert_bucket(
@@ -12,7 +12,7 @@ module Fog
12
12
  raise ArgumentError.new("bucket_name is required") unless bucket_name
13
13
  raise ArgumentError.new("acl is required") unless acl
14
14
 
15
- acl_update = ::Google::Apis::StorageV1::BucketAccessControl.new(acl)
15
+ acl_update = ::Google::Apis::StorageV1::BucketAccessControl.new(**acl)
16
16
  @storage_json.insert_bucket_access_control(bucket_name, acl_update)
17
17
  end
18
18
  end
@@ -51,7 +51,7 @@ module Fog
51
51
  data, options = normalize_data(data, options)
52
52
 
53
53
  object_config = ::Google::Apis::StorageV1::Object.new(
54
- options.merge(:name => object_name)
54
+ **options.merge(:name => object_name)
55
55
  )
56
56
 
57
57
  @storage_json.insert_object(
@@ -15,7 +15,7 @@ module Fog
15
15
  raise ArgumentError.new("object_name is required") unless object_name
16
16
  raise ArgumentError.new("acl is required") unless acl
17
17
 
18
- acl_object = ::Google::Apis::StorageV1::ObjectAccessControl.new(acl)
18
+ acl_object = ::Google::Apis::StorageV1::ObjectAccessControl.new(**acl)
19
19
 
20
20
  @storage_json.insert_object_access_control(
21
21
  bucket_name, object_name, acl_object
@@ -20,9 +20,10 @@ module Fog
20
20
  def host_path_query(params, expires)
21
21
  params[:headers]["Date"] = expires.to_i
22
22
  # implementation from CGI.escape, but without ' ' to '+' conversion
23
- params[:path] = params[:path].b.gsub(/([^a-zA-Z0-9_.\-~]+)/) do |m|
23
+ params[:path] = params[:path].b.gsub(/([^a-zA-Z0-9_.\-~]+)/) { |m|
24
24
  '%' + m.unpack('H2' * m.bytesize).join('%').upcase
25
- end
25
+ }.gsub("%2F", "/")
26
+
26
27
  query = []
27
28
 
28
29
  if params[:query]
@@ -109,7 +109,7 @@ module Fog
109
109
  options["Expires"] = expires if expires
110
110
  options.merge!(metadata)
111
111
 
112
- data = service.put_object(directory.key, key, body, options)
112
+ data = service.put_object(directory.key, key, body, **options)
113
113
  merge_attributes(data.headers.reject { |key, _value| ["Content-Length", "Content-Type"].include?(key) })
114
114
  self.content_length = Fog::Storage.get_body_size(body)
115
115
  self.content_type ||= Fog::Storage.get_content_type(body)
@@ -68,7 +68,7 @@ class TestMetricDescriptors < FogIntegrationTest
68
68
  :labels => [label]
69
69
  }
70
70
 
71
- created = @client.create_metric_descriptor(options)
71
+ created = @client.create_metric_descriptor(**options)
72
72
 
73
73
  # Check created metric descriptor
74
74
  assert_equal(_full_name(metric_type), created.name)
@@ -113,6 +113,26 @@ class TestStorageRequests < StorageShared
113
113
  assert_kind_of(Net::HTTPOK, response)
114
114
  end
115
115
 
116
+ def test_copy_object_with_request_options
117
+ assert_raises(Google::Apis::AuthorizationError) do
118
+ target_object_name = new_object_name
119
+
120
+ @client.copy_object(some_bucket_name, some_object_name,
121
+ some_bucket_name, target_object_name, authorization: false)
122
+ end
123
+ end
124
+
125
+ def test_copy_object_with_object_property
126
+ target_object_name = new_object_name
127
+
128
+ @client.copy_object(some_bucket_name, some_object_name,
129
+ some_bucket_name, target_object_name, content_type: 'text/plain')
130
+
131
+ object = @client.get_object(some_bucket_name, target_object_name)
132
+
133
+ assert_equal("text/plain", object[:content_type])
134
+ end
135
+
116
136
  def test_list_objects
117
137
  expected_object = some_object_name
118
138
 
@@ -41,4 +41,12 @@ class UnitTestJsonRequests < MiniTest::Test
41
41
  assert_match(/just%20some%20file\.json/, url,
42
42
  "space should be escaped with '%20'")
43
43
  end
44
+
45
+ def test_unescaped_slashes_in_url
46
+ url = @client.get_object_https_url("bucket",
47
+ "a/b/c.ext",
48
+ Time.now + 2 * 60)
49
+ assert_match(/a\/b\/c/, url,
50
+ "slashes should not be escaped with '%2F'")
51
+ end
44
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fog-google
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nat Welch
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-04-28 00:00:00.000000000 Z
12
+ date: 2021-06-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fog-core
@@ -782,7 +782,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
782
782
  - !ruby/object:Gem::Version
783
783
  version: '0'
784
784
  requirements: []
785
- rubygems_version: 3.2.15
785
+ rubygems_version: 3.0.3
786
786
  signing_key:
787
787
  specification_version: 4
788
788
  summary: Module for the 'fog' gem to support Google.