oci 2.2.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -1
  3. data/lib/oci.rb +1 -0
  4. data/lib/oci/audit/audit_client_composite_operations.rb +16 -6
  5. data/lib/oci/container_engine/container_engine.rb +47 -0
  6. data/lib/oci/container_engine/container_engine_client.rb +1276 -0
  7. data/lib/oci/container_engine/container_engine_client_composite_operations.rb +320 -0
  8. data/lib/oci/container_engine/models/add_on_options.rb +164 -0
  9. data/lib/oci/container_engine/models/cluster.rb +296 -0
  10. data/lib/oci/container_engine/models/cluster_create_options.rb +178 -0
  11. data/lib/oci/container_engine/models/cluster_endpoints.rb +146 -0
  12. data/lib/oci/container_engine/models/cluster_lifecycle_state.rb +14 -0
  13. data/lib/oci/container_engine/models/cluster_metadata.rb +262 -0
  14. data/lib/oci/container_engine/models/cluster_options.rb +150 -0
  15. data/lib/oci/container_engine/models/cluster_summary.rb +296 -0
  16. data/lib/oci/container_engine/models/create_cluster_details.rb +198 -0
  17. data/lib/oci/container_engine/models/create_cluster_kubeconfig_content_details.rb +162 -0
  18. data/lib/oci/container_engine/models/create_node_pool_details.rb +272 -0
  19. data/lib/oci/container_engine/models/key_value.rb +156 -0
  20. data/lib/oci/container_engine/models/kubernetes_network_config.rb +164 -0
  21. data/lib/oci/container_engine/models/node.rb +281 -0
  22. data/lib/oci/container_engine/models/node_error.rb +180 -0
  23. data/lib/oci/container_engine/models/node_pool.rb +306 -0
  24. data/lib/oci/container_engine/models/node_pool_options.rb +170 -0
  25. data/lib/oci/container_engine/models/node_pool_summary.rb +296 -0
  26. data/lib/oci/container_engine/models/sort_order.rb +10 -0
  27. data/lib/oci/container_engine/models/update_cluster_details.rb +160 -0
  28. data/lib/oci/container_engine/models/update_node_pool_details.rb +202 -0
  29. data/lib/oci/container_engine/models/work_request.rb +288 -0
  30. data/lib/oci/container_engine/models/work_request_error.rb +167 -0
  31. data/lib/oci/container_engine/models/work_request_log_entry.rb +156 -0
  32. data/lib/oci/container_engine/models/work_request_operation_type.rb +15 -0
  33. data/lib/oci/container_engine/models/work_request_resource.rb +214 -0
  34. data/lib/oci/container_engine/models/work_request_status.rb +14 -0
  35. data/lib/oci/container_engine/models/work_request_summary.rb +288 -0
  36. data/lib/oci/container_engine/util.rb +46 -0
  37. data/lib/oci/errors.rb +21 -2
  38. data/lib/oci/load_balancer/load_balancer_client_composite_operations.rb +336 -133
  39. data/lib/oci/load_balancer/util.rb +19 -32
  40. data/lib/oci/regions.rb +2 -1
  41. data/lib/oci/version.rb +1 -1
  42. data/lib/oci/waiter.rb +47 -0
  43. metadata +34 -2
@@ -13,43 +13,30 @@ module OCI
13
13
  # @param [Integer] max_wait_seconds The maximum total time to wait, in seconds.
14
14
  # @param [Boolean] raise_error_on_failure If true, then a WorkRequestFailedError will be
15
15
  # raised if the work request is in a failed state.
16
- # @return [WorkRequest] The final work request
16
+ # @return [OCI::Response] A {OCI::Response} object containing the completed
17
+ # {OCI::LoadBalancer::Models::WorkRequest}
17
18
  def self.wait_on_work_request(client,
18
19
  work_request_id,
19
20
  max_interval_seconds: 30,
20
21
  max_wait_seconds: 1200,
21
22
  raise_error_on_failure: true)
