oci 2.4.1 → 2.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7de46f20f8218b5eae43314eea56f26140d3bb7cde0665cbb3d02345f2299da2
4
- data.tar.gz: 711d97bdbf04a8238699ab0ba8f7cbe9a31eff0c88eec9c8b1ef339bd1d430cb
3
+ metadata.gz: c540db2d59f168706fd0419eede5da8c1d45dc9150b77da8d8325ad53fb47495
4
+ data.tar.gz: 6c44cf54a1dada0fe102b0e4fc0262f7cf5a3cb51463dfcc4106725017ae23db
5
5
  SHA512:
6
- metadata.gz: 443fb8aeecc3eb2aa198dc5ed19e4f70af29f7d7d262be1228013b11e2e87c5fe349c5ce36fc14ada7778e90218134d91ae0386e441e4d0bad3a20880107cbdd
7
- data.tar.gz: fe8bc7d18a5ba2b50ee0efc0f8fe57edf4405bbc1e0c7ef033a9694f973736d0c50571803d4c4310dbe33892e75044ecd7cf76827648a17968ace6789fedf067
6
+ metadata.gz: 5c4f4ee4b3eb2754e946d66f3154b18e0b40a0690a1002dfe5393c73ed6da1f56fded5edca4db906a0636392da52352211638cec1d8cb9150b0bc1e2d9565540
7
+ data.tar.gz: f19c66c15aea0a4b765dba3e9ef24cbbc93a4cd41aa55cfe591bba3f82acf9184a35077599dfb9e58da932d387ad06cbdfac77228c42716609ad2d5d9e6b7d7e
@@ -1,6 +1,6 @@
1
1
  Copyright (c) 2016, 2018, Oracle and/or its affiliates.  All rights reserved.
2
2
 
3
- This software is dual-licensed to you under the Universal Permissive License (UPL) and Apache License 2.0.  See below for license terms.  You may choose either license, or both.
3
+ This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 or Apache License 2.0. See below for license terms. You may choose either license.
4
4
   ____________________________
5
5
  The Universal Permissive License (UPL), Version 1.0
6
6
  Copyright (c) 2016, 2018, Oracle and/or its affiliates.  All rights reserved.
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # Oracle Cloud Infrastructure Ruby SDK
2
- **Version 2.4.1**
2
+ **Version 2.4.2**
3
3
 
4
4
  This topic describes how to install, configure, and use the Oracle Cloud Infrastructure Ruby SDK.
5
5
 
