oci 2.5.10 → 2.5.11

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 (225) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -1
  3. data/lib/oci.rb +3 -0
  4. data/lib/oci/budget/budget.rb +1 -0
  5. data/lib/oci/budget/budget_client.rb +21 -1
  6. data/lib/oci/budget/models/budget.rb +52 -2
  7. data/lib/oci/budget/models/budget_summary.rb +52 -2
  8. data/lib/oci/budget/models/create_budget_details.rb +55 -2
  9. data/lib/oci/budget/models/target_type.rb +10 -0
  10. data/lib/oci/core/blockstorage_client.rb +18 -6
  11. data/lib/oci/core/compute_client.rb +75 -0
  12. data/lib/oci/core/compute_management_client.rb +4 -1
  13. data/lib/oci/core/core.rb +12 -0
  14. data/lib/oci/core/models/add_security_rule_details.rb +2 -2
  15. data/lib/oci/core/models/boot_volume_backup.rb +19 -1
  16. data/lib/oci/core/models/change_boot_volume_backup_compartment_details.rb +2 -2
  17. data/lib/oci/core/models/change_boot_volume_compartment_details.rb +2 -2
  18. data/lib/oci/core/models/change_cpe_compartment_details.rb +155 -0
  19. data/lib/oci/core/models/change_cross_connect_compartment_details.rb +155 -0
  20. data/lib/oci/core/models/change_cross_connect_group_compartment_details.rb +155 -0
  21. data/lib/oci/core/models/change_instance_compartment_details.rb +154 -0
  22. data/lib/oci/core/models/change_ip_sec_connection_compartment_details.rb +155 -0
  23. data/lib/oci/core/models/change_remote_peering_connection_compartment_details.rb +155 -0
  24. data/lib/oci/core/models/change_virtual_circuit_compartment_details.rb +155 -0
  25. data/lib/oci/core/models/change_volume_backup_compartment_details.rb +2 -2
  26. data/lib/oci/core/models/change_volume_compartment_details.rb +2 -2
  27. data/lib/oci/core/models/change_volume_group_backup_compartment_details.rb +2 -2
  28. data/lib/oci/core/models/change_volume_group_compartment_details.rb +2 -2
  29. data/lib/oci/core/models/copy_volume_backup_details.rb +27 -4
  30. data/lib/oci/core/models/create_cross_connect_details.rb +37 -1
  31. data/lib/oci/core/models/create_cross_connect_group_details.rb +40 -4
  32. data/lib/oci/core/models/create_instance_configuration_base.rb +250 -0
  33. data/lib/oci/core/models/create_instance_configuration_details.rb +15 -57
  34. data/lib/oci/core/models/create_instance_configuration_from_instance_details.rb +179 -0
  35. data/lib/oci/core/models/create_ipv6_details.rb +249 -0
  36. data/lib/oci/core/models/create_remote_peering_connection_details.rb +40 -4
  37. data/lib/oci/core/models/create_service_gateway_details.rb +23 -1
  38. data/lib/oci/core/models/create_subnet_details.rb +24 -1
  39. data/lib/oci/core/models/create_vcn_details.rb +56 -4
  40. data/lib/oci/core/models/create_virtual_circuit_details.rb +38 -2
  41. data/lib/oci/core/models/cross_connect.rb +37 -1
  42. data/lib/oci/core/models/cross_connect_group.rb +37 -1
  43. data/lib/oci/core/models/cross_connect_mapping.rb +50 -1
  44. data/lib/oci/core/models/egress_security_rule.rb +10 -7
  45. data/lib/oci/core/models/ingress_security_rule.rb +10 -7
  46. data/lib/oci/core/models/instance.rb +1 -0
  47. data/lib/oci/core/models/ipv6.rb +375 -0
  48. data/lib/oci/core/models/private_ip.rb +1 -0
  49. data/lib/oci/core/models/remote_peering_connection.rb +37 -1
  50. data/lib/oci/core/models/route_rule.rb +4 -1
  51. data/lib/oci/core/models/security_rule.rb +2 -2
  52. data/lib/oci/core/models/service_gateway.rb +18 -1
  53. data/lib/oci/core/models/subnet.rb +56 -1
  54. data/lib/oci/core/models/update_cross_connect_details.rb +37 -1
  55. data/lib/oci/core/models/update_cross_connect_group_details.rb +40 -4
  56. data/lib/oci/core/models/update_ipv6_details.rb +229 -0
  57. data/lib/oci/core/models/update_remote_peering_connection_details.rb +40 -4
  58. data/lib/oci/core/models/update_security_rule_details.rb +2 -2
  59. data/lib/oci/core/models/update_service_gateway_details.rb +18 -1
  60. data/lib/oci/core/models/update_virtual_circuit_details.rb +37 -1
  61. data/lib/oci/core/models/vcn.rb +42 -1
  62. data/lib/oci/core/models/virtual_circuit.rb +37 -1
  63. data/lib/oci/core/models/volume_backup.rb +19 -1
  64. data/lib/oci/core/virtual_network_client.rb +744 -10
  65. data/lib/oci/core/virtual_network_client_composite_operations.rb +119 -0
  66. data/lib/oci/database/database.rb +3 -0
  67. data/lib/oci/database/database_client.rb +320 -36
  68. data/lib/oci/database/models/autonomous_data_warehouse.rb +1 -0
  69. data/lib/oci/database/models/autonomous_data_warehouse_console_token_details.rb +164 -0
  70. data/lib/oci/database/models/autonomous_data_warehouse_summary.rb +1 -0
  71. data/lib/oci/database/models/autonomous_database.rb +5 -3
  72. data/lib/oci/database/models/autonomous_database_connection_urls.rb +1 -1
  73. data/lib/oci/database/models/autonomous_database_console_token_details.rb +163 -0
  74. data/lib/oci/database/models/autonomous_database_summary.rb +5 -3
  75. data/lib/oci/database/models/autonomous_db_preview_version_summary.rb +1 -3
  76. data/lib/oci/database/models/change_compartment_details.rb +155 -0
  77. data/lib/oci/database/models/create_autonomous_database_base.rb +5 -4
  78. data/lib/oci/database/models/create_data_guard_association_with_new_db_system_details.rb +2 -5
  79. data/lib/oci/database/models/create_database_details.rb +1 -1
  80. data/lib/oci/database/models/create_db_home_with_db_system_id_details.rb +2 -1
  81. data/lib/oci/database/models/create_db_home_with_db_system_id_from_backup_details.rb +2 -1
  82. data/lib/oci/database/models/db_system.rb +2 -5
  83. data/lib/oci/database/models/db_system_summary.rb +2 -5
  84. data/lib/oci/database/models/launch_db_system_base.rb +3 -5
  85. data/lib/oci/database/models/maintenance_window.rb +2 -1
  86. data/lib/oci/database/models/update_autonomous_database_details.rb +5 -3
  87. data/lib/oci/database/models/update_db_system_details.rb +2 -5
  88. data/lib/oci/dns/dns.rb +2 -0
  89. data/lib/oci/dns/dns_client.rb +138 -1
  90. data/lib/oci/dns/models/change_steering_policy_compartment_details.rb +155 -0
  91. data/lib/oci/dns/models/change_zone_compartment_details.rb +155 -0
  92. data/lib/oci/events/events.rb +34 -0
  93. data/lib/oci/events/events_client.rb +537 -0
  94. data/lib/oci/events/events_client_composite_operations.rb +145 -0
  95. data/lib/oci/events/models/action.rb +275 -0
  96. data/lib/oci/events/models/action_details.rb +222 -0
  97. data/lib/oci/events/models/action_details_list.rb +150 -0
  98. data/lib/oci/events/models/action_list.rb +151 -0
  99. data/lib/oci/events/models/change_rule_compartment_details.rb +156 -0
  100. data/lib/oci/events/models/create_faa_s_action_details.rb +170 -0
  101. data/lib/oci/events/models/create_notification_service_action_details.rb +170 -0
  102. data/lib/oci/events/models/create_rule_details.rb +284 -0
  103. data/lib/oci/events/models/create_streaming_service_action_details.rb +170 -0
  104. data/lib/oci/events/models/faa_s_action.rb +178 -0
  105. data/lib/oci/events/models/notification_service_action.rb +179 -0
  106. data/lib/oci/events/models/rule.rb +372 -0
  107. data/lib/oci/events/models/rule_summary.rb +321 -0
  108. data/lib/oci/events/models/streaming_service_action.rb +178 -0
  109. data/lib/oci/events/models/update_rule_details.rb +266 -0
  110. data/lib/oci/events/util.rb +2 -0
  111. data/lib/oci/functions/functions.rb +29 -0
  112. data/lib/oci/functions/functions_invoke_client.rb +237 -0
  113. data/lib/oci/functions/functions_invoke_client_composite_operations.rb +24 -0
  114. data/lib/oci/functions/functions_management_client.rb +851 -0
  115. data/lib/oci/functions/functions_management_client_composite_operations.rb +266 -0
  116. data/lib/oci/functions/models/application.rb +322 -0
  117. data/lib/oci/functions/models/application_summary.rb +281 -0
  118. data/lib/oci/functions/models/change_application_compartment_details.rb +156 -0
  119. data/lib/oci/functions/models/create_application_details.rb +236 -0
  120. data/lib/oci/functions/models/create_function_details.rb +280 -0
  121. data/lib/oci/functions/models/function.rb +397 -0
  122. data/lib/oci/functions/models/function_summary.rb +381 -0
  123. data/lib/oci/functions/models/update_application_details.rb +191 -0
  124. data/lib/oci/functions/models/update_function_details.rb +250 -0
  125. data/lib/oci/functions/util.rb +2 -0
  126. data/lib/oci/healthchecks/health_checks_client.rb +147 -1
  127. data/lib/oci/healthchecks/healthchecks.rb +2 -0
  128. data/lib/oci/healthchecks/models/change_http_monitor_compartment_details.rb +155 -0
  129. data/lib/oci/healthchecks/models/change_ping_monitor_compartment_details.rb +155 -0
  130. data/lib/oci/healthchecks/models/create_http_monitor_details.rb +2 -1
  131. data/lib/oci/healthchecks/models/create_on_demand_http_probe_details.rb +2 -1
  132. data/lib/oci/healthchecks/models/create_on_demand_ping_probe_details.rb +2 -1
  133. data/lib/oci/healthchecks/models/create_ping_monitor_details.rb +2 -1
  134. data/lib/oci/healthchecks/models/http_monitor.rb +2 -0
  135. data/lib/oci/healthchecks/models/http_probe.rb +2 -0
  136. data/lib/oci/healthchecks/models/ping_monitor.rb +2 -0
  137. data/lib/oci/healthchecks/models/ping_probe.rb +2 -0
  138. data/lib/oci/healthchecks/models/update_http_monitor_details.rb +2 -0
  139. data/lib/oci/healthchecks/models/update_ping_monitor_details.rb +2 -0
  140. data/lib/oci/identity/identity.rb +1 -0
  141. data/lib/oci/identity/identity_client.rb +70 -0
  142. data/lib/oci/identity/identity_client_composite_operations.rb +50 -0
  143. data/lib/oci/identity/models/move_compartment_details.rb +155 -0
  144. data/lib/oci/key_management/key_management.rb +2 -0
  145. data/lib/oci/key_management/kms_management_client.rb +73 -0
  146. data/lib/oci/key_management/kms_vault_client.rb +73 -0
  147. data/lib/oci/key_management/models/change_key_compartment_details.rb +153 -0
  148. data/lib/oci/key_management/models/change_vault_compartment_details.rb +153 -0
  149. data/lib/oci/key_management/models/key.rb +1 -0
  150. data/lib/oci/key_management/models/key_summary.rb +1 -0
  151. data/lib/oci/key_management/models/vault.rb +1 -0
  152. data/lib/oci/key_management/models/vault_summary.rb +1 -0
  153. data/lib/oci/limits/limits.rb +23 -0
  154. data/lib/oci/limits/models/create_quota_details.rb +220 -0
  155. data/lib/oci/limits/models/quota.rb +287 -0
  156. data/lib/oci/limits/models/quota_summary.rb +273 -0
  157. data/lib/oci/limits/models/update_quota_details.rb +194 -0
  158. data/lib/oci/limits/quotas_client.rb +439 -0
  159. data/lib/oci/limits/quotas_client_composite_operations.rb +143 -0
  160. data/lib/oci/limits/util.rb +2 -0
  161. data/lib/oci/load_balancer/load_balancer.rb +9 -0
  162. data/lib/oci/load_balancer/load_balancer_client.rb +139 -0
  163. data/lib/oci/load_balancer/load_balancer_client_composite_operations.rb +50 -0
  164. data/lib/oci/load_balancer/models/allow_rule.rb +181 -0
  165. data/lib/oci/load_balancer/models/backend_set.rb +21 -4
  166. data/lib/oci/load_balancer/models/backend_set_details.rb +21 -4
  167. data/lib/oci/load_balancer/models/change_load_balancer_compartment_details.rb +156 -0
  168. data/lib/oci/load_balancer/models/control_access_using_http_methods_rule.rb +205 -0
  169. data/lib/oci/load_balancer/models/create_backend_set_details.rb +21 -4
  170. data/lib/oci/load_balancer/models/create_load_balancer_details.rb +37 -1
  171. data/lib/oci/load_balancer/models/lb_cookie_session_persistence_configuration_details.rb +334 -0
  172. data/lib/oci/load_balancer/models/listener_rule_summary.rb +166 -0
  173. data/lib/oci/load_balancer/models/rule.rb +4 -0
  174. data/lib/oci/load_balancer/models/rule_condition.rb +192 -0
  175. data/lib/oci/load_balancer/models/session_persistence_configuration_details.rb +6 -0
  176. data/lib/oci/load_balancer/models/source_ip_address_condition.rb +167 -0
  177. data/lib/oci/load_balancer/models/source_vcn_id_condition.rb +169 -0
  178. data/lib/oci/load_balancer/models/source_vcn_ip_address_condition.rb +171 -0
  179. data/lib/oci/load_balancer/models/update_backend_set_details.rb +21 -4
  180. data/lib/oci/monitoring/models/alarm.rb +4 -3
  181. data/lib/oci/monitoring/models/alarm_summary.rb +4 -3
  182. data/lib/oci/monitoring/models/change_alarm_compartment_details.rb +155 -0
  183. data/lib/oci/monitoring/models/create_alarm_details.rb +4 -3
  184. data/lib/oci/monitoring/models/datapoint.rb +1 -1
  185. data/lib/oci/monitoring/models/list_metrics_details.rb +4 -4
  186. data/lib/oci/monitoring/models/metric_data.rb +14 -0
  187. data/lib/oci/monitoring/models/metric_data_details.rb +6 -4
  188. data/lib/oci/monitoring/models/summarize_metrics_data_details.rb +3 -0
  189. data/lib/oci/monitoring/models/update_alarm_details.rb +4 -3
  190. data/lib/oci/monitoring/monitoring.rb +1 -0
  191. data/lib/oci/monitoring/monitoring_client.rb +140 -5
  192. data/lib/oci/ons/models/backoff_retry_policy.rb +2 -2
  193. data/lib/oci/ons/models/change_compartment_details.rb +156 -0
  194. data/lib/oci/ons/models/confirmation_result.rb +5 -6
  195. data/lib/oci/ons/models/create_topic_details.rb +1 -1
  196. data/lib/oci/ons/models/notification_topic.rb +2 -2
  197. data/lib/oci/ons/models/notification_topic_summary.rb +2 -2
  198. data/lib/oci/ons/models/subscription.rb +47 -4
  199. data/lib/oci/ons/models/subscription_summary.rb +19 -3
  200. data/lib/oci/ons/notification_control_plane_client.rb +95 -8
  201. data/lib/oci/ons/notification_data_plane_client.rb +109 -8
  202. data/lib/oci/ons/ons.rb +1 -0
  203. data/lib/oci/regions.rb +3 -0
  204. data/lib/oci/streaming/models/change_stream_compartment_details.rb +155 -0
  205. data/lib/oci/streaming/stream_admin_client.rb +58 -0
  206. data/lib/oci/streaming/streaming.rb +1 -0
  207. data/lib/oci/version.rb +1 -1
  208. data/lib/oci/waas/models/access_rule_criteria.rb +14 -2
  209. data/lib/oci/waas/models/change_certificate_compartment_details.rb +154 -0
  210. data/lib/oci/waas/models/change_waas_policy_compartment_details.rb +154 -0
  211. data/lib/oci/waas/models/create_certificate_details.rb +2 -2
  212. data/lib/oci/waas/models/protection_rule_exclusion.rb +16 -1
  213. data/lib/oci/waas/models/protection_settings.rb +9 -5
  214. data/lib/oci/waas/models/waas_policy.rb +1 -1
  215. data/lib/oci/waas/models/waf_config_details.rb +8 -8
  216. data/lib/oci/waas/models/waf_log.rb +40 -19
  217. data/lib/oci/waas/waas.rb +2 -0
  218. data/lib/oci/waas/waas_client.rb +155 -27
  219. data/lib/oci/work_requests/models/work_request.rb +14 -8
  220. data/lib/oci/work_requests/models/work_request_error.rb +3 -3
  221. data/lib/oci/work_requests/models/work_request_log_entry.rb +2 -2
  222. data/lib/oci/work_requests/models/work_request_resource.rb +9 -7
  223. data/lib/oci/work_requests/models/work_request_summary.rb +12 -6
  224. data/lib/oci/work_requests/work_request_client.rb +33 -16
  225. metadata +81 -2