22
- raise 'Work request ID not specified.' unless work_request_id
23
-
24
- interval_seconds = 1
25
- start_time = Time.now
26
-
27
- loop do
28
- response = client.get_work_request(work_request_id)
29
- lifecycle_state = response.data.lifecycle_state
30
-
31
- return response.data if lifecycle_state == OCI::LoadBalancer::Models::WorkRequest::LIFECYCLE_STATE_SUCCEEDED
32
-
33
- if response.data.lifecycle_state == OCI::LoadBalancer::Models::WorkRequest::LIFECYCLE_STATE_FAILED
34
- raise OCI::Errors::WorkRequestFailedError, response.data if raise_error_on_failure
35
- return response.data
36
- end
37
-
38
- elapsed_seconds = (Time.now - start_time).to_i
39
-
40
- if elapsed_seconds + interval_seconds > max_wait_seconds
41
- raise OCI::Errors::MaximumWaitTimeExceededError, 'Maximum wait time has been exceeded.' \
42
- unless max_wait_seconds > elapsed_seconds
43
-
44
- # Make one last request right at the maximum wait time.
45
- interval_seconds = max_wait_seconds - elapsed_seconds
46
- end
47
-
48
- sleep(interval_seconds)
49
-
50
- interval_seconds *= 2
51
- interval_seconds = max_interval_seconds if interval_seconds > max_interval_seconds
52
- end
23
+ OCI::Waiter::WorkRequest.wait_for_state(
24
+ client,
25
+ work_request_id,
26
+ lambda do |work_request|
27
+ work_request.lifecycle_state == OCI::LoadBalancer::Models::WorkRequest::LIFECYCLE_STATE_SUCCEEDED
28
+ end,
29
+ lambda do |work_request|
30
+ is_failed_state = work_request.lifecycle_state == \
31
+ OCI::LoadBalancer::Models::WorkRequest::LIFECYCLE_STATE_FAILED
32
+ raise OCI::Errors::WorkRequestFailedError.new(work_request, work_request.lifecycle_state) \
33
+ if raise_error_on_failure && is_failed_state
34
+
35
+ is_failed_state
36
+ end,
37
+ max_interval_seconds: max_interval_seconds,
38
+ max_wait_seconds: max_wait_seconds
39
+ )
53
40
  end
54
41
  end
55
42
  end
@@ -29,7 +29,8 @@ module OCI
29
29
  Auth: 'auth',
30
30
  DnsClient: 'dns',
31
31
  FileStorageClient: 'filestorage',
32
- EmailClient: 'email'
32
+ EmailClient: 'email',
33
+ ContainerEngineClient: 'containerengine'
33
34
  }.freeze
34
35
 
35
36
  # Returns an endpoint for the given region and service.
@@ -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.2.1'.freeze
4
+ VERSION = '2.3.0'.freeze
5
5
  end
@@ -15,6 +15,53 @@ module OCI
15
15
  # waiter to fail with this exception.
16
16
  class WaiterFailedError < RuntimeError; end
17
17
  end
18
+
19
+ # Work request waiter utility method.
20
+ module WorkRequest
21
+ # Wait until the work request succeeds or fails, or max_wait_seconds is reached.
22
+ # The work request will be polled at an increasing rate, with a maximum of
23
+ # max_interval_seconds between requests.
24
+ #
25
+ # @param [Client] client A client that is able to call get_work_request()
26
+ # @param [String] work_request_id, the work request identifier
27
+ # @param [Proc] eval_success_proc the proc to evaluate if a wait condition has succeeded.
28
+ # @param [Proc] eval_error_proc the proc to evaluate if an error based terminal condition has occurred.
29
+ # @param [Integer] max_interval_seconds The maximum interval between queries, in seconds.
30
+ # @param [Integer] max_wait_seconds The maximum total time to wait, in seconds.
31
+ # @return [OCI::Response] A {OCI::Response} object containing the completed work request
32
+ def self.wait_for_state(client,
33
+ work_request_id,
34
+ eval_success_proc = nil,
35
+ eval_error_proc = nil,
36
+ max_interval_seconds: 30,
37
+ max_wait_seconds: 1200)
38
+ raise 'Work request ID not specified.' unless work_request_id
39
+ raise 'Evaluation proc for determining success not specified' unless eval_success_proc
40
+ interval_seconds = 1
41
+ start_time = Time.now
42
+
43
+ loop do
44
+ response = client.get_work_request(work_request_id)
45
+ return response if eval_success_proc && eval_success_proc.call(response.data)
46
+ return response if eval_error_proc && eval_error_proc.call(response.data)
47
+
48
+ elapsed_seconds = (Time.now - start_time).to_i
49
+
50
+ if elapsed_seconds + interval_seconds > max_wait_seconds
51
+ raise OCI::Errors::MaximumWaitTimeExceededError, 'Maximum wait time has been exceeded.' \
52
+ unless max_wait_seconds > elapsed_seconds
53
+
54
+ # Make one last request right at the maximum wait time.
55
+ interval_seconds = max_wait_seconds - elapsed_seconds
56
+ end
57
+
58
+ sleep(interval_seconds)
59
+
60
+ interval_seconds *= 2
61
+ interval_seconds = max_interval_seconds if interval_seconds > max_interval_seconds
62
+ end
63
+ end
64
+ end
18
65
  end