@@ -158,6 +158,8 @@ To use any of the APIs, you must supply a {OCI::Config Config} object. You can c
158
158
  * Required credentials and settings: See [SDK and Tool Configuration](https://docs.us-phoenix-1.oraclecloud.com/Content/API/Concepts/sdkconfig.htm) in the User Guide.
159
159
  * Optional SDK-specific settings: See the {OCI::Config Config} object for the full list of config options.
160
160
 
161
+ Note that the Ruby SDK does not support parsing custom attributes in the configuration file.
162
+
161
163
  ## Forward Compatibility
162
164
 
163
165
  Some response fields are enum-typed. In the future, individual services may return values not covered by existing enums for that field. To address this possibility, every enum-type response field has an additional value named "UNKNOWN_ENUM_VALUE". If a service returns a value that is not recognized by your version of the SDK, then the response field will be set to this value. Please ensure that your code handles the "UNKNOWN_ENUM_VALUE" case if you have conditional logic based on an enum-typed field.
@@ -18,6 +18,21 @@ module OCI
18
18
  # services. This client also handles request serialization and response deserialization
19
19
  class ApiClient
20
20
  class << self
21
+ # Builds the client info string to be sent with each request.
22
+ def build_request_id
23
+ SecureRandom.uuid.delete!('-').upcase
24
+ end
25
+
26
+ # Builds the client info string to be sent with each request.
27
+ def build_user_info
28
+ "Oracle-RubySDK/#{VERSION}"
29
+ end
30
+
31
+ # Build the user agent string to be sent with each request.
32
+ def build_user_agent
33
+ "#{build_user_info}#{OCI.sdk_name} (ruby #{RUBY_VERSION}; #{RUBY_PLATFORM})"
34
+ end
35
+
21
36
  private
22
37
 
23
38
  def get_rfc339_formatted_date_string_with_z_offset(date_time)
@@ -158,24 +173,6 @@ module OCI
158
173
  end
159
174
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
160
175
 
161
- # Builds the client info string to be sent with each request.
162
- def build_request_id
163
- SecureRandom.uuid.delete!('-').upcase
164
- end
165
-
166
- # Builds the client info string to be sent with each request.
167
- def build_user_info
168
- "Oracle-RubySDK/#{VERSION}"
169
- end
170
-
171
- # Build the user agent string to be send with each request.
172
- def build_user_agent
173
- agent = "#{build_user_info}#{OCI.sdk_name} (ruby #{RUBY_VERSION}; #{RUBY_PLATFORM})"
174
- agent = "#{agent} #{config.additional_user_agent}" if config.additional_user_agent
175
-
176
- agent
177
- end
178
-
179
176
  def self.build_collection_params(collection, collection_format)
180
177
  if collection_format.nil? || !VALID_COLLECTION_FORMATS.key?(collection_format.to_sym)
181
178
  raise "Invalid collection_format: #{collection_format}. Must be one of: #{VALID_COLLECTION_FORMATS.keys}"
@@ -265,6 +262,12 @@ module OCI
265
262
  end
266
263
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
267
264
 
265
+ # Build the user agent string that also includes the additional_user_agent to be sent with each request.
266
+ def build_user_agent
267
+ agent = self.class.build_user_agent
268
+ "#{agent} #{config.additional_user_agent}" unless config.nil? || config.additional_user_agent.nil?
269
+ end
270
+
268
271
  private
269
272
 
270
273
  # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
@@ -311,8 +314,8 @@ module OCI
311
314
  request[key.to_s] = value
312
315
  end
313
316
 
314
- request['opc-client-info'] = build_user_info
315
- request['opc-request-id'] ||= build_request_id
317
+ request['opc-client-info'] = self.class.build_user_info
318
+ request['opc-request-id'] ||= self.class.build_request_id
316
319
  request['User-Agent'] = build_user_agent
317
320
 
318
321
  http = get_http_object(uri.hostname, uri.port)
@@ -566,6 +569,7 @@ module OCI
566
569
 
567
570
  OCI::Internal::Util.convert_to_type return_type, data
568
571
  end
572
+
569
573
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
570
574
 
571
575
  def build_request_url(path, endpoint)
@@ -101,6 +101,11 @@ module OCI
101
101
  signer.sign(:post, @federation_endpoint, header_params, request.body)
102
102
  header_params.each { |key, value| request[key.to_s] = value }
103
103
 
104
+ # Additional header info to aid in debugging issues
105
+ request['opc-client-info'] = OCI::ApiClient.build_user_info
106
+ request['opc-request-id'] ||= OCI::ApiClient.build_request_id
107
+ request['User-Agent'] = OCI::ApiClient.build_user_agent
108
+
104
109
  raw_body = nil
105
110
  @federation_http_client.start do
106
111
  @federation_http_client.request(request) do |response|
@@ -96,6 +96,18 @@ module OCI
96
96
  # @return [String]
97
97
  attr_accessor :object_lifecycle_policy_etag
98
98
 
99
+ # The approximate number of objects in the bucket. Count statistics are reported periodically. You will see a
100
+ # lag between what is displayed and the actual object count.
101
+ #
102
+ # @return [Integer]
103
+ attr_accessor :approximate_count
104
+
105
+ # The approximate total size of all objects in the bucket. Size statistics are reported periodically. You will
106
+ # see a lag between what is displayed and the actual size of the bucket.
107
+ #
108
+ # @return [Integer]
109
+ attr_accessor :approximate_size
110
+
99
111
  # Attribute mapping from ruby-style variable name to JSON key.
100
112
  def self.attribute_map
101
113
  {
@@ -112,7 +124,9 @@ module OCI
112
124
  'freeform_tags': :'freeformTags',
113
125
  'defined_tags': :'definedTags',
114
126
  'kms_key_id': :'kmsKeyId',
115
- 'object_lifecycle_policy_etag': :'objectLifecyclePolicyEtag'
127
+ 'object_lifecycle_policy_etag': :'objectLifecyclePolicyEtag',
128
+ 'approximate_count': :'approximateCount',
129
+ 'approximate_size': :'approximateSize'
116
130
  # rubocop:enable Style/SymbolLiteral
117
131
  }
118
132
  end
@@ -133,7 +147,9 @@ module OCI
133
147
  'freeform_tags': :'Hash<String, String>',
134
148
  'defined_tags': :'Hash<String, Hash<String, Object>>',
135
149
  'kms_key_id': :'String',
136
- 'object_lifecycle_policy_etag': :'String'
150
+ 'object_lifecycle_policy_etag': :'String',
151
+ 'approximate_count': :'Integer',
152
+ 'approximate_size': :'Integer'
137
153
  # rubocop:enable Style/SymbolLiteral
138
154
  }
139
155
  end
@@ -157,6 +173,8 @@ module OCI
157
173
  # @option attributes [Hash<String, Hash<String, Object>>] :defined_tags The value to assign to the {#defined_tags} property
158
174
  # @option attributes [String] :kms_key_id The value to assign to the {#kms_key_id} property