@@ -0,0 +1,266 @@
1
+ # Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
2
+
3
+ # rubocop:disable Lint/UnneededCopDisableDirective, Metrics/LineLength
4
+ module OCI
5
+ # This class provides a wrapper around {OCI::Functions::FunctionsManagementClient} and offers convenience methods
6
+ # for operations that would otherwise need to be chained together. For example, instead of performing an action
7
+ # on a resource (e.g. launching an instance, creating a load balancer) and then using a waiter to wait for the resource
8
+ # to enter a given state, you can call a single method in this class to accomplish the same functionality
9
+ class Functions::FunctionsManagementClientCompositeOperations
10
+ # The {OCI::Functions::FunctionsManagementClient} used to communicate with the service_client
11
+ #
12
+ # @return [OCI::Functions::FunctionsManagementClient]
13
+ attr_reader :service_client
14
+
15
+ # Initializes a new FunctionsManagementClientCompositeOperations
16
+ #
17
+ # @param [OCI::Functions::FunctionsManagementClient] service_client The client used to communicate with the service.
18
+ # Defaults to a new service client created via {OCI::Functions::FunctionsManagementClient#initialize} with no arguments
19
+ def initialize(service_client = OCI::Functions::FunctionsManagementClient.new)
20
+ @service_client = service_client
21
+ end
22
+
23
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
24
+ # rubocop:disable Layout/EmptyLines
25
+
26
+
27
+ # Calls {OCI::Functions::FunctionsManagementClient#create_application} and then waits for the {OCI::Functions::Models::Application} acted upon
28
+ # to enter the given state(s).
29
+ #
30
+ # @param [OCI::Functions::Models::CreateApplicationDetails] create_application_details Specification of the application to create
31
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Application#lifecycle_state}
32
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#create_application}
33
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
34
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
35
+ # * max_wait_seconds The maximum time to wait, in seconds
36
+ #
37
+ # @return [OCI::Response] A {OCI::Response} object with data of type {OCI::Functions::Models::Application}
38
+ def create_application_and_wait_for_state(create_application_details, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
39
+ operation_result = @service_client.create_application(create_application_details, base_operation_opts)
40
+
41
+ return operation_result if wait_for_states.empty?
42
+
43
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
44
+ wait_for_resource_id = operation_result.data.id
45
+
46
+ begin
47
+ waiter_result = @service_client.get_application(wait_for_resource_id).wait_until(
48
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
49
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
50
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200
51
+ )
52
+ result_to_return = waiter_result
53
+
54
+ return result_to_return
55
+ rescue StandardError
56
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
57
+ end
58
+ end
59
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
60
+ # rubocop:enable Layout/EmptyLines
61
+
62
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
63
+ # rubocop:disable Layout/EmptyLines
64
+
65
+
66
+ # Calls {OCI::Functions::FunctionsManagementClient#create_function} and then waits for the {OCI::Functions::Models::Function} acted upon
67
+ # to enter the given state(s).
68
+ #
69
+ # @param [OCI::Functions::Models::CreateFunctionDetails] create_function_details Specification of the function to create
70
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Function#lifecycle_state}
71
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#create_function}
72
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
73
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
74
+ # * max_wait_seconds The maximum time to wait, in seconds
75
+ #
76
+ # @return [OCI::Response] A {OCI::Response} object with data of type {OCI::Functions::Models::Function}
77
+ def create_function_and_wait_for_state(create_function_details, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
78
+ operation_result = @service_client.create_function(create_function_details, base_operation_opts)
79
+
80
+ return operation_result if wait_for_states.empty?
81
+
82
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
83
+ wait_for_resource_id = operation_result.data.id
84
+
85
+ begin
86
+ waiter_result = @service_client.get_function(wait_for_resource_id).wait_until(
87
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
88
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
89
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200
90
+ )
91
+ result_to_return = waiter_result
92
+
93
+ return result_to_return
94
+ rescue StandardError
95
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
96
+ end
97
+ end
98
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
99
+ # rubocop:enable Layout/EmptyLines
100
+
101
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
102
+ # rubocop:disable Layout/EmptyLines
103
+
104
+
105
+ # Calls {OCI::Functions::FunctionsManagementClient#delete_application} and then waits for the {OCI::Functions::Models::Application} acted upon
106
+ # to enter the given state(s).
107
+ #
108
+ # @param [String] application_id The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of this application.
109
+ #
110
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Application#lifecycle_state}
111
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#delete_application}
112
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
113
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
114
+ # * max_wait_seconds The maximum time to wait, in seconds
115
+ #
116
+ # @return [OCI::Response] A {OCI::Response} object with data of type nil
117
+ def delete_application_and_wait_for_state(application_id, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
118
+ initial_get_result = @service_client.get_application(application_id)
119
+ operation_result = @service_client.delete_application(application_id, base_operation_opts)
120
+
121
+ return operation_result if wait_for_states.empty?
122
+
123
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
124
+
125
+ begin
126
+ waiter_result = initial_get_result.wait_until(
127
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
128
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
129
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200,
130
+ succeed_on_not_found: true
131
+ )
132
+ result_to_return = waiter_result
133
+
134
+ return result_to_return
135
+ rescue StandardError
136
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
137
+ end
138
+ end
139
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
140
+ # rubocop:enable Layout/EmptyLines
141
+
142
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
143
+ # rubocop:disable Layout/EmptyLines
144
+
145
+
146
+ # Calls {OCI::Functions::FunctionsManagementClient#delete_function} and then waits for the {OCI::Functions::Models::Function} acted upon
147
+ # to enter the given state(s).
148
+ #
149
+ # @param [String] function_id The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of this function.
150
+ #
151
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Function#lifecycle_state}
152
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#delete_function}
153
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
154
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
155
+ # * max_wait_seconds The maximum time to wait, in seconds
156
+ #
157
+ # @return [OCI::Response] A {OCI::Response} object with data of type nil
158
+ def delete_function_and_wait_for_state(function_id, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
159
+ initial_get_result = @service_client.get_function(function_id)
160
+ operation_result = @service_client.delete_function(function_id, base_operation_opts)
161
+
162
+ return operation_result if wait_for_states.empty?
163
+
164
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
165
+
166
+ begin
167
+ waiter_result = initial_get_result.wait_until(
168
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
169
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
170
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200,
171
+ succeed_on_not_found: true
172
+ )
173
+ result_to_return = waiter_result
174
+
175
+ return result_to_return
176
+ rescue StandardError
177
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
178
+ end
179
+ end
180
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
181
+ # rubocop:enable Layout/EmptyLines
182
+
183
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
184
+ # rubocop:disable Layout/EmptyLines
185
+
186
+
187
+ # Calls {OCI::Functions::FunctionsManagementClient#update_application} and then waits for the {OCI::Functions::Models::Application} acted upon
188
+ # to enter the given state(s).
189
+ #
190
+ # @param [String] application_id The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of this application.
191
+ #
192
+ # @param [OCI::Functions::Models::UpdateApplicationDetails] update_application_details The new application spec to apply
193
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Application#lifecycle_state}
194
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#update_application}
195
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
196
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
197
+ # * max_wait_seconds The maximum time to wait, in seconds
198
+ #
199
+ # @return [OCI::Response] A {OCI::Response} object with data of type {OCI::Functions::Models::Application}
200
+ def update_application_and_wait_for_state(application_id, update_application_details, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
201
+ operation_result = @service_client.update_application(application_id, update_application_details, base_operation_opts)
202
+
203
+ return operation_result if wait_for_states.empty?
204
+
205
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
206
+ wait_for_resource_id = operation_result.data.id
207
+
208
+ begin
209
+ waiter_result = @service_client.get_application(wait_for_resource_id).wait_until(
210
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
211
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
212
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200
213
+ )
214
+ result_to_return = waiter_result
215
+
216
+ return result_to_return
217
+ rescue StandardError
218
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
219
+ end
220
+ end
221
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
222
+ # rubocop:enable Layout/EmptyLines
223
+
224
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
225
+ # rubocop:disable Layout/EmptyLines
226
+
227
+
228
+ # Calls {OCI::Functions::FunctionsManagementClient#update_function} and then waits for the {OCI::Functions::Models::Function} acted upon
229
+ # to enter the given state(s).
230
+ #
231
+ # @param [String] function_id The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of this function.
232
+ #
233
+ # @param [OCI::Functions::Models::UpdateFunctionDetails] update_function_details The new function spec to apply
234
+ # @param [Array<String>] wait_for_states An array of states to wait on. These should be valid values for {OCI::Functions::Models::Function#lifecycle_state}
235
+ # @param [Hash] base_operation_opts Any optional arguments accepted by {OCI::Functions::FunctionsManagementClient#update_function}
236
+ # @param [Hash] waiter_opts Optional arguments for the waiter. Keys should be symbols, and the following keys are supported:
237
+ # * max_interval_seconds: The maximum interval between queries, in seconds.
238
+ # * max_wait_seconds The maximum time to wait, in seconds
239
+ #
240
+ # @return [OCI::Response] A {OCI::Response} object with data of type {OCI::Functions::Models::Function}
241
+ def update_function_and_wait_for_state(function_id, update_function_details, wait_for_states = [], base_operation_opts = {}, waiter_opts = {})
242
+ operation_result = @service_client.update_function(function_id, update_function_details, base_operation_opts)
243
+
244
+ return operation_result if wait_for_states.empty?
245
+
246
+ lowered_wait_for_states = wait_for_states.map(&:downcase)
247
+ wait_for_resource_id = operation_result.data.id
248
+
249
+ begin
250
+ waiter_result = @service_client.get_function(wait_for_resource_id).wait_until(
251
+ eval_proc: ->(response) { response.data.respond_to?(:lifecycle_state) && lowered_wait_for_states.include?(response.data.lifecycle_state.downcase) },
252
+ max_interval_seconds: waiter_opts.key?(:max_interval_seconds) ? waiter_opts[:max_interval_seconds] : 30,
253
+ max_wait_seconds: waiter_opts.key?(:max_wait_seconds) ? waiter_opts[:max_wait_seconds] : 1200
254
+ )
255
+ result_to_return = waiter_result
256
+
257
+ return result_to_return
258
+ rescue StandardError
259
+ raise OCI::Errors::CompositeOperationError.new(partial_results: [operation_result])
260
+ end
261
+ end
262
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/ParameterLists, Metrics/PerceivedComplexity
263
+ # rubocop:enable Layout/EmptyLines
264
+ end
265
+ end
266
+ # rubocop:enable Lint/UnneededCopDisableDirective, Metrics/LineLength
@@ -0,0 +1,322 @@
1
+ # Copyright (c) 2016, 2019, Oracle and/or its affiliates. All rights reserved.
2
+
3
+ require 'date'
4
+ require 'logger'
5
+
6
+ # rubocop:disable Lint/UnneededCopDisableDirective, Metrics/LineLength
7
+ module OCI
8
+ # An application contains functions and defined attributes shared between those functions, such as network configuration and configuration. Avoid entering confidential information.
9
+ #
10
+ class Functions::Models::Application
11
+ LIFECYCLE_STATE_ENUM = [
12
+ LIFECYCLE_STATE_CREATING = 'CREATING'.freeze,
13
+ LIFECYCLE_STATE_ACTIVE = 'ACTIVE'.freeze,
14
+ LIFECYCLE_STATE_INACTIVE = 'INACTIVE'.freeze,
15
+ LIFECYCLE_STATE_UPDATING = 'UPDATING'.freeze,
16
+ LIFECYCLE_STATE_DELETING = 'DELETING'.freeze,
17
+ LIFECYCLE_STATE_DELETED = 'DELETED'.freeze,
18
+ LIFECYCLE_STATE_FAILED = 'FAILED'.freeze,
19
+ LIFECYCLE_STATE_UNKNOWN_ENUM_VALUE = 'UNKNOWN_ENUM_VALUE'.freeze
20
+ ].freeze
21
+
22
+ # The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the application.
23
+ #
24
+ # @return [String]
25
+ attr_accessor :id
26
+
27
+ # The OCID of the compartment that contains the application.
28
+ #
29
+ # @return [String]
30
+ attr_accessor :compartment_id
31
+
32
+ # The display name of the application. The display name is unique within the compartment containing the application.
33
+ #
34
+ # @return [String]
35
+ attr_accessor :display_name
36
+
37
+ # The current state of the application.
38
+ #
39
+ # @return [String]
40
+ attr_reader :lifecycle_state
41
+
42
+ # Application configuration for functions in this application (passed as environment variables). Can be overridden by function configuration.
43
+ # Keys must be ASCII strings consisting solely of letters, digits, and the '_' (underscore) character, and must not begin with a digit. Values should be limited to printable unicode characters.
44
+ #
45
+ # Example: `{\"MY_FUNCTION_CONFIG\": \"ConfVal\"}`
46
+ #
47
+ # The maximum size for all configuration keys and values is limited to 4KB. This is measured as the sum of octets necessary to represent each key and value in UTF-8.
48
+ #
49
+ # @return [Hash<String, String>]
50
+ attr_accessor :config
51
+
52
+ # The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)s of the subnets in which to run functions in the application.
53
+ #
54
+ # @return [Array<String>]
55
+ attr_accessor :subnet_ids
56
+
57
+ # Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace.
58
+ # For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
59
+ #
60
+ # Example: `{\"Department\": \"Finance\"}`
61
+ #
62
+ # @return [Hash<String, String>]
63
+ attr_accessor :freeform_tags
64
+
65
+ # Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).
66
+ #
67
+ # Example: `{\"Operations\": {\"CostCenter\": \"42\"}}`
68
+ #
69
+ # @return [Hash<String, Hash<String, Object>>]
70
+ attr_accessor :defined_tags
71
+
72
+ # The time the application was created, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339)
73
+ # timestamp format.
74
+ #
75
+ # Example: `2018-09-12T22:47:12.613Z`
76
+ #
77
+ # @return [DateTime]
78
+ attr_accessor :time_created
79
+
80
+ # The time the application was updated, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339)
81
+ # timestamp format.
82
+ # Example: `2018-09-12T22:47:12.613Z`
83
+ #
84
+ # @return [DateTime]
85
+ attr_accessor :time_updated
86
+
87
+ # Attribute mapping from ruby-style variable name to JSON key.
88
+ def self.attribute_map
89
+ {
90
+ # rubocop:disable Style/SymbolLiteral
91
+ 'id': :'id',
92
+ 'compartment_id': :'compartmentId',
93
+ 'display_name': :'displayName',
94
+ 'lifecycle_state': :'lifecycleState',
95
+ 'config': :'config',
96
+ 'subnet_ids': :'subnetIds',
97
+ 'freeform_tags': :'freeformTags',
98
+ 'defined_tags': :'definedTags',
99
+ 'time_created': :'timeCreated',
100
+ 'time_updated': :'timeUpdated'
101
+ # rubocop:enable Style/SymbolLiteral
102
+ }
103
+ end
104
+
105
+ # Attribute type mapping.
106
+ def self.swagger_types
107
+ {
108
+ # rubocop:disable Style/SymbolLiteral
109
+ 'id': :'String',
110
+ 'compartment_id': :'String',
111
+ 'display_name': :'String',
112
+ 'lifecycle_state': :'String',
113
+ 'config': :'Hash<String, String>',
114
+ 'subnet_ids': :'Array<String>',
115
+ 'freeform_tags': :'Hash<String, String>',
116
+ 'defined_tags': :'Hash<String, Hash<String, Object>>',
117
+ 'time_created': :'DateTime',
118
+ 'time_updated': :'DateTime'
119
+ # rubocop:enable Style/SymbolLiteral
120
+ }
121
+ end
122
+
123
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
124
+ # rubocop:disable Metrics/MethodLength, Layout/EmptyLines, Style/SymbolLiteral
125
+
126
+
127
+ # Initializes the object
128
+ # @param [Hash] attributes Model attributes in the form of hash
129
+ # @option attributes [String] :id The value to assign to the {#id} property
130
+ # @option attributes [String] :compartment_id The value to assign to the {#compartment_id} property
131
+ # @option attributes [String] :display_name The value to assign to the {#display_name} property
132
+ # @option attributes [String] :lifecycle_state The value to assign to the {#lifecycle_state} property
133
+ # @option attributes [Hash<String, String>] :config The value to assign to the {#config} property
134
+ # @option attributes [Array<String>] :subnet_ids The value to assign to the {#subnet_ids} property
135
+ # @option attributes [Hash<String, String>] :freeform_tags The value to assign to the {#freeform_tags} property
136
+ # @option attributes [Hash<String, Hash<String, Object>>] :defined_tags The value to assign to the {#defined_tags} property
137
+ # @option attributes [DateTime] :time_created The value to assign to the {#time_created} property
138
+ # @option attributes [DateTime] :time_updated The value to assign to the {#time_updated} property
139
+ def initialize(attributes = {})
140
+ return unless attributes.is_a?(Hash)
141
+
142
+ # convert string to symbol for hash key
143
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
144
+
145
+ self.id = attributes[:'id'] if attributes[:'id']
146
+
147
+ self.compartment_id = attributes[:'compartmentId'] if attributes[:'compartmentId']
148
+
149
+ raise 'You cannot provide both :compartmentId and :compartment_id' if attributes.key?(:'compartmentId') && attributes.key?(:'compartment_id')
150
+
151
+ self.compartment_id = attributes[:'compartment_id'] if attributes[:'compartment_id']
152
+
153
+ self.display_name = attributes[:'displayName'] if attributes[:'displayName']
154
+
155
+ raise 'You cannot provide both :displayName and :display_name' if attributes.key?(:'displayName') && attributes.key?(:'display_name')
156
+
157
+ self.display_name = attributes[:'display_name'] if attributes[:'display_name']
158
+
159
+ self.lifecycle_state = attributes[:'lifecycleState'] if attributes[:'lifecycleState']
160
+
161
+ raise 'You cannot provide both :lifecycleState and :lifecycle_state' if attributes.key?(:'lifecycleState') && attributes.key?(:'lifecycle_state')
162
+
163
+ self.lifecycle_state = attributes[:'lifecycle_state'] if attributes[:'lifecycle_state']
164
+
165
+ self.config = attributes[:'config'] if attributes[:'config']
166
+
167
+ self.subnet_ids = attributes[:'subnetIds'] if attributes[:'subnetIds']
168
+
169
+ raise 'You cannot provide both :subnetIds and :subnet_ids' if attributes.key?(:'subnetIds') && attributes.key?(:'subnet_ids')
170
+
171
+ self.subnet_ids = attributes[:'subnet_ids'] if attributes[:'subnet_ids']
172
+
173
+ self.freeform_tags = attributes[:'freeformTags'] if attributes[:'freeformTags']
174
+
175
+ raise 'You cannot provide both :freeformTags and :freeform_tags' if attributes.key?(:'freeformTags') && attributes.key?(:'freeform_tags')
176
+
177
+ self.freeform_tags = attributes[:'freeform_tags'] if attributes[:'freeform_tags']
178
+
179
+ self.defined_tags = attributes[:'definedTags'] if attributes[:'definedTags']
180
+
181
+ raise 'You cannot provide both :definedTags and :defined_tags' if attributes.key?(:'definedTags') && attributes.key?(:'defined_tags')
182
+
183
+ self.defined_tags = attributes[:'defined_tags'] if attributes[:'defined_tags']
184
+
185
+ self.time_created = attributes[:'timeCreated'] if attributes[:'timeCreated']
186
+
187
+ raise 'You cannot provide both :timeCreated and :time_created' if attributes.key?(:'timeCreated') && attributes.key?(:'time_created')
188
+
189
+ self.time_created = attributes[:'time_created'] if attributes[:'time_created']
190
+
191
+ self.time_updated = attributes[:'timeUpdated'] if attributes[:'timeUpdated']
192
+
193
+ raise 'You cannot provide both :timeUpdated and :time_updated' if attributes.key?(:'timeUpdated') && attributes.key?(:'time_updated')
194
+
195
+ self.time_updated = attributes[:'time_updated'] if attributes[:'time_updated']
196
+ end
197
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity
198
+ # rubocop:enable Metrics/MethodLength, Layout/EmptyLines, Style/SymbolLiteral
199
+
200
+ # Custom attribute writer method checking allowed values (enum).
201
+ # @param [Object] lifecycle_state Object to be assigned
202
+ def lifecycle_state=(lifecycle_state)
203
+ # rubocop:disable Style/ConditionalAssignment
204
+ if lifecycle_state && !LIFECYCLE_STATE_ENUM.include?(lifecycle_state)
205
+ OCI.logger.debug("Unknown value for 'lifecycle_state' [" + lifecycle_state + "]. Mapping to 'LIFECYCLE_STATE_UNKNOWN_ENUM_VALUE'") if OCI.logger
206
+ @lifecycle_state = LIFECYCLE_STATE_UNKNOWN_ENUM_VALUE
207
+ else
208
+ @lifecycle_state = lifecycle_state
209
+ end
210
+ # rubocop:enable Style/ConditionalAssignment
211
+ end
212
+
213
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
214
+
215
+
216
+ # Checks equality by comparing each attribute.
217
+ # @param [Object] other the other object to be compared
218
+ def ==(other)
219
+ return true if equal?(other)
220
+
221
+ self.class == other.class &&
222
+ id == other.id &&
223
+ compartment_id == other.compartment_id &&
224
+ display_name == other.display_name &&
225
+ lifecycle_state == other.lifecycle_state &&
226
+ config == other.config &&
227
+ subnet_ids == other.subnet_ids &&
228
+ freeform_tags == other.freeform_tags &&
229
+ defined_tags == other.defined_tags &&
230
+ time_created == other.time_created &&
231
+ time_updated == other.time_updated
232
+ end
233
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/AbcSize, Metrics/PerceivedComplexity, Layout/EmptyLines
234
+
235
+ # @see the `==` method
236
+ # @param [Object] other the other object to be compared
237
+ def eql?(other)
238
+ self == other
239
+ end
240
+
241
+ # rubocop:disable Metrics/AbcSize, Layout/EmptyLines
242
+
243
+
244
+ # Calculates hash code according to all attributes.
245
+ # @return [Fixnum] Hash code
246
+ def hash
247
+ [id, compartment_id, display_name, lifecycle_state, config, subnet_ids, freeform_tags, defined_tags, time_created, time_updated].hash
248
+ end
249
+ # rubocop:enable Metrics/AbcSize, Layout/EmptyLines
250
+
251
+ # rubocop:disable Metrics/AbcSize, Layout/EmptyLines
252
+
253
+
254
+ # Builds the object from hash
255
+ # @param [Hash] attributes Model attributes in the form of hash
256
+ # @return [Object] Returns the model itself
257
+ def build_from_hash(attributes)
258
+ return nil unless attributes.is_a?(Hash)
259
+
260
+ self.class.swagger_types.each_pair do |key, type|
261
+ if type =~ /^Array<(.*)>/i
262
+ # check to ensure the input is an array given that the the attribute
263
+ # is documented as an array but the input is not
264
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
265
+ public_method("#{key}=").call(
266
+ attributes[self.class.attribute_map[key]]
267
+ .map { |v| OCI::Internal::Util.convert_to_type(Regexp.last_match(1), v) }
268
+ )
269
+ end
270
+ elsif !attributes[self.class.attribute_map[key]].nil?
271
+ public_method("#{key}=").call(
272
+ OCI::Internal::Util.convert_to_type(type, attributes[self.class.attribute_map[key]])
273
+ )
274
+ end
275
+ # or else data not found in attributes(hash), not an issue as the data can be optional
276
+ end
277
+
278
+ self
279
+ end
280
+ # rubocop:enable Metrics/AbcSize, Layout/EmptyLines
281
+
282
+ # Returns the string representation of the object
283
+ # @return [String] String presentation of the object
284
+ def to_s
285
+ to_hash.to_s
286
+ end
287
+
288
+ # Returns the object in the form of hash
289
+ # @return [Hash] Returns the object in the form of hash
290
+ def to_hash
291
+ hash = {}
292
+ self.class.attribute_map.each_pair do |attr, param|
293
+ value = public_method(attr).call
294
+ next if value.nil? && !instance_variable_defined?("@#{attr}")
295
+
296
+ hash[param] = _to_hash(value)
297
+ end
298
+ hash
299
+ end
300
+
301
+ private
302
+
303
+ # Outputs non-array value in the form of hash
304
+ # For object, use to_hash. Otherwise, just return the value
305
+ # @param [Object] value Any valid value
306
+ # @return [Hash] Returns the value in the form of hash
307
+ def _to_hash(value)
308
+ if value.is_a?(Array)
309
+ value.compact.map { |v| _to_hash(v) }
310
+ elsif value.is_a?(Hash)
311
+ {}.tap do |hash|
312
+ value.each { |k, v| hash[k] = _to_hash(v) }
313
+ end
314
+ elsif value.respond_to? :to_hash
315
+ value.to_hash
316
+ else
317
+ value
318
+ end
319
+ end
320
+ end
321
+ end
322
+ # rubocop:enable Lint/UnneededCopDisableDirective, Metrics/LineLength