19
66
 
20
67
  # Adds to the Response class in lib/oci/response.rb to define wait behavior
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.2.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Oracle
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-06-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json
@@ -176,6 +176,38 @@ files:
176
176
  - "./lib/oci/base_signer.rb"
177
177
  - "./lib/oci/config.rb"
178
178
  - "./lib/oci/config_file_loader.rb"
179
+ - "./lib/oci/container_engine/container_engine.rb"
180
+ - "./lib/oci/container_engine/container_engine_client.rb"
181
+ - "./lib/oci/container_engine/container_engine_client_composite_operations.rb"
182
+ - "./lib/oci/container_engine/models/add_on_options.rb"
183
+ - "./lib/oci/container_engine/models/cluster.rb"
184
+ - "./lib/oci/container_engine/models/cluster_create_options.rb"
185
+ - "./lib/oci/container_engine/models/cluster_endpoints.rb"
186
+ - "./lib/oci/container_engine/models/cluster_lifecycle_state.rb"
187
+ - "./lib/oci/container_engine/models/cluster_metadata.rb"
188
+ - "./lib/oci/container_engine/models/cluster_options.rb"
189
+ - "./lib/oci/container_engine/models/cluster_summary.rb"
190
+ - "./lib/oci/container_engine/models/create_cluster_details.rb"
191
+ - "./lib/oci/container_engine/models/create_cluster_kubeconfig_content_details.rb"
192
+ - "./lib/oci/container_engine/models/create_node_pool_details.rb"
193
+ - "./lib/oci/container_engine/models/key_value.rb"
194
+ - "./lib/oci/container_engine/models/kubernetes_network_config.rb"
195
+ - "./lib/oci/container_engine/models/node.rb"
196
+ - "./lib/oci/container_engine/models/node_error.rb"
197
+ - "./lib/oci/container_engine/models/node_pool.rb"
198
+ - "./lib/oci/container_engine/models/node_pool_options.rb"
199
+ - "./lib/oci/container_engine/models/node_pool_summary.rb"
200
+ - "./lib/oci/container_engine/models/sort_order.rb"
201
+ - "./lib/oci/container_engine/models/update_cluster_details.rb"
202
+ - "./lib/oci/container_engine/models/update_node_pool_details.rb"
203
+ - "./lib/oci/container_engine/models/work_request.rb"
204
+ - "./lib/oci/container_engine/models/work_request_error.rb"
205
+ - "./lib/oci/container_engine/models/work_request_log_entry.rb"
206
+ - "./lib/oci/container_engine/models/work_request_operation_type.rb"
207
+ - "./lib/oci/container_engine/models/work_request_resource.rb"
208
+ - "./lib/oci/container_engine/models/work_request_status.rb"
209
+ - "./lib/oci/container_engine/models/work_request_summary.rb"
210
+ - "./lib/oci/container_engine/util.rb"
179
211
  - "./lib/oci/core/blockstorage_client.rb"
180
212
  - "./lib/oci/core/blockstorage_client_composite_operations.rb"
181
213
  - "./lib/oci/core/compute_client.rb"