159
175
  # @option attributes [String] :object_lifecycle_policy_etag The value to assign to the {#object_lifecycle_policy_etag} property
176
+ # @option attributes [Integer] :approximate_count The value to assign to the {#approximate_count} property
177
+ # @option attributes [Integer] :approximate_size The value to assign to the {#approximate_size} property
160
178
  def initialize(attributes = {})
161
179
  return unless attributes.is_a?(Hash)
162
180
 
@@ -224,6 +242,18 @@ module OCI
224
242
  raise 'You cannot provide both :objectLifecyclePolicyEtag and :object_lifecycle_policy_etag' if attributes.key?(:'objectLifecyclePolicyEtag') && attributes.key?(:'object_lifecycle_policy_etag')
225
243
 
226
244
  self.object_lifecycle_policy_etag = attributes[:'object_lifecycle_policy_etag'] if attributes[:'object_lifecycle_policy_etag']
245
+
246
+ self.approximate_count = attributes[:'approximateCount'] if attributes[:'approximateCount']
247
+
248
+ raise 'You cannot provide both :approximateCount and :approximate_count' if attributes.key?(:'approximateCount') && attributes.key?(:'approximate_count')
249
+
250
+ self.approximate_count = attributes[:'approximate_count'] if attributes[:'approximate_count']
251
+
252
+ self.approximate_size = attributes[:'approximateSize'] if attributes[:'approximateSize']
253
+
254
+ raise 'You cannot provide both :approximateSize and :approximate_size' if attributes.key?(:'approximateSize') && attributes.key?(:'approximate_size')
255
+
256
+ self.approximate_size = attributes[:'approximate_size'] if attributes[:'approximate_size']
227
257
  end
228
258
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
229
259
  # rubocop:enable Metrics/LineLength, Metrics/MethodLength, Layout/EmptyLines, Style/SymbolLiteral
@@ -279,7 +309,9 @@ module OCI
279
309
  freeform_tags == other.freeform_tags &&
280
310
  defined_tags == other.defined_tags &&
281
311
  kms_key_id == other.kms_key_id &&
282
- object_lifecycle_policy_etag == other.object_lifecycle_policy_etag
312
+ object_lifecycle_policy_etag == other.object_lifecycle_policy_etag &&
313
+ approximate_count == other.approximate_count &&
314
+ approximate_size == other.approximate_size
283
315
  end
284
316
  # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Metrics/LineLength, Layout/EmptyLines
285
317
 
@@ -295,7 +327,7 @@ module OCI
295
327
  # Calculates hash code according to all attributes.
296
328
  # @return [Fixnum] Hash code
297
329
  def hash
298
- [namespace, name, compartment_id, metadata, created_by, time_created, etag, public_access_type, storage_tier, freeform_tags, defined_tags, kms_key_id, object_lifecycle_policy_etag].hash
330
+ [namespace, name, compartment_id, metadata, created_by, time_created, etag, public_access_type, storage_tier, freeform_tags, defined_tags, kms_key_id, object_lifecycle_policy_etag, approximate_count, approximate_size].hash
299
331
  end
300
332
  # rubocop:enable Metrics/AbcSize, Metrics/LineLength, Layout/EmptyLines
301
333
 
@@ -810,12 +810,27 @@ module OCI
810
810
  # For creating and committing a multipart upload, this is the entity tag of the target object. For uploading a part, this is the entity tag of the target part.
811
811
  #
812
812
  # @option opts [String] :opc_client_request_id The client request ID for tracing.
813
+ # @option opts [Array<String>] :fields Bucket summary includes the 'namespace', 'name', 'compartmentId', 'createdBy', 'timeCreated',
814
+ # and 'etag' fields. This parameter can also include 'approximateCount' (Approximate number of objects) and 'approximateSize'
815
+ # (total approximate size in bytes of all objects). For example 'approximateCount,approximateSize'
816
+ #
817
+ # Allowed values are: approximateCount, approximateSize
813
818
  # @return [Response] A Response object with data of type {OCI::ObjectStorage::Models::Bucket Bucket}
814
819
  def get_bucket(namespace_name, bucket_name, opts = {})
815
820
  logger.debug 'Calling operation ObjectStorageClient#get_bucket.' if logger
816
821
 
817
822
  raise "Missing the required parameter 'namespace_name' when calling get_bucket." if namespace_name.nil?
818
823
  raise "Missing the required parameter 'bucket_name' when calling get_bucket." if bucket_name.nil?
824
+
825
+
826
+ fields_allowable_values = %w[approximateCount approximateSize]
827
+ if opts[:fields] && !opts[:fields].empty?
828
+ opts[:fields].each do |val_to_check|
829
+ unless fields_allowable_values.include?(val_to_check)
830
+ raise 'Invalid value for "fields", must be one of approximateCount, approximateSize.'
831
+ end
832
+ end
833
+ end
819
834
  raise "Parameter value for 'namespace_name' must not be blank" if OCI::Internal::Util.blank_string?(namespace_name)
820
835
  raise "Parameter value for 'bucket_name' must not be blank" if OCI::Internal::Util.blank_string?(bucket_name)
821
836
 
@@ -825,6 +840,7 @@ module OCI
825
840
  # rubocop:disable Style/NegatedIf
826
841
  # Query Params
827
842
  query_params = {}
843
+ query_params[:fields] = OCI::ApiClient.build_collection_params(opts[:fields], :csv) if opts[:fields] && !opts[:fields].empty?
828
844
 
829
845
  # Header Params
830
846
  header_params = {}
@@ -17,6 +17,21 @@ module OCI
17
17
  'lhr': REGION_UK_LONDON_1
18
18
  }.freeze
19
19
 
20
+ # --- Start of region realm mapping ---
21
+ REGION_REALM_MAPPING = {
22
+ 'us-phoenix-1': 'oc1'.freeze,
23
+ 'us-ashburn-1': 'oc1'.freeze,
24
+ 'eu-frankfurt-1': 'oc1'.freeze,
25
+ 'uk-london-1': 'oc1'.freeze
26
+ }.freeze
27
+ # --- end of region realm mapping ---
28
+
29
+ # --- Start of realm domain mapping ---
30
+ REALM_DOMAIN_MAPPING = {
31
+ 'oc1': 'oraclecloud.com'.freeze
32
+ }.freeze
33
+ # --- end of realm domain mapping ---
34
+
20
35
  # --- Start of service prefixes ---
21
36
  SERVICE_ENDPOINT_PREFIX_MAPPING = {
22
37
  BlockstorageClient: 'iaas',
@@ -51,6 +66,24 @@ module OCI
51
66
  format_endpoint(prefix, region)
52
67
  end
53
68
 
69
+ # Returns an endpoint for the given region and service endpoint template.
70
+ #
71
+ # @param [String] region A region used to determine the service endpoint. This will usually
72
+ # correspond to a value in {OCI::Regions::REGION_ENUM}, but may be an arbitrary string.
73
+ # @param [String] endpoint_template A service endpoint template defined by service team in spec.
74
+ #
75
+ # @return [String] A fully qualified endpoint
76
+ def self.get_service_endpoint_for_template(region, endpoint_template)
77
+ endpoint = endpoint_template.clone
78
+
79
+ # replace the token inside service_endpoint_template if exists
80
+ [
81
+ ['{region}', region],
82
+ ['{secondLevelDomain}', get_second_level_domain(region).to_s]
83
+ ].each { |k, v| endpoint.sub!(k, v) }
84
+ endpoint
85
+ end
86
+
54
87
  # @return [Boolean] Returns true if the given string corresponds to a known region, as defined in
55
88
  # {OCI::Regions::REGION_ENUM}.
56
89
  def self.valid_region?(region)
@@ -58,7 +91,32 @@ module OCI
58
91
  end
59
92
 
60
93
  def self.format_endpoint(prefix, region)
61
- "https://#{prefix}.#{region}.oraclecloud.com"
94
+ second_level_domain = get_second_level_domain(region)
95
+ "https://#{prefix}.#{region}.#{second_level_domain}"
96
+ end
97
+
98
+ # Returns a second level domain for the given region.
99
+ #
100
+ # @param [String] region A region used to get the second level domain. This will usually
101
+ # correspond to a value in {OCI::Regions::REGION_ENUM}, but may be an arbitrary string.
102
+ #
103
+ # @return [String] A second level domain for given region, default to oraclecloud.com
104
+ def self.get_second_level_domain(region)
105
+ symbolised_region = region.to_sym
106
+
107
+ # get realm from region, default to oc1
108
+ realm = if REGION_REALM_MAPPING.key?(symbolised_region)
109
+ REGION_REALM_MAPPING[symbolised_region]
110
+ else
111
+ 'oc1'
112
+ end
113
+
114
+ # return second level domain if exists
115
+ symbolised_realm = realm.to_sym
116
+ return REALM_DOMAIN_MAPPING[symbolised_realm] if REALM_DOMAIN_MAPPING.key?(symbolised_realm)
117
+
118
+ # otherwise return oc1 domain by default
119
+ REALM_DOMAIN_MAPPING[:oc1]
62
120
  end
63
121
  end
64
122
  end
@@ -1,5 +1,5 @@
1
1
  # Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
2
2
 
3
3
  module OCI
4
- VERSION = '2.4.1'.freeze
4
+ VERSION = '2.4.2'.freeze
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oci
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.1
4
+ version: 2.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oracle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-11-14 00:00:00.000000000 Z
11
+ date: 2018-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json