From ada7b710122733308daf2c5768e498e03c5239d3 Mon Sep 17 00:00:00 2001 From: bhagwatvyas Date: Tue, 8 Dec 2020 17:29:18 +0000 Subject: [PATCH] Releasing version 2.25.1 --- CHANGELOG.rst | 12 + docs/api/integration.rst | 3 + ...ion.models.CreateCustomEndpointDetails.rst | 11 + ...tegration.models.CustomEndpointDetails.rst | 11 + ...ion.models.UpdateCustomEndpointDetails.rst | 11 + .../object_storage_bulk_copy.py | 28 + .../object_storage_bulk_delete.py | 23 + .../object_storage_bulk_restore.py | 23 + .../object_storage_list_objects.py | 25 + examples/showoci/CHANGELOG.rst | 7 + examples/showoci/showoci.py | 2 +- examples/showoci/showoci_data.py | 126 +++- examples/showoci/showoci_output.py | 251 +++++++- examples/showoci/showoci_service.py | 546 +++++++++++++++--- src/oci/database/database_client.py | 298 ++++++++-- .../database_client_composite_operations.py | 96 ++- ...activate_exadata_infrastructure_details.py | 2 +- .../models/autonomous_container_database.py | 8 +- ...ontainer_database_dataguard_association.py | 8 +- .../autonomous_container_database_summary.py | 8 +- .../database/models/autonomous_database.py | 4 +- ...tonomous_database_dataguard_association.py | 8 +- .../models/autonomous_database_summary.py | 4 +- ...data_infrastructure_compartment_details.py | 2 +- ...ge_cloud_vm_cluster_compartment_details.py | 2 +- .../models/cloud_exadata_infrastructure.py | 2 +- .../cloud_exadata_infrastructure_summary.py | 2 +- src/oci/database/models/cloud_vm_cluster.py | 2 +- .../models/cloud_vm_cluster_summary.py | 2 +- ...e_autonomous_container_database_details.py | 4 +- ...te_cloud_exadata_infrastructure_details.py | 2 +- .../models/create_cloud_vm_cluster_details.py | 4 +- .../create_exadata_infrastructure_details.py | 30 +- .../models/create_vm_cluster_details.py | 3 +- .../models/exadata_db_system_migration.py | 2 +- .../exadata_db_system_migration_summary.py | 2 +- .../database/models/exadata_infrastructure.py | 37 +- .../models/exadata_infrastructure_summary.py | 40 +- .../generate_recommended_network_details.py | 2 +- src/oci/database/models/maintenance_run.py | 10 +- .../models/maintenance_run_summary.py | 10 +- ...e_autonomous_container_database_details.py | 4 +- ...te_cloud_exadata_infrastructure_details.py | 2 +- .../models/update_cloud_vm_cluster_details.py | 6 +- src/oci/database/models/update_details.py | 2 +- .../update_exadata_infrastructure_details.py | 30 +- .../models/update_history_entry_summary.py | 2 +- src/oci/database/models/update_summary.py | 2 +- .../models/update_vm_cluster_details.py | 3 +- .../update_vm_cluster_network_details.py | 2 +- src/oci/database/models/vm_cluster.py | 12 +- .../models/vm_cluster_network_details.py | 2 +- .../models/vm_cluster_network_summary.py | 2 +- src/oci/database/models/vm_cluster_summary.py | 10 +- src/oci/database/models/vm_network_details.py | 2 +- .../models/saml2_identity_provider.py | 31 + src/oci/integration/models/__init__.py | 6 + .../models/create_custom_endpoint_details.py | 105 ++++ .../create_integration_instance_details.py | 91 +++ .../models/custom_endpoint_details.py | 132 +++++ .../models/integration_instance.py | 89 +++ .../models/integration_instance_summary.py | 89 +++ .../models/update_custom_endpoint_details.py | 105 ++++ .../update_integration_instance_details.py | 95 ++- .../opsi/models/sql_insight_aggregation.py | 6 +- src/oci/opsi/models/sql_insight_thresholds.py | 35 +- src/oci/opsi/operations_insights_client.py | 4 +- src/oci/version.py | 2 +- 68 files changed, 2302 insertions(+), 242 deletions(-) create mode 100644 docs/api/integration/models/oci.integration.models.CreateCustomEndpointDetails.rst create mode 100644 docs/api/integration/models/oci.integration.models.CustomEndpointDetails.rst create mode 100644 docs/api/integration/models/oci.integration.models.UpdateCustomEndpointDetails.rst create mode 100644 src/oci/integration/models/create_custom_endpoint_details.py create mode 100644 src/oci/integration/models/custom_endpoint_details.py create mode 100644 src/oci/integration/models/update_custom_endpoint_details.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e970deb4eb..a83427ffcd 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,18 @@ Change Log All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +==================== +2.25.1 - 2020-12-08 +==================== + +Added +----- +* Support for Integration Service custom endpoint feature +* Support for metadata field in IdentityProvider Get and List response +* Support for fine-grained data analysis and improved SQL insights +* Support for ADB Dedicated - ORDS and SSL cert rotation at AEI +* Support for Maintenance Schedule feature for Exadata Infrastructure resources for ExaCC + ==================== 2.25.0 - 2020-12-01 ==================== diff --git a/docs/api/integration.rst b/docs/api/integration.rst index da25eae007..955aa383f9 100644 --- a/docs/api/integration.rst +++ b/docs/api/integration.rst @@ -19,9 +19,12 @@ Integration :template: autosummary/model_class.rst oci.integration.models.ChangeIntegrationInstanceCompartmentDetails + oci.integration.models.CreateCustomEndpointDetails oci.integration.models.CreateIntegrationInstanceDetails + oci.integration.models.CustomEndpointDetails oci.integration.models.IntegrationInstance oci.integration.models.IntegrationInstanceSummary + oci.integration.models.UpdateCustomEndpointDetails oci.integration.models.UpdateIntegrationInstanceDetails oci.integration.models.WorkRequest oci.integration.models.WorkRequestError diff --git a/docs/api/integration/models/oci.integration.models.CreateCustomEndpointDetails.rst b/docs/api/integration/models/oci.integration.models.CreateCustomEndpointDetails.rst new file mode 100644 index 0000000000..72c7901057 --- /dev/null +++ b/docs/api/integration/models/oci.integration.models.CreateCustomEndpointDetails.rst @@ -0,0 +1,11 @@ +CreateCustomEndpointDetails +=========================== + +.. currentmodule:: oci.integration.models + +.. autoclass:: CreateCustomEndpointDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/integration/models/oci.integration.models.CustomEndpointDetails.rst b/docs/api/integration/models/oci.integration.models.CustomEndpointDetails.rst new file mode 100644 index 0000000000..c0c8baf644 --- /dev/null +++ b/docs/api/integration/models/oci.integration.models.CustomEndpointDetails.rst @@ -0,0 +1,11 @@ +CustomEndpointDetails +===================== + +.. currentmodule:: oci.integration.models + +.. autoclass:: CustomEndpointDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/integration/models/oci.integration.models.UpdateCustomEndpointDetails.rst b/docs/api/integration/models/oci.integration.models.UpdateCustomEndpointDetails.rst new file mode 100644 index 0000000000..0b07eea7cc --- /dev/null +++ b/docs/api/integration/models/oci.integration.models.UpdateCustomEndpointDetails.rst @@ -0,0 +1,11 @@ +UpdateCustomEndpointDetails +=========================== + +.. currentmodule:: oci.integration.models + +.. autoclass:: UpdateCustomEndpointDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/examples/object_storage/object_storage_bulk_copy.py b/examples/object_storage/object_storage_bulk_copy.py index 06fb06c3c4..51ffcaaed4 100644 --- a/examples/object_storage/object_storage_bulk_copy.py +++ b/examples/object_storage/object_storage_bulk_copy.py @@ -2,6 +2,34 @@ # Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +########################################################################## +# object_storage_bulk_copy.py +# +# @author: Tim S and Adi Z +# +# Supports Python 3 +########################################################################## +# Info: +# Bulk copy object storage bucket to other bucket with parallel threads +# +########################################################################## +# Application Command line parameters +# +# -c config - Config file section to use (tenancy profile) +# -t profile - Profile in config file, DEFAULT as default +# -p proxy - Set Proxy (i.e. www-proxy-server.com:80) +# -ip - Use Instance Principals for Authentication +# -dt - Use Instance Principals with delegation token for cloud shell +# -sb source_bucket +# -sr source_region +# -sn source_namespace +# -sp source_prefix_include +# -se source_prefix_exclude +# -db destination_bucket +# -dr destination_region +# -ig ignore_check_exist +########################################################################## + import pickle import threading import time diff --git a/examples/object_storage/object_storage_bulk_delete.py b/examples/object_storage/object_storage_bulk_delete.py index a6a157efb7..052c57d78f 100644 --- a/examples/object_storage/object_storage_bulk_delete.py +++ b/examples/object_storage/object_storage_bulk_delete.py @@ -2,6 +2,29 @@ # Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +########################################################################## +# object_storage_bulk_delete.py +# +# @author: Adi Zohar +# +# Supports Python 3 +########################################################################## +# Info: +# Bulk delete with parallel threads +# +########################################################################## +# Application Command line parameters +# +# -c config - Config file section to use (tenancy profile) +# -t profile - Profile in config file, DEFAULT as default +# -p proxy - Set Proxy (i.e. www-proxy-server.com:80) +# -ip - Use Instance Principals for Authentication +# -dt - Use Instance Principals with delegation token for cloud shell +# -sb source_bucket +# -sp source_prefix +# -sr source_region +########################################################################## + import threading import time import queue diff --git a/examples/object_storage/object_storage_bulk_restore.py b/examples/object_storage/object_storage_bulk_restore.py index 70b29c53ea..e2c7fff60b 100644 --- a/examples/object_storage/object_storage_bulk_restore.py +++ b/examples/object_storage/object_storage_bulk_restore.py @@ -2,6 +2,29 @@ # Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +########################################################################## +# object_storage_bulk_restore.py +# +# @author: Tim S and Adi Z +# +# Supports Python 3 +########################################################################## +# Info: +# Bulk restore with parallel threads +# +########################################################################## +# Application Command line parameters +# +# -c config - Config file section to use (tenancy profile) +# -t profile - Profile in config file, DEFAULT as default +# -p proxy - Set Proxy (i.e. www-proxy-server.com:80) +# -ip - Use Instance Principals for Authentication +# -dt - Use Instance Principals with delegation token for cloud shell +# -sb source_bucket +# -sp source_prefix_include +# -sr source_region +########################################################################## + import threading import time import queue diff --git a/examples/object_storage/object_storage_list_objects.py b/examples/object_storage/object_storage_list_objects.py index 8a20aa8beb..ee30257152 100644 --- a/examples/object_storage/object_storage_list_objects.py +++ b/examples/object_storage/object_storage_list_objects.py @@ -2,6 +2,31 @@ # Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. +########################################################################## +# object_storage_list_objects.py +# +# @author: Adi Zohar, Oct 18th 2020 +# +# Supports Python 3 +########################################################################## +# Info: +# count objects or list objects with option to filter by prefix and write to file +# +########################################################################## +# Application Command line parameters +# +# -c config - Config file section to use (tenancy profile) +# -t profile - Profile in config file, DEFAULT as default +# -p proxy - Set Proxy (i.e. www-proxy-server.com:80) +# -ip - Use Instance Principals for Authentication +# -dt - Use Instance Principals with delegation token for cloud shell +# -co - count only +# -f - write to file +# -sb source_bucket +# -sp source_prefix_include +# -se source_prefix_exclude +# -sr source_region +########################################################################## import oci import argparse import datetime diff --git a/examples/showoci/CHANGELOG.rst b/examples/showoci/CHANGELOG.rst index 0cb533ba6c..be38624a47 100755 --- a/examples/showoci/CHANGELOG.rst +++ b/examples/showoci/CHANGELOG.rst @@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +===================== +20.12.08 - 20.12.08 +===================== +* Added retry policy to all pagination calls +* Added job id for resource manager +* Added Exadata Infrastructure and VM Clusters + ===================== 20.11.24 - 20.11.24 ===================== diff --git a/examples/showoci/showoci.py b/examples/showoci/showoci.py index 8215ea7682..81d5573e8d 100755 --- a/examples/showoci/showoci.py +++ b/examples/showoci/showoci.py @@ -91,7 +91,7 @@ import argparse import datetime -version = "20.11.24" +version = "20.12.08" ########################################################################## # check OCI version diff --git a/examples/showoci/showoci_data.py b/examples/showoci/showoci_data.py index f5acba2bb6..12e320e808 100755 --- a/examples/showoci/showoci_data.py +++ b/examples/showoci/showoci_data.py @@ -1859,16 +1859,106 @@ def __get_database_db_dataguard(self, dataguards): return data ########################################################################## - # Database + # Exadata Infra ########################################################################## - # - # class oci.database.DatabaseClient(config, **kwargs) - # - # Below APIs not done: - # list_db_home_patch_history_entries - # list_db_system_patch_history_entries - # list_data_guard_associations - # + def __get_database_db_exadata(self, region_name, compartment): + + data = [] + try: + list_exas = self.service.search_multi_items(self.service.C_DATABASE, self.service.C_DATABASE_EXADATA, 'region_name', region_name, 'compartment_id', compartment['id']) + + for dbs in list_exas: + value = { + 'id': dbs['id'], + 'display_name': dbs['display_name'], + 'shape': dbs['shape'], + 'shape_ocpu': dbs['shape_ocpu'], + 'shape_memory_gb': dbs['shape_memory_gb'], + 'shape_storage_tb': dbs['shape_storage_tb'], + 'version': dbs['version'], + 'lifecycle_state': dbs['lifecycle_state'], + 'lifecycle_details': dbs['lifecycle_details'], + 'availability_domain': dbs['availability_domain'], + 'compute_count': dbs['compute_count'], + 'storage_count': dbs['storage_count'], + 'total_storage_size_in_gbs': dbs['total_storage_size_in_gbs'], + 'available_storage_size_in_gbs': dbs['available_storage_size_in_gbs'], + 'compartment_name': dbs['compartment_name'], + 'compartment_id': dbs['compartment_id'], + 'time_created': dbs['time_created'], + 'last_maintenance_run': dbs['last_maintenance_run'], + 'next_maintenance_run': dbs['next_maintenance_run'], + 'maintenance_window': dbs['maintenance_window'], + 'defined_tags': dbs['defined_tags'], + 'freeform_tags': dbs['freeform_tags'], + 'region_name': dbs['region_name'], + 'name': dbs['display_name'] + " - " + dbs['shape'] + " - " + dbs['lifecycle_state'], + 'sum_info': 'Database XP - ' + dbs['shape'], + 'sum_info_storage': 'Database - Storage (GB)', + 'sum_size_gb': dbs['total_storage_size_in_gbs'], + 'data': str(dbs['available_storage_size_in_gbs']) + "GB", + 'vm_clusters': [] + } + + for vm in dbs['vm_clusters']: + valvm = { + 'id': vm['id'], + 'cluster_name': vm['cluster_name'], + 'hostname': vm['hostname'], + 'compartment_id': vm['compartment_id'], + 'availability_domain': vm['availability_domain'], + 'data_subnet_id': vm['data_subnet_id'], + 'data_subnet': vm['data_subnet'], + 'backup_subnet_id': vm['backup_subnet_id'], + 'backup_subnet': vm['backup_subnet'], + 'nsg_ids': vm['nsg_ids'], + 'backup_network_nsg_ids': vm['backup_network_nsg_ids'], + 'last_update_history_entry_id': vm['last_update_history_entry_id'], + 'shape': vm['shape'], + 'listener_port': vm['listener_port'], + 'lifecycle_state': vm['lifecycle_state'], + 'node_count': vm['node_count'], + 'storage_size_in_gbs': vm['storage_size_in_gbs'], + 'display_name': vm['display_name'], + 'time_created': vm['time_created'], + 'lifecycle_details': vm['lifecycle_details'], + 'time_zone': vm['time_zone'], + 'domain': vm['domain'], + 'cpu_core_count': vm['cpu_core_count'], + 'data_storage_percentage': vm['data_storage_percentage'], + 'is_local_backup_enabled': vm['is_local_backup_enabled'], + 'is_sparse_diskgroup_enabled': vm['is_sparse_diskgroup_enabled'], + 'gi_version': vm['gi_version'], + 'system_version': vm['system_version'], + 'ssh_public_keys': vm['ssh_public_keys'], + 'license_model': vm['license_model'], + 'disk_redundancy': vm['disk_redundancy'], + 'scan_ip_ids': vm['scan_ip_ids'], + 'scan_ips': vm['scan_ips'], + 'vip_ids': vm['vip_ids'], + 'vip_ips': vm['vip_ips'], + 'scan_dns_record_id': vm['scan_dns_record_id'], + 'defined_tags': vm['defined_tags'], + 'freeform_tags': vm['freeform_tags'], + 'region_name': vm['region_name'], + 'sum_info': 'Database XP - ' + dbs['shape'], + 'sum_info_storage': 'Database - Storage (GB)', + 'sum_size_gb': vm['storage_size_in_gbs'], + 'patches': self.__get_database_db_patches(vm['patches']), + 'db_homes': self.__get_database_db_homes(vm['db_homes']), + 'db_nodes': self.__get_database_db_nodes(vm['db_nodes']) + } + value['vm_clusters'].append(valvm) + + data.append(value) + return data + + except Exception as e: + self.__print_error("__get_database_db_exadata", e) + return data + + ########################################################################## + # Database Systems ########################################################################## def __get_database_db_systems(self, region_name, compartment): @@ -2086,6 +2176,11 @@ def __get_database_main(self, region_name, compartment): if len(data) > 0: return_data['db_system'] = data + data = self.__get_database_db_exadata(region_name, compartment) + if data: + if len(data) > 0: + return_data['exadata_infrustructure'] = data + data = self.__get_database_autonomous_databases(region_name, compartment) if data: if len(data) > 0: @@ -2422,6 +2517,7 @@ def __get_resource_management_main(self, region_name, compartment): 'stack_name': str(stack['display_name']) + " - " + str(stack['description']), 'display_name': stack['display_name'], 'description': stack['description'], + 'jobs': stack['jobs'], 'compartment_id': stack['compartment_id'], 'compartment_name': stack['compartment_name'], 'region_name': stack['region_name'], @@ -2429,18 +2525,6 @@ def __get_resource_management_main(self, region_name, compartment): 'defined_tags': stack['defined_tags'], 'freeform_tags': stack['freeform_tags']} - # query jobs - datajob = [] - for job in stack['jobs']: - datajob.append( - str(job['display_name']) + " - " + - str(job['operation']).ljust(10) + " - " + - str(job['lifecycle_state']).ljust(10) + " - " + - str(job['time_finished'])[0:16] - ) - - # add the jobs to the array - dataval['jobs'] = datajob data.append(dataval) return data diff --git a/examples/showoci/showoci_output.py b/examples/showoci/showoci_output.py index 0b92ebc7e6..cb72101189 100755 --- a/examples/showoci/showoci_output.py +++ b/examples/showoci/showoci_output.py @@ -825,6 +825,124 @@ def __print_file_storage_main(self, file_systems): except Exception as e: self.__print_error("__print_file_storage_main", e) + ########################################################################## + # database exadata + ########################################################################## + def __print_database_db_exadata_infra(self, list_exadata): + + try: + for dbs in list_exadata: + print("") + + print(self.taba + "ExaCS : " + dbs['name']) + print(self.tabs + "AD : " + dbs['availability_domain']) + + if 'compute_count' in dbs: + if dbs['compute_count'] != "None": + print(self.tabs + "VM Hosts: " + str(dbs['compute_count'])) + + if 'storage_count' in dbs: + if dbs['storage_count'] != "None" and dbs['total_storage_size_in_gbs'] != "None": + print(self.tabs + "Storage : Hosts = " + str(dbs['storage_count']) + ", Total = " + str( + dbs['total_storage_size_in_gbs']) + "GB, Available = " + str(dbs['available_storage_size_in_gbs']) + "GB") + + if 'maintenance_window' in dbs: + if dbs['maintenance_window']: + print(self.tabs + "Maint : Window : " + dbs['maintenance_window']['display']) + + if 'last_maintenance_run' in dbs: + if dbs['last_maintenance_run']: + print(self.tabs + "Maint : Last : " + dbs['last_maintenance_run']['description']) + print(self.tabs + " : " + dbs['last_maintenance_run']['maintenance_display']) + + if 'next_maintenance_run' in dbs: + if dbs['next_maintenance_run']: + print(self.tabs + "Maint : Next : " + dbs['next_maintenance_run']['description']) + print(self.tabs + " : " + dbs['next_maintenance_run']['maintenance_display']) + if dbs['next_maintenance_run']['maintenance_alert']: + print(self.tabs + " Alert : " + dbs['next_maintenance_run']['maintenance_alert']) + + # clusters + for vm in dbs['vm_clusters']: + + if 'cpu_core_count' in vm: + print(self.tabs + "Cores : " + str(vm['cpu_core_count'])) + + if 'node_count' in vm: + if vm['node_count']: + print(self.tabs + "Nodes : " + str(vm['node_count'])) + + if 'domain' in vm: + if vm['domain']: + print(self.tabs + "Domain : " + vm['domain']) + + if 'cluster_name' in vm: + if vm['cluster_name']: + print(self.tabs + "Cluster : " + vm['cluster_name']) + + if 'data_subnet' in vm: + if vm['data_subnet']: + print(self.tabs + "DataSub : " + vm['data_subnet']) + + if 'backup_subnet' in vm: + if vm['backup_subnet']: + print(self.tabs + "BackSub : " + vm['backup_subnet']) + + if 'scan_dns' in vm: + if vm['scan_dns']: + print(self.tabs + "Scan : " + vm['scan_dns_name']) + + if 'scan_ips' in vm: + for ip in vm['scan_ips']: + print(self.tabs + "Scan Ips: " + ip) + + if 'vip_ips' in vm: + for ip in vm['vip_ips']: + print(self.tabs + "VIP Ips : " + ip) + + if 'listener_port' in vm: + print(self.tabs + "Port : " + vm['listener_port']) + + if 'patches' in vm: + for p in vm['patches']: + print(self.tabs + "Patches : " + p) + + # db nodes + for db_node in vm['db_nodes']: + print(self.tabs + db_node['desc']) + if 'nsg_names' in db_node: + if db_node['nsg_names']: + print(self.tabs + " : SecGrp : " + db_node['nsg_names']) + + if 'time_maintenance_window_start' in db_node: + if db_node['maintenance_type'] != "None": + print(self.tabs + self.tabs + " Maintenance: " + db_node['maintenance_type'] + " " + db_node['time_maintenance_window_start'][0:16] + " - " + db_node['time_maintenance_window_end'][0:16]) + + # db homes + for db_home in vm['db_homes']: + print(self.tabs + "Home : " + db_home['home']) + + # patches + for p in db_home['patches']: + print(self.tabs + self.tabs + " PT : " + p) + + # databases + for db in db_home['databases']: + print(self.tabs + self.tabs + " DB : " + db['name']) + + # print data guard + for dg in db['dataguard']: + print(self.tabs + self.tabs + " " + dg['name']) + + # print backups + for backup in db['backups']: + print(self.tabs + self.tabs + " " + backup['name'] + " - " + backup['time'] + " - " + backup['size']) + + print(self.tabs + " : " + '-' * 90) + + except Exception as e: + self.__print_error("__print_database_db_exadata_infra", e) + ########################################################################## # print database db system ########################################################################## @@ -1032,6 +1150,11 @@ def __print_database_main(self, list_databases): if len(list_databases) == 0: return + if 'exadata_infrustructure' in list_databases: + self.print_header("Exadata Infrastructure", 2) + self.__print_database_db_exadata_infra(list_databases['exadata_infrustructure']) + print("") + if 'db_system' in list_databases: self.print_header("databases DB Systems", 2) self.__print_database_db_system(list_databases['db_system']) @@ -1535,8 +1658,12 @@ def __print_resource_management_main(self, resource_management): print(self.taba + str(val['stack_name'])) if 'jobs' in val: for job in val['jobs']: - print(self.tabs + str(job)) - + print(self.tabs + + str(job['display_name']) + " - " + + str(job['operation']).ljust(10) + " - " + + str(job['lifecycle_state']).ljust(10) + " - " + + str(job['time_finished'])[0:16] + ) print("") except Exception as e: @@ -2083,6 +2210,9 @@ def __summary_database_main(self, list_databases): if len(list_databases) == 0: return + if 'exadata_infrustructure' in list_databases: + self.__summary_database_db_exadata(list_databases['exadata_infrustructure']) + if 'db_system' in list_databases: self.__summary_database_db_system(list_databases['db_system']) @@ -2143,6 +2273,32 @@ def __summary_database_db_system(self, list_db_systems): except Exception as e: self.__print_error("__summary_database_db_system", e) + ########################################################################## + # Database Exadata + ########################################################################## + def __summary_database_db_exadata(self, list_exa): + + try: + for dbs in list_exa: + for vm in dbs['vm_clusters']: + if 'cpu_core_count' in vm: + self.summary_global_list.append({'type': 'Total OCPUs - ExaCS Database', 'size': float(vm['cpu_core_count'])}) + self.summary_global_list.append({'type': vm['sum_info'] + " OCPUs", 'size': float(vm['cpu_core_count'])}) + + # add db to summary + if dbs['lifecycle_state'] == 'STOPPED': + self.summary_global_list.append({'type': 'Stopped ' + vm['sum_info'], 'size': 1}) + else: + self.summary_global_list.append({'type': vm['sum_info'], 'size': 1}) + + # db homes + for db_home in vm['db_homes']: + for db in db_home['databases']: + self.__summary_core_size(db['backups']) + + except Exception as e: + self.__print_error("__summary_database_db_exadata", e) + ########################################################################## # Database mysql db system ########################################################################## @@ -2980,6 +3136,94 @@ def __csv_database_db_system(self, region_name, list_db_systems): except Exception as e: self.__print_error("__csv_database_db_system", e) + ########################################################################## + # csv database exadata + ########################################################################## + def __csv_database_db_exadata(self, region_name, list_exa): + + try: + for dbs in list_exa: + for vm in dbs['vm_clusters']: + # Db Exa CSV + dbsd = {'region_name': region_name, + 'availability_domain': dbs['availability_domain'], + 'compartment_name': dbs['compartment_name'], + 'status': dbs['lifecycle_state'], + 'type': "ExaCS", + 'name': dbs['display_name'], + 'shape': dbs['shape'], + 'cpu_core_count': vm['cpu_core_count'], + 'db_storage_gb': vm['sum_size_gb'], + 'shape_ocpus': dbs['shape_ocpu'], + 'memory_gb': dbs['shape_memory_gb'], + 'local_storage_tb': dbs['shape_storage_tb'], + 'node_count': len(vm['db_nodes']), + 'version_license_model': dbs['version'], + 'data_subnet': vm['data_subnet'], + 'backup_subnet': vm['backup_subnet'], + 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), + 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), + 'cluster_name': vm['cluster_name'], + 'time_created': vm['time_created'][0:16], + 'domain': vm['domain'], + 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), + 'freeform_tags': str(', '.join(key + "=" + vm['freeform_tags'][key] for key in vm['freeform_tags'].keys())), + 'defined_tags': self.__get_defined_tags(vm['defined_tags']), + 'maintenance_window': "", + 'last_maintenance_run': "", + 'next_maintenance_run': "", + 'dbsystem_id': vm['id'] + } + + if dbs['maintenance_window']: + dbsd['maintenance_window'] = dbs['maintenance_window']['display'] + if dbs['last_maintenance_run']: + dbsd['last_maintenance_run'] = dbs['last_maintenance_run']['maintenance_display'] + if dbs['next_maintenance_run']: + dbsd['next_maintenance_run'] = dbs['next_maintenance_run']['maintenance_display'] + + self.csv_db_system.append(dbsd) + + # Build the database CSV + for db_home in vm['db_homes']: + + for db in db_home['databases']: + + # Database CSV + data = {'region_name': region_name, + 'availability_domain': dbs['availability_domain'], + 'compartment_name': dbs['compartment_name'], + 'status': dbs['lifecycle_state'], + 'type': "ExaCS", + 'name': dbs['display_name'], + 'shape': dbs['shape'], + 'cpu_core_count': vm['cpu_core_count'], + 'db_storage_gb': dbs['sum_size_gb'], + 'shape_ocpus': dbs['shape_ocpu'], + 'memory_gb': dbs['shape_memory_gb'], + 'local_storage_tb': dbs['shape_storage_tb'], + 'node_count': len(vm['db_nodes']), + 'database': db['name'], + 'version_license_model': dbs['version'], + 'data_subnet': vm['data_subnet'], + 'backup_subnet': vm['backup_subnet'], + 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), + 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), + 'cluster_name': vm['cluster_name'], + 'time_created': vm['time_created'][0:16], + 'domain': vm['domain'], + 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), + 'freeform_tags': str(', '.join(key + "=" + vm['freeform_tags'][key] for key in vm['freeform_tags'].keys())), + 'defined_tags': self.__get_defined_tags(vm['defined_tags']), + 'database_id': db['id'], + 'dbsystem_id': vm['id'] + } + + self.csv_database.append(data) + + except Exception as e: + self.__print_error("__csv_database_db_exadata", e) + ########################################################################## # csv database db system ########################################################################## @@ -3088,6 +3332,9 @@ def __csv_database_main(self, region_name, list_databases): if len(list_databases) == 0: return + if 'exadata_infrustructure' in list_databases: + self.__csv_database_db_exadata(region_name, list_databases['exadata_infrustructure']) + if 'db_system' in list_databases: self.__csv_database_db_system(region_name, list_databases['db_system']) diff --git a/examples/showoci/showoci_service.py b/examples/showoci/showoci_service.py index 7288943ee4..c229f4a71a 100755 --- a/examples/showoci/showoci_service.py +++ b/examples/showoci/showoci_service.py @@ -224,6 +224,7 @@ class ShowOCIService(object): # database C_DATABASE = "database" C_DATABASE_DBSYSTEMS = "dbsystems" + C_DATABASE_EXADATA = "exadata" C_DATABASE_AUTONOMOUS = "autonomous" C_DATABASE_NOSQL = "nosql" C_DATABASE_MYSQL = "mysql" @@ -333,6 +334,7 @@ class ShowOCIService(object): {'shape': 'Exadata.Full3.400', 'cpu': 400, 'memory': 5760, 'storage': 598}, {'shape': 'Exadata.Half3.200', 'cpu': 200, 'memory': 2880, 'storage': 298}, {'shape': 'Exadata.Quarter3.100', 'cpu': 100, 'memory': 1440, 'storage': 149}, + {'shape': 'Exadata.X8M', 'cpu': 100, 'memory': 1440, 'storage': 149}, {'shape': 'Exadata.Base.48', 'cpu': 48, 'memory': 720, 'storage': 74.8}, {'shape': 'VM.CPU3.1', 'cpu': 6, 'memory': 90, 'storage': 0}, {'shape': 'VM.CPU3.2', 'cpu': 12, 'memory': 180, 'storage': 0}, @@ -624,7 +626,7 @@ def check_oci_version_compatible(self): print("Error, OCI SDK version " + self.oci_compatible_version + " required !") print("OCI SDK Version installed = " + self.get_oci_version()) print("Please use below command to upgrade OCI SDK:") - print(" pip install --upgrade oci") + print(" python -m pip install --upgrade oci") print("") print("Aboting.") print("*********************************************************************") @@ -2666,7 +2668,8 @@ def __load_core_network_nsg(self, virtual_network, compartments): try: arrsecs = oci.pagination.list_call_get_all_results( virtual_network.list_network_security_group_security_rules, - arr.id + arr.id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -2918,7 +2921,8 @@ def __load_core_network_dra(self, virtual_network, compartments): try: arrs = oci.pagination.list_call_get_all_results( virtual_network.list_drg_attachments, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -3445,12 +3449,14 @@ def __load_core_compute_instances(self, compute, compartments): arrs = oci.pagination.list_call_get_all_results( compute.list_instances, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data consoles = oci.pagination.list_call_get_all_results( compute.list_instance_console_connections, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -3585,7 +3591,8 @@ def __load_core_compute_images(self, compute, compartments): compute.list_images, compartment['id'], sort_by="DISPLAYNAME", - lifecycle_state=oci.core.models.Image.LIFECYCLE_STATE_AVAILABLE + lifecycle_state=oci.core.models.Image.LIFECYCLE_STATE_AVAILABLE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -3610,7 +3617,7 @@ def __load_core_compute_images(self, compute, compartments): 'region_name': str(self.config['region']), 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, - 'base_image_name': (str(compute.get_image(arr.base_image_id).data.display_name) if arr.base_image_id else "") + 'base_image_name': (str(compute.get_image(arr.base_image_id, retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY).data.display_name) if arr.base_image_id else "") } data.append(val) cnt += 1 @@ -3651,7 +3658,11 @@ def __load_core_compute_autoscaling(self, autoscaling, compute_manage, compartme autos = [] try: # pagination didn't work on auto scaling code - autos = oci.pagination.list_call_get_all_results(autoscaling.list_auto_scaling_configurations, compartment['id']).data + autos = oci.pagination.list_call_get_all_results( + autoscaling.list_auto_scaling_configurations, + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): @@ -3781,7 +3792,8 @@ def __load_core_compute_inst_config(self, compute, compute_manage, block_storage try: configs = oci.pagination.list_call_get_all_results( compute_manage.list_instance_configurations, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # inst pool and inst config service often goes down, not marking warning @@ -3896,7 +3908,8 @@ def __load_core_compute_inst_pool(self, compute_manage, compartments): try: pools = oci.pagination.list_call_get_all_results( compute_manage.list_instance_pools, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # inst pool and inst config service often goes down, not marking warning @@ -3965,7 +3978,8 @@ def __load_core_compute_boot_vol_attach(self, compute, compartments): arrs = oci.pagination.list_call_get_all_results( compute.list_boot_volume_attachments, ad['name'], - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -4017,7 +4031,8 @@ def __load_core_compute_vol_attach(self, compute, compartments): try: arrs = oci.pagination.list_call_get_all_results( compute.list_volume_attachments, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -4152,8 +4167,11 @@ def __load_core_compute_vnic_attach(self, compute, virtual_network, compartments arrs = [] try: - arrs = oci.pagination.list_call_get_all_results(compute.list_vnic_attachments, - compartment['id']).data + arrs = oci.pagination.list_call_get_all_results( + compute.list_vnic_attachments, + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): self.__load_print_auth_warning() @@ -4245,7 +4263,8 @@ def __load_core_block_boot(self, block_storage, compartments): boot_volumes = oci.pagination.list_call_get_all_results( block_storage.list_boot_volumes, ad['name'], - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -4318,7 +4337,8 @@ def __load_core_block_volume(self, block_storage, compartments): try: arrs = oci.pagination.list_call_get_all_results( block_storage.list_volumes, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -4398,7 +4418,9 @@ def __load_core_block_volume_group(self, block_storage, compartments): block_storage.list_volume_groups, compartment['id'], sort_by="DISPLAYNAME", - lifecycle_state=oci.core.models.VolumeGroup.LIFECYCLE_STATE_AVAILABLE).data + lifecycle_state=oci.core.models.VolumeGroup.LIFECYCLE_STATE_AVAILABLE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): @@ -4459,7 +4481,8 @@ def __load_core_block_boot_backup(self, block_storage, compartments): block_storage.list_boot_volume_backups, compartment['id'], sort_by="DISPLAYNAME", - lifecycle_state=oci.core.models.BootVolumeBackup.LIFECYCLE_STATE_AVAILABLE + lifecycle_state=oci.core.models.BootVolumeBackup.LIFECYCLE_STATE_AVAILABLE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -4534,7 +4557,9 @@ def __load_core_block_volume_backup(self, block_storage, compartments): block_storage.list_volume_backups, compartment['id'], sort_by="DISPLAYNAME", - lifecycle_state=oci.core.models.VolumeBackup.LIFECYCLE_STATE_AVAILABLE).data + lifecycle_state=oci.core.models.VolumeBackup.LIFECYCLE_STATE_AVAILABLE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): @@ -5066,7 +5091,9 @@ def __load_object_storage_buckets(self, object_storage, compartments): namespace_name = object_storage.get_namespace().data buckets = oci.pagination.list_call_get_all_results( object_storage.list_buckets, - namespace_name, compartment['id'] + namespace_name, + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5210,7 +5237,8 @@ def __load_resource_management_stacks(self, orm, compartments): stacks = oci.pagination.list_call_get_all_results( orm.list_stacks, compartment_id=compartment['id'], lifecycle_state=oci.resource_manager.models.Stack.LIFECYCLE_STATE_ACTIVE, - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5233,8 +5261,12 @@ def __load_resource_management_stacks(self, orm, compartments): # check jobs try: - jobs = oci.pagination.list_call_get_all_results(orm.list_jobs, stack_id=stack.id, - sort_by="TIMECREATED").data + jobs = oci.pagination.list_call_get_all_results( + orm.list_jobs, + stack_id=stack.id, + sort_by="TIMECREATED", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): self.__load_print_auth_warning() @@ -5329,8 +5361,10 @@ def __load_email_senders(self, email, compartments): senders = [] try: senders = oci.pagination.list_call_get_all_results( - email.list_senders, compartment['id'], - sort_by="EMAILADDRESS" + email.list_senders, + compartment['id'], + sort_by="EMAILADDRESS", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5501,7 +5535,8 @@ def __load_file_storage_filesystems(self, file_storage, compartments): file_storage.list_file_systems, compartment['id'], ad['name'], lifecycle_state=oci.file_storage.models.FileSystemSummary.LIFECYCLE_STATE_ACTIVE, - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5525,7 +5560,8 @@ def __load_file_storage_filesystems(self, file_storage, compartments): snapshots = oci.pagination.list_call_get_all_results( file_storage.list_snapshots, str(fs.id), - lifecycle_state=oci.file_storage.models.SnapshotSummary.LIFECYCLE_STATE_ACTIVE + lifecycle_state=oci.file_storage.models.SnapshotSummary.LIFECYCLE_STATE_ACTIVE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data for snap in snapshots: @@ -5579,7 +5615,9 @@ def __load_file_storage_mount_targets(self, file_storage, virtual_network, compa file_storage.list_mount_targets, compartment['id'], ad['name'], lifecycle_state=oci.file_storage.models.MountTargetSummary.LIFECYCLE_STATE_ACTIVE, - sort_by="DISPLAYNAME").data + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.ServiceError as e: if self.__check_service_error(e.code): @@ -5639,7 +5677,8 @@ def __load_file_storage_exports(self, file_storage, compartments): file_storage.list_exports, compartment_id=compartment['id'], lifecycle_state=oci.file_storage.models.ExportSummary.LIFECYCLE_STATE_ACTIVE, - sort_by="PATH" + sort_by="PATH", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5727,6 +5766,7 @@ def __load_database_main(self): # add the key if not exists self.__initialize_data_key(self.C_DATABASE, self.C_DATABASE_DBSYSTEMS) + self.__initialize_data_key(self.C_DATABASE, self.C_DATABASE_EXADATA) self.__initialize_data_key(self.C_DATABASE, self.C_DATABASE_AUTONOMOUS) self.__initialize_data_key(self.C_DATABASE, self.C_DATABASE_NOSQL) self.__initialize_data_key(self.C_DATABASE, self.C_DATABASE_MYSQL) @@ -5735,6 +5775,7 @@ def __load_database_main(self): db = self.data[self.C_DATABASE] # append the data + db[self.C_DATABASE_EXADATA] += self.__load_database_exadata_infrastructure(database_client, virtual_network, compartments) db[self.C_DATABASE_DBSYSTEMS] += self.__load_database_dbsystems(database_client, virtual_network, compartments) db[self.C_DATABASE_AUTONOMOUS] += self.__load_database_autonomouns(database_client, compartments) db[self.C_DATABASE_NOSQL] += self.__load_database_nosql(nosql_client, compartments) @@ -5815,6 +5856,257 @@ def __load_database_maintatance_windows(self, maintenance_window): except Exception as e: self.__print_error("__load_database_maintatance_windows", e) + ########################################################################## + # __load_database_exadata_infrastructure + ########################################################################## + + def __load_database_exadata_infrastructure(self, database_client, virtual_network, compartments): + + data = [] + cnt = 0 + start_time = time.time() + + try: + + self.__load_print_status("Exadata Infrastructure") + + # loop on all compartments + for compartment in compartments: + # skip managed paas compartment + if self.__if_managed_paas_compartment(compartment['name']): + print(".", end="") + continue + + print(".", end="") + + # list db system + list_exa = [] + try: + list_exa = oci.pagination.list_call_get_all_results( + database_client.list_cloud_exadata_infrastructures, + compartment['id'], + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + + except oci.exceptions.ServiceError as e: + if self.__check_service_error(e.code): + self.__load_print_auth_warning() + continue + else: + raise + + # loop on the Exadata infrastructure + # dbs = oci.database.models.CloudExadataInfrastructureSummary + for dbs in list_exa: + if (dbs.lifecycle_state == oci.database.models.CloudExadataInfrastructureSummary.LIFECYCLE_STATE_TERMINATED or + dbs.lifecycle_state == oci.database.models.CloudExadataInfrastructureSummary.LIFECYCLE_STATE_TERMINATING): + continue + + value = {'id': str(dbs.id), + 'display_name': str(dbs.display_name), + 'shape': str(dbs.shape), + 'shape_ocpu': 0, + 'shape_memory_gb': 0, + 'shape_storage_tb': 0, + 'version': 'XP', + 'lifecycle_state': str(dbs.lifecycle_state), + 'lifecycle_details': str(dbs.lifecycle_details), + 'availability_domain': str(dbs.availability_domain), + 'compute_count': str(dbs.compute_count), + 'storage_count': str(dbs.storage_count), + 'total_storage_size_in_gbs': str(dbs.total_storage_size_in_gbs), + 'available_storage_size_in_gbs': str(dbs.available_storage_size_in_gbs), + 'compartment_name': str(compartment['name']), + 'compartment_id': str(compartment['id']), + 'time_created': str(dbs.time_created), + 'last_maintenance_run': self.__load_database_maintatance(database_client, dbs.last_maintenance_run_id, str(dbs.display_name) + " - " + str(dbs.shape)), + 'next_maintenance_run': self.__load_database_maintatance(database_client, dbs.next_maintenance_run_id, str(dbs.display_name) + " - " + str(dbs.shape)), + 'maintenance_window': self.__load_database_maintatance_windows(dbs.maintenance_window), + 'defined_tags': [] if dbs.defined_tags is None else dbs.defined_tags, + 'freeform_tags': [] if dbs.freeform_tags is None else dbs.freeform_tags, + 'region_name': str(self.config['region']), + 'vm_clusters': self.__load_database_exadata_vm_clusters(database_client, virtual_network, dbs.id, compartment) + } + + # get shape + if dbs.shape: + shape_sizes = self.get_shape_details(str(dbs.shape)) + if shape_sizes: + value['shape_ocpu'] = shape_sizes['cpu'] + value['shape_memory_gb'] = shape_sizes['memory'] + value['shape_storage_tb'] = shape_sizes['storage'] + + # if x8m calculate ocpu and storage + if dbs.shape == "Exadata.X8M": + if dbs.compute_count != "2" or dbs.storage_count != "3": + value['shape_ocpu'] = dbs.compute_count * 50 + value['shape_storage_tb'] = dbs.storage_count * 49.5 + value['shape_memory_gb'] = dbs.compute_count * 720 + + # add the data + cnt += 1 + data.append(value) + + self.__load_print_cnt(cnt, start_time) + return data + + except oci.exceptions.RequestException as e: + if self.__check_request_error(e): + return data + raise + except Exception as e: + self.__print_error("__load_database_exadata_infrastructure", e) + return data + + ########################################################################## + # __load_database_exadata_vm_clusters + ########################################################################## + def __load_database_exadata_vm_clusters(self, database_client, virtual_network, exa_id, compartment): + + data = [] + try: + vms = database_client.list_cloud_vm_clusters( + compartment['id'], + cloud_exadata_infrastructure_id=exa_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + + # arr = oci.database.models.CloudVmClusterSummary + for arr in vms: + if (arr.lifecycle_state == oci.database.models.CloudVmClusterSummary.LIFECYCLE_STATE_TERMINATED or + arr.lifecycle_state == oci.database.models.CloudVmClusterSummary.LIFECYCLE_STATE_TERMINATING): + continue + + value = { + 'id': str(arr.id), + 'cluster_name': str(arr.cluster_name), + 'hostname': str(arr.hostname), + 'compartment_id': str(arr.compartment_id), + 'availability_domain': str(arr.availability_domain), + 'data_subnet_id': str(arr.subnet_id), + 'data_subnet': self.get_network_subnet(str(arr.subnet_id), True), + 'backup_subnet_id': str(arr.backup_subnet_id), + 'backup_subnet': "" if arr.backup_subnet_id is None else self.get_network_subnet(str(arr.backup_subnet_id), True), + 'nsg_ids': str(arr.nsg_ids), + 'backup_network_nsg_ids': str(arr.backup_network_nsg_ids), + 'last_update_history_entry_id': str(arr.last_update_history_entry_id), + 'shape': str(arr.shape), + 'listener_port': str(arr.listener_port), + 'lifecycle_state': str(arr.lifecycle_state), + 'node_count': str(arr.node_count), + 'storage_size_in_gbs': str(arr.storage_size_in_gbs), + 'display_name': str(arr.display_name), + 'time_created': str(arr.time_created), + 'lifecycle_details': str(arr.lifecycle_details), + 'time_zone': str(arr.time_zone), + 'domain': str(arr.domain), + 'cpu_core_count': str(arr.cpu_core_count), + 'data_storage_percentage': str(arr.data_storage_percentage), + 'is_local_backup_enabled': str(arr.is_local_backup_enabled), + 'is_sparse_diskgroup_enabled': str(arr.is_sparse_diskgroup_enabled), + 'gi_version': str(arr.gi_version), + 'system_version': str(arr.system_version), + 'ssh_public_keys': str(arr.ssh_public_keys), + 'license_model': str(arr.license_model), + 'disk_redundancy': str(arr.disk_redundancy), + 'scan_ip_ids': str(arr.scan_ip_ids), + 'vip_ids': str(arr.vip_ids), + 'scan_dns_record_id': str(arr.scan_dns_record_id), + 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, + 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, + 'patches': [], + 'db_homes': self.__load_database_dbsystems_dbhomes(database_client, virtual_network, compartment, arr.id, exa=True), + 'db_nodes': self.__load_database_dbsystems_dbnodes(database_client, virtual_network, compartment, arr.id, exa=True), + 'region_name': str(self.config['region']), + 'scan_ips': [], + 'vip_ips': [] + } + + # Skip the patches, there is an issue with the api for the vm cluster + # value['patches'] = self.__load_database_exadata_vm_patches(database_client, arr.id), + + # get shape + if arr.shape: + shape_sizes = self.get_shape_details(str(arr.shape)) + if shape_sizes: + value['shape_ocpu'] = shape_sizes['cpu'] + value['shape_memory_gb'] = shape_sizes['memory'] + value['shape_storage_tb'] = shape_sizes['storage'] + + # license model + if arr.license_model == oci.database.models.CloudVmClusterSummary.LICENSE_MODEL_LICENSE_INCLUDED: + value['license_model'] = "INCL" + elif arr.license_model == oci.database.models.CloudVmClusterSummary.LICENSE_MODEL_BRING_YOUR_OWN_LICENSE: + value['license_model'] = "BYOL" + else: + value['license_model'] = str(arr.license_model) + + # scan IPs + if arr.scan_ip_ids is not None: + scan_ips = [] + for scan_ip in arr.scan_ip_ids: + scan_ips.append(self.__load_core_network_single_privateip(virtual_network, scan_ip)) + value['scan_ips'] = scan_ips + + # VIPs + if arr.vip_ids is not None: + vip_ips = [] + for vipip in arr.vip_ids: + vip_ips.append(self.__load_core_network_single_privateip(virtual_network, vipip)) + value['vip_ips'] = vip_ips + + # add to main data + data.append(value) + + return data + + except oci.exceptions.ServiceError as e: + if self.__check_service_error(e.code): + self.__load_print_auth_warning() + return data + else: + raise + except oci.exceptions.RequestException as e: + if self.__check_request_error(e): + return data + raise + except Exception as e: + self.__print_error("__load_database_exadata_vm_clusters", e) + return data + + ########################################################################## + # __load_database_exadata_vm_patches + ########################################################################## + def __load_database_exadata_vm_patches(self, database_client, vm_id): + + data = [] + try: + dbps = oci.pagination.list_call_get_all_results( + database_client.list_vm_cluster_patches, + vm_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + + for dbp in dbps: + data.append({'id': dbp.id, 'description': str(dbp.description), + 'version': str(dbp.version), 'time_released': str(dbp.time_released), + 'last_action': str(dbp.last_action)}) + return data + + except oci.exceptions.ServiceError as e: + if self.__check_service_error(e.code): + return data + else: + raise + except oci.exceptions.RequestException as e: + if self.__check_request_error(e): + return data + raise + except Exception as e: + self.__print_error("__load_database_exadata_vm_patches", e) + return data + ########################################################################## # __load_database_dbsystems ########################################################################## @@ -5844,7 +6136,8 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen list_db_systems = oci.pagination.list_call_get_all_results( database_client.list_db_systems, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -5857,7 +6150,7 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen # loop on the db systems # dbs = oci.database.models.DbSystemSummary for dbs in list_db_systems: - if dbs.lifecycle_state == oci.database.models.DbSystemSummary.LIFECYCLE_STATE_TERMINATED: + if (dbs.lifecycle_state == oci.database.models.DbSystemSummary.LIFECYCLE_STATE_TERMINATED or dbs.lifecycle_state == "MIGRATED"): continue value = {'id': str(dbs.id), @@ -5896,8 +6189,9 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen 'defined_tags': [] if dbs.defined_tags is None else dbs.defined_tags, 'freeform_tags': [] if dbs.freeform_tags is None else dbs.freeform_tags, 'patches': self.__load_database_dbsystems_patches(database_client, dbs.id), - 'db_nodes': self.__load_database_dbsystems_dbnodes(database_client, virtual_network, dbs.id, compartment), - 'db_homes': self.__load_database_dbsystems_dbhomes(database_client, virtual_network, dbs.id, compartment)} + 'db_nodes': self.__load_database_dbsystems_dbnodes(database_client, virtual_network, compartment, dbs.id), + 'db_homes': self.__load_database_dbsystems_dbhomes(database_client, virtual_network, compartment, dbs.id) + } # get shape if dbs.shape: @@ -5964,13 +6258,28 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen return data ########################################################################## - # __load_database_dbsystems_dbnodes + # __load_database_exadata_infrastructure ########################################################################## - def __load_database_dbsystems_dbnodes(self, database_client, virtual_network, dbs_id, compartment): + def __load_database_dbsystems_dbnodes(self, database_client, virtual_network, compartment, dbs_id, exa=False): data = [] - try: - db_nodes = database_client.list_db_nodes(compartment['id'], db_system_id=dbs_id).data + db_nodes = [] + api_call = "" + try: + if not exa: + api_call = "database_client.list_db_nodes with db_system_id" + db_nodes = database_client.list_db_nodes( + compartment['id'], + db_system_id=dbs_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + else: + api_call = "database_client.list_db_nodes with vm_cluster_id" + db_nodes = database_client.list_db_nodes( + compartment['id'], + vm_cluster_id=dbs_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data # db_node = oci.database.models.DbNodeSummary for db_node in db_nodes: @@ -6000,23 +6309,43 @@ def __load_database_dbsystems_dbnodes(self, database_client, virtual_network, db self.__load_print_auth_warning() return data else: + print("Error at API " + api_call) raise except oci.exceptions.RequestException as e: if self.__check_request_error(e): return data - raise + else: + print("Error at API " + api_call) + raise except Exception as e: - self.__print_error("__load_database_dbsystems_dbnodes", e) + self.__print_error("__load_database_dbsystems_dbnodes, API=" + api_call, e) return data ########################################################################## # __load_database_dbsystems_dbhomes ########################################################################## - def __load_database_dbsystems_dbhomes(self, database_client, virtual_network, dbs_id, compartment): + def __load_database_dbsystems_dbhomes(self, database_client, virtual_network, compartment, dbs_id, exa=False): data = [] - try: - db_homes = oci.pagination.list_call_get_all_results(database_client.list_db_homes, compartment['id'], db_system_id=dbs_id).data + db_homes = [] + api_call = "" + try: + if not exa: + api_call = "database_client.list_db_homes with db_system_id" + db_homes = oci.pagination.list_call_get_all_results( + database_client.list_db_homes, + compartment['id'], + db_system_id=dbs_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + else: + api_call = "database_client.list_db_homes with vm_cluster_id" + db_homes = oci.pagination.list_call_get_all_results( + database_client.list_db_homes, + compartment['id'], + vm_cluster_id=dbs_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data # db_home = oci.database.models.DbHomeSummary for db_home in db_homes: @@ -6027,6 +6356,7 @@ def __load_database_dbsystems_dbhomes(self, database_client, virtual_network, db 'last_patch_history_entry_id': str(db_home.last_patch_history_entry_id), 'lifecycle_state': str(db_home.lifecycle_state), 'db_system_id': str(db_home.db_system_id), + 'vm_cluster_id': str(db_home.vm_cluster_id), 'db_version': str(db_home.db_version), 'time_created': str(db_home.time_created), 'databases': self.__load_database_dbsystems_dbhomes_databases(database_client, db_home.id, compartment), @@ -6040,13 +6370,16 @@ def __load_database_dbsystems_dbhomes(self, database_client, virtual_network, db self.__load_print_auth_warning("h") return data else: + print("Error at API " + api_call) raise except oci.exceptions.RequestException as e: if self.__check_request_error(e): return data - raise + else: + print("Error at API " + api_call) + raise except Exception as e: - self.__print_error("__load_database_dbsystems_dbhomess", e) + self.__print_error("__load_database_dbsystems_dbhomess, API=" + api_call, e) return data ########################################################################## @@ -6061,7 +6394,8 @@ def __load_database_dbsystems_dbhomes_databases(self, database_client, db_home_i database_client.list_databases, compartment['id'], db_home_id=db_home_id, - sort_by="DBNAME" + sort_by="DBNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # db = oci.database.models.DatabaseSummary @@ -6121,7 +6455,8 @@ def __load_database_dbsystems_home_patches(self, database_client, dbhome_id): try: dbps = oci.pagination.list_call_get_all_results( database_client.list_db_home_patches, - dbhome_id + dbhome_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data for dbp in dbps: @@ -6153,7 +6488,11 @@ def __load_database_dbsystems_patches(self, database_client, dbs_id): data = [] try: - dbps = oci.pagination.list_call_get_all_results(database_client.list_db_system_patches, dbs_id).data + dbps = oci.pagination.list_call_get_all_results( + database_client.list_db_system_patches, + dbs_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data for dbp in dbps: data.append({'id': dbp.id, 'description': str(dbp.description), @@ -6181,7 +6520,11 @@ def __load_database_dbsystems_db_backups(self, database_client, db_id): data = [] try: - backups = oci.pagination.list_call_get_all_results(database_client.list_backups, database_id=db_id).data + backups = oci.pagination.list_call_get_all_results( + database_client.list_backups, + database_id=db_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data for backup in backups: data.append( @@ -6216,7 +6559,11 @@ def __load_database_dbsystems_db_dg(self, database_client, db_id): data = [] try: - dgs = oci.pagination.list_call_get_all_results(database_client.list_data_guard_associations, database_id=db_id).data + dgs = oci.pagination.list_call_get_all_results( + database_client.list_data_guard_associations, + database_id=db_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data # dg = oci.database.models.DataGuardAssociationSummary for dg in dgs: @@ -6294,7 +6641,8 @@ def __load_database_autonomouns(self, database_client, compartments): list_autos = oci.pagination.list_call_get_all_results( database_client.list_autonomous_databases, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -6496,7 +6844,8 @@ def __load_database_mysql(self, mysql_client, compartments): databases = oci.pagination.list_call_get_all_results( mysql_client.list_db_systems, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # mysql throw service error often, ignoring incase it does @@ -6597,7 +6946,8 @@ def __load_database_autonomouns_backups(self, database_client, db_id): backups = oci.pagination.list_call_get_all_results( database_client.list_autonomous_database_backups, autonomous_database_id=db_id, - sort_by="TIMECREATED" + sort_by="TIMECREATED", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # backup = oci.database.models.AutonomousDatabaseBackupSummary @@ -6690,8 +7040,10 @@ def __load_container_node_pools(self, container_client, compartments): try: list_clusters = oci.pagination.list_call_get_all_results( - container_client.list_node_pools, compartment['id'], - sort_by="NAME" + container_client.list_node_pools, + compartment['id'], + sort_by="NAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -6753,8 +7105,10 @@ def __load_container_clusters(self, container_client, compartments): try: list_clusters = oci.pagination.list_call_get_all_results( - container_client.list_clusters, compartment['id'], - sort_by="NAME" + container_client.list_clusters, + compartment['id'], + sort_by="NAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -6854,7 +7208,8 @@ def __load_streams_streams(self, stream_client, compartments): streams = oci.pagination.list_call_get_all_results( stream_client.list_streams, compartment_id=compartment['id'], sort_by="NAME", - lifecycle_state=oci.streaming.models.StreamSummary.LIFECYCLE_STATE_ACTIVE + lifecycle_state=oci.streaming.models.StreamSummary.LIFECYCLE_STATE_ACTIVE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -6954,7 +7309,8 @@ def __load_api_gateways(self, api_client, compartments): try: apigs = oci.pagination.list_call_get_all_results( api_client.list_gateways, compartment_id=compartment['id'], - lifecycle_state="ACTIVE" + lifecycle_state="ACTIVE", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7062,7 +7418,8 @@ def __load_functions_applications(self, function_client, compartments): apps = oci.pagination.list_call_get_all_results( function_client.list_applications, compartment_id=compartment['id'], sort_by="displayName", - lifecycle_state='ACTIVE' + lifecycle_state='ACTIVE', + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7157,7 +7514,8 @@ def __load_budgets_budgets(self, budget_client, tenancy_id): budgets = oci.pagination.list_call_get_all_results( budget_client.list_budgets, tenancy_id, - lifecycle_state=oci.budget.models.BudgetSummary.LIFECYCLE_STATE_ACTIVE + lifecycle_state=oci.budget.models.BudgetSummary.LIFECYCLE_STATE_ACTIVE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7300,7 +7658,8 @@ def __load_monitoring_events(self, event_client, compartments): event_client.list_rules, compartment['id'], sort_by="DISPLAY_NAME", - lifecycle_state="ACTIVE" + lifecycle_state="ACTIVE", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7368,7 +7727,8 @@ def __load_monitoring_alarms(self, monitor_client, compartments): monitor_client.list_alarms, compartment['id'], sort_by="displayName", - lifecycle_state=oci.monitoring.models.Alarm.LIFECYCLE_STATE_ACTIVE + lifecycle_state=oci.monitoring.models.Alarm.LIFECYCLE_STATE_ACTIVE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7438,7 +7798,8 @@ def __load_notifications_topics(self, ons_cp_client, compartments): ons_cp_client.list_topics, compartment['id'], sort_by="TIMECREATED", - lifecycle_state=oci.ons.models.NotificationTopicSummary.LIFECYCLE_STATE_ACTIVE + lifecycle_state=oci.ons.models.NotificationTopicSummary.LIFECYCLE_STATE_ACTIVE, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7504,7 +7865,8 @@ def __load_notifications_subscriptions(self, ons_dp_client, compartments): try: subs = oci.pagination.list_call_get_all_results( ons_dp_client.list_subscriptions, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7633,7 +7995,8 @@ def __load_edge_healthchecks_ping(self, healthcheck_client, compartments): healthchecks = oci.pagination.list_call_get_all_results( healthcheck_client.list_ping_monitors, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7713,7 +8076,8 @@ def __load_edge_healthchecks_http(self, healthcheck_client, compartments): healthchecks = oci.pagination.list_call_get_all_results( healthcheck_client.list_http_monitors, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7801,7 +8165,8 @@ def __load_edge_dns_zone(self, dns_client, compartments): dns_client.list_zones, compartment['id'], lifecycle_state=oci.dns.models.ZoneSummary.LIFECYCLE_STATE_ACTIVE, - sort_by="name" + sort_by="name", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7872,7 +8237,8 @@ def __load_edge_dns_steering(self, dns_client, compartments): dns_client.list_steering_policies, compartment['id'], lifecycle_state=oci.dns.models.SteeringPolicySummary.LIFECYCLE_STATE_ACTIVE, - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -7941,7 +8307,8 @@ def __load_edge_waas_policies(self, waas, compartments): array = oci.pagination.list_call_get_all_results( waas.list_waas_policies, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8069,7 +8436,8 @@ def __load_data_ai_catalog(self, dc_client, compartments): array = oci.pagination.list_call_get_all_results( dc_client.list_catalogs, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8143,7 +8511,8 @@ def __load_data_ai_science(self, ds_client, compartments): array = oci.pagination.list_call_get_all_results( ds_client.list_projects, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8216,7 +8585,8 @@ def __load_data_ai_flow(self, df_client, compartments): array = oci.pagination.list_call_get_all_results( df_client.list_applications, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8290,7 +8660,8 @@ def __load_data_ai_oda(self, oda_client, compartments): try: odas = oci.pagination.list_call_get_all_results( oda_client.list_oda_instances, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8363,7 +8734,8 @@ def __load_data_ai_bds(self, bds_client, compartments): try: bdss = oci.pagination.list_call_get_all_results( bds_client.list_bds_instances, - compartment['id'] + compartment['id'], + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data # TBD: don't add warning count until GA on the service @@ -8490,7 +8862,8 @@ def __load_paas_oic(self, oic_client, compartments): oics = oci.pagination.list_call_get_all_results( oic_client.list_integration_instances, compartment['id'], - sort_by="DISPLAYNAME" + sort_by="DISPLAYNAME", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8564,7 +8937,8 @@ def __load_paas_oac(self, oac_client, compartments): oacs = oci.pagination.list_call_get_all_results( oac_client.list_analytics_instances, compartment['id'], - sort_by="name" + sort_by="name", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8640,7 +9014,8 @@ def __load_paas_oce(self, oce_client, compartments): oces = oci.pagination.list_call_get_all_results( oce_client.list_oce_instances, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -8873,7 +9248,13 @@ def __load_limits(self, limits_client, tenancy_id, compartments): # get the limits per service limits = [] try: - limits = oci.pagination.list_call_get_all_results(limits_client.list_limit_values, tenancy_id, service_name=service.name, sort_by="name").data + limits = oci.pagination.list_call_get_all_results( + limits_client.list_limit_values, + tenancy_id, + service_name=service.name, + sort_by="name", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data except oci.exceptions.Exception as e: if self.__check_service_error(e.code): self.__load_print_auth_warning("a", False) @@ -9088,7 +9469,8 @@ def __load_security_cloud_guard(self, cg_client, compartments): array = oci.pagination.list_call_get_all_results( cg_client.list_targets, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -9164,7 +9546,8 @@ def __load_security_log_groups(self, log_client, compartments): array = oci.pagination.list_call_get_all_results( log_client.list_log_groups, compartment['id'], - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: @@ -9204,7 +9587,8 @@ def __load_security_log_groups(self, log_client, compartments): logs = oci.pagination.list_call_get_all_results( log_client.list_logs, item.id, - sort_by="displayName" + sort_by="displayName", + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY ).data except oci.exceptions.ServiceError as e: diff --git a/src/oci/database/database_client.py b/src/oci/database/database_client.py index ae0587b3d8..114d1ca0eb 100644 --- a/src/oci/database/database_client.py +++ b/src/oci/database/database_client.py @@ -89,7 +89,7 @@ def __init__(self, config, **kwargs): def activate_exadata_infrastructure(self, exadata_infrastructure_id, activate_exadata_infrastructure_details, **kwargs): """ - Activates the specified Exadata Cloud@Customer infrastructure. + Activates the specified Exadata infrastructure resource. Applies to Exadata Cloud@Customer instances only. :param str exadata_infrastructure_id: (required) @@ -768,8 +768,9 @@ def change_backup_destination_compartment(self, change_compartment_details, back def change_cloud_exadata_infrastructure_compartment(self, change_cloud_exadata_infrastructure_compartment_details, cloud_exadata_infrastructure_id, **kwargs): """ - To move a cloud Exadata infrastructure resource and its dependent resources to another compartment, use the - :func:`change_cloud_exadata_infrastructure_compartment` operation. + Moves a cloud Exadata infrastructure resource and its dependent resources to another compartment. Applies to Exadata Cloud Service instances only. For more information about moving resources to a different compartment, see `Moving Database Resources to a Different Compartment`__. + + __ https://docs.cloud.oracle.com/Content/Database/Concepts/databaseoverview.htm#moveRes :param oci.database.models.ChangeCloudExadataInfrastructureCompartmentDetails change_cloud_exadata_infrastructure_compartment_details: (required) @@ -864,8 +865,7 @@ def change_cloud_exadata_infrastructure_compartment(self, change_cloud_exadata_i def change_cloud_vm_cluster_compartment(self, change_cloud_vm_cluster_compartment_details, cloud_vm_cluster_id, **kwargs): """ - To move a cloud VM cluster and its dependent resources to another compartment, use the - :func:`change_cloud_vm_cluster_compartment` operation. + Moves a cloud VM cluster and its dependent resources to another compartment. Applies to Exadata Cloud Service instances only. :param oci.database.models.ChangeCloudVmClusterCompartmentDetails change_cloud_vm_cluster_compartment_details: (required) @@ -1059,7 +1059,7 @@ def change_database_software_image_compartment(self, change_compartment_details, def change_db_system_compartment(self, change_compartment_details, db_system_id, **kwargs): """ - Move the DB system and its dependent resources to the specified compartment. + Moves the DB system and its dependent resources to the specified compartment. For more information about moving DB systems, see `Moving Database Resources to a Different Compartment`__. @@ -1158,8 +1158,8 @@ def change_db_system_compartment(self, change_compartment_details, db_system_id, def change_exadata_infrastructure_compartment(self, change_exadata_infrastructure_compartment_details, exadata_infrastructure_id, **kwargs): """ - To move an Exadata Cloud@Customer infrastructure resource and its dependent resources to another compartment, use the - :func:`change_exadata_infrastructure_compartment` operation. + Moves an Exadata infrastructure resource and its dependent resources to another compartment. Applies to Exadata Cloud@Customer instances only. + To move an Exadata Cloud Service infrastructure resource to another compartment, use the :func:`change_cloud_exadata_infrastructure_compartment` operation. :param oci.database.models.ChangeExadataInfrastructureCompartmentDetails change_exadata_infrastructure_compartment_details: (required) @@ -1353,8 +1353,8 @@ def change_key_store_compartment(self, change_key_store_compartment_details, key def change_vm_cluster_compartment(self, change_vm_cluster_compartment_details, vm_cluster_id, **kwargs): """ - To move an Exadata Cloud@Customer VM cluster and its dependent resources to another compartment, use the - :func:`change_vm_cluster_compartment` operation. + Moves a VM cluster and its dependent resources to another compartment. Applies to Exadata Cloud@Customer instances only. + To move a cloud VM cluster in an Exadata Cloud Service instance to another compartment, use the :func:`change_cloud_vm_cluster_compartment` operation. :param oci.database.models.ChangeVmClusterCompartmentDetails change_vm_cluster_compartment_details: (required) @@ -2109,11 +2109,15 @@ def create_backup_destination(self, create_backup_destination_details, **kwargs) def create_cloud_exadata_infrastructure(self, create_cloud_exadata_infrastructure_details, **kwargs): """ - Creates a cloud Exadata infrastructure resource. + Creates a cloud Exadata infrastructure resource. This resource is used to create an `Exadata Cloud Service`__ instance. + + __ https://docs.cloud.oracle.com/Content/Database/Concepts/exaoverview.htm :param oci.database.models.CreateCloudExadataInfrastructureDetails create_cloud_exadata_infrastructure_details: (required) - Request to create cloud Exadata infrastructure. + Request to create a cloud Exadata infrastructure resource in an `Exadata Cloud Service`__ instance. + + __ https://docs.cloud.oracle.com/Content/Database/Concepts/exaoverview.htm :param str opc_retry_token: (optional) A token that uniquely identifies a request so it can be retried in case of a timeout or @@ -2186,7 +2190,9 @@ def create_cloud_vm_cluster(self, create_cloud_vm_cluster_details, **kwargs): :param oci.database.models.CreateCloudVmClusterDetails create_cloud_vm_cluster_details: (required) - Request to create a cloud VM cluster. + Request to create a cloud VM cluster. Applies to Exadata Cloud Service instances only. See `The New Exadata Cloud Service Resource Model`__ for information on this resource type. + + __ https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/exaflexsystem.htm#exaflexsystem_topic-resource_model :param str opc_retry_token: (optional) A token that uniquely identifies a request so it can be retried in case of a timeout or @@ -2646,7 +2652,8 @@ def create_db_home(self, create_db_home_with_db_system_id_details, **kwargs): def create_exadata_infrastructure(self, create_exadata_infrastructure_details, **kwargs): """ - Creates Exadata Cloud@Customer infrastructure. + Creates an Exadata infrastructure resource. Applies to Exadata Cloud@Customer instances only. + To create an Exadata Cloud Service infrastructure resource, use the :func:`create_cloud_exadata_infrastructure` operation. :param oci.database.models.CreateExadataInfrastructureDetails create_exadata_infrastructure_details: (required) @@ -2868,7 +2875,8 @@ def create_vm_cluster(self, create_vm_cluster_details, **kwargs): :param oci.database.models.CreateVmClusterDetails create_vm_cluster_details: (required) - Request to create an Exadata Cloud@Customer VM cluster. + Request to create a VM cluster. Applies to Exadata Cloud@Customer instances only. + See :func:`create_cloud_vm_cluster_details` for details on creating a cloud VM cluster in an Exadata Cloud Service instance. :param str opc_retry_token: (optional) A token that uniquely identifies a request so it can be retried in case of a timeout or @@ -2937,7 +2945,8 @@ def create_vm_cluster(self, create_vm_cluster_details, **kwargs): def create_vm_cluster_network(self, exadata_infrastructure_id, vm_cluster_network_details, **kwargs): """ - Creates the Exadata Cloud@Customer VM cluster network. + Creates the VM cluster network. Applies to Exadata Cloud@Customer instances only. + To create a cloud VM cluster in an Exadata Cloud Service instance, use the :func:`create_cloud_vm_cluster` operation. :param str exadata_infrastructure_id: (required) @@ -3523,7 +3532,7 @@ def delete_backup_destination(self, backup_destination_id, **kwargs): def delete_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, **kwargs): """ - Deletes the cloud Exadata infrastructure resource. + Deletes the cloud Exadata infrastructure resource. Applies to Exadata Cloud Service instances only. :param str cloud_exadata_infrastructure_id: (required) @@ -3613,7 +3622,7 @@ def delete_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, * def delete_cloud_vm_cluster(self, cloud_vm_cluster_id, **kwargs): """ - Deletes the specified cloud VM cluster. + Deletes the specified cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -4189,7 +4198,7 @@ def delete_key_store(self, key_store_id, **kwargs): def delete_vm_cluster(self, vm_cluster_id, **kwargs): """ - Deletes the specified Exadata Cloud@Customer VM cluster. + Deletes the specified VM cluster. Applies to Exadata Cloud@Customer instances only. :param str vm_cluster_id: (required) @@ -4268,7 +4277,8 @@ def delete_vm_cluster(self, vm_cluster_id, **kwargs): def delete_vm_cluster_network(self, exadata_infrastructure_id, vm_cluster_network_id, **kwargs): """ - Deletes the specified Exadata Cloud@Customer VM cluster network. + Deletes the specified VM cluster network. Applies to Exadata Cloud@Customer instances only. + To delete a cloud VM cluster in an Exadata Cloud Service instance, use the :func:`delete_cloud_vm_cluster` operation. :param str exadata_infrastructure_id: (required) @@ -4588,7 +4598,7 @@ def download_exadata_infrastructure_config_file(self, exadata_infrastructure_id, def download_vm_cluster_network_config_file(self, exadata_infrastructure_id, vm_cluster_network_id, **kwargs): """ - Downloads the configuration file for the specified Exadata Cloud@Customer VM cluster network. + Downloads the configuration file for the specified VM cluster network. Applies to Exadata Cloud@Customer instances only. :param str exadata_infrastructure_id: (required) @@ -6256,7 +6266,7 @@ def get_backup_destination(self, backup_destination_id, **kwargs): def get_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, **kwargs): """ - Gets information about the specified cloud Exadata infrastructure resource. + Gets information about the specified cloud Exadata infrastructure resource. Applies to Exadata Cloud Service instances only. :param str cloud_exadata_infrastructure_id: (required) @@ -6330,7 +6340,7 @@ def get_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, **kw def get_cloud_vm_cluster(self, cloud_vm_cluster_id, **kwargs): """ - Gets information about the specified cloud VM cluster. + Gets information about the specified cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -6404,7 +6414,7 @@ def get_cloud_vm_cluster(self, cloud_vm_cluster_id, **kwargs): def get_cloud_vm_cluster_iorm_config(self, cloud_vm_cluster_id, **kwargs): """ - Gets the IORM configuration for the specified cloud VM cluster. + Gets the IORM configuration for the specified cloud VM cluster in an Exadata Cloud Service instance. If you have not specified an IORM configuration, the default configuration is returned. @@ -6479,7 +6489,7 @@ def get_cloud_vm_cluster_iorm_config(self, cloud_vm_cluster_id, **kwargs): def get_cloud_vm_cluster_update(self, cloud_vm_cluster_id, update_id, **kwargs): """ - Gets information about a specified maintenance update package. + Gets information about a specified maintenance update package for a cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -6559,7 +6569,7 @@ def get_cloud_vm_cluster_update(self, cloud_vm_cluster_id, update_id, **kwargs): def get_cloud_vm_cluster_update_history_entry(self, cloud_vm_cluster_id, update_history_entry_id, **kwargs): """ - Gets the maintenance update history details for the specified update history entry. + Gets the maintenance update history details for the specified update history entry. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -7468,7 +7478,8 @@ def get_db_system_patch_history_entry(self, db_system_id, patch_history_entry_id def get_exadata_infrastructure(self, exadata_infrastructure_id, **kwargs): """ - Gets information about the specified Exadata Cloud@Customer infrastructure. + Gets information about the specified Exadata infrastructure. Applies to Exadata Cloud@Customer instances only. + To get information on an Exadata Cloud Service infrastructure resource, use the :func:`get_cloud_exadata_infrastructure` operation. :param str exadata_infrastructure_id: (required) @@ -7897,7 +7908,7 @@ def get_maintenance_run(self, maintenance_run_id, **kwargs): def get_vm_cluster(self, vm_cluster_id, **kwargs): """ - Gets information about the specified Exadata Cloud@Customer VM cluster. + Gets information about the VM cluster. Applies to Exadata Cloud@Customer instances only. :param str vm_cluster_id: (required) @@ -7971,7 +7982,8 @@ def get_vm_cluster(self, vm_cluster_id, **kwargs): def get_vm_cluster_network(self, exadata_infrastructure_id, vm_cluster_network_id, **kwargs): """ - Gets information about the specified Exadata Cloud@Customer VM cluster network. + Gets information about the specified VM cluster network. Applies to Exadata Cloud@Customer instances only. + To get information about a cloud VM cluster in an Exadata Cloud Service instance, use the :func:`get_cloud_vm_cluster` operation. :param str exadata_infrastructure_id: (required) @@ -8339,7 +8351,7 @@ def launch_db_system(self, launch_db_system_details, **kwargs): def list_autonomous_container_database_dataguard_associations(self, autonomous_container_database_id, **kwargs): """ - Gets a list of the Autonomous Container Databases with Autonomous Data Guard enabled associated with the specified Autonomous Container Database. + Gets a list of the Autonomous Container Databases with Autonomous Data Guard-enabled associated with the specified Autonomous Container Database. :param str autonomous_container_database_id: (required) @@ -10124,7 +10136,7 @@ def list_backups(self, **kwargs): def list_cloud_exadata_infrastructures(self, compartment_id, **kwargs): """ - Gets a list of the cloud Exadata infrastructure in the specified compartment. + Gets a list of the cloud Exadata infrastructure resources in the specified compartment. Applies to Exadata Cloud Service instances only. :param str compartment_id: (required) @@ -10250,7 +10262,7 @@ def list_cloud_exadata_infrastructures(self, compartment_id, **kwargs): def list_cloud_vm_cluster_update_history_entries(self, cloud_vm_cluster_id, **kwargs): """ - Gets the history of the maintenance update actions performed on the specified cloud VM cluster. + Gets the history of the maintenance update actions performed on the specified cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -10354,7 +10366,7 @@ def list_cloud_vm_cluster_update_history_entries(self, cloud_vm_cluster_id, **kw def list_cloud_vm_cluster_updates(self, cloud_vm_cluster_id, **kwargs): """ - Lists the maintenance updates that can be applied to the requested cloud VM cluster. + Lists the maintenance updates that can be applied to the specified cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -10458,7 +10470,7 @@ def list_cloud_vm_cluster_updates(self, cloud_vm_cluster_id, **kwargs): def list_cloud_vm_clusters(self, compartment_id, **kwargs): """ - Gets a list of the cloud VM clusters in the specified compartment. + Gets a list of the cloud VM clusters in the specified compartment. Applies to Exadata Cloud Service instances only. :param str compartment_id: (required) @@ -12190,7 +12202,8 @@ def list_db_versions(self, compartment_id, **kwargs): def list_exadata_infrastructures(self, compartment_id, **kwargs): """ - Gets a list of the Exadata Cloud@Customer infrastructure resources in the specified compartment. + Lists the Exadata infrastructure resources in the specified compartment. Applies to Exadata Cloud@Customer instances only. + To list the Exadata Cloud Service infrastructure resources in a compartment, use the :func:`list_cloud_exadata_infrastructures` operation. :param str compartment_id: (required) @@ -12220,7 +12233,7 @@ def list_exadata_infrastructures(self, compartment_id, **kwargs): :param str lifecycle_state: (optional) A filter to return only resources that match the given lifecycle state exactly. - Allowed values are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED" + Allowed values are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS" :param str display_name: (optional) A filter to return only resources that match the entire display name given. The match is not case sensitive. @@ -12270,7 +12283,7 @@ def list_exadata_infrastructures(self, compartment_id, **kwargs): ) if 'lifecycle_state' in kwargs: - lifecycle_state_allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED"] + lifecycle_state_allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS"] if kwargs['lifecycle_state'] not in lifecycle_state_allowed_values: raise ValueError( "Invalid value for `lifecycle_state`, must be one of {0}".format(lifecycle_state_allowed_values) @@ -12501,7 +12514,7 @@ def list_maintenance_runs(self, compartment_id, **kwargs): :param str target_resource_type: (optional) The type of the target resource. - Allowed values are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE" + Allowed values are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE" :param str maintenance_type: (optional) The maintenance type. @@ -12567,7 +12580,7 @@ def list_maintenance_runs(self, compartment_id, **kwargs): "list_maintenance_runs got unknown kwargs: {!r}".format(extra_kwargs)) if 'target_resource_type' in kwargs: - target_resource_type_allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE"] + target_resource_type_allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE"] if kwargs['target_resource_type'] not in target_resource_type_allowed_values: raise ValueError( "Invalid value for `target_resource_type`, must be one of {0}".format(target_resource_type_allowed_values) @@ -12642,7 +12655,7 @@ def list_maintenance_runs(self, compartment_id, **kwargs): def list_vm_cluster_networks(self, exadata_infrastructure_id, compartment_id, **kwargs): """ - Gets a list of the Exadata Cloud@Customer VM cluster networks in the specified compartment. + Gets a list of the VM cluster networks in the specified compartment. Applies to Exadata Cloud@Customer instances only. :param str exadata_infrastructure_id: (required) @@ -12953,7 +12966,8 @@ def list_vm_cluster_patches(self, vm_cluster_id, **kwargs): def list_vm_clusters(self, compartment_id, **kwargs): """ - Gets a list of the Exadata Cloud@Customer VM clusters in the specified compartment. + Lists the VM clusters in the specified compartment. Applies to Exadata Cloud@Customer instances only. + To list the cloud VM clusters in an Exadata Cloud Service instance, use the :func:`list_cloud_vm_clusters` operation. :param str compartment_id: (required) @@ -12983,7 +12997,7 @@ def list_vm_clusters(self, compartment_id, **kwargs): :param str lifecycle_state: (optional) A filter to return only resources that match the given lifecycle state exactly. - Allowed values are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED" + Allowed values are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS" :param str display_name: (optional) A filter to return only resources that match the entire display name given. The match is not case sensitive. @@ -13037,7 +13051,7 @@ def list_vm_clusters(self, compartment_id, **kwargs): ) if 'lifecycle_state' in kwargs: - lifecycle_state_allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED"] + lifecycle_state_allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS"] if kwargs['lifecycle_state'] not in lifecycle_state_allowed_values: raise ValueError( "Invalid value for `lifecycle_state`, must be one of {0}".format(lifecycle_state_allowed_values) @@ -14009,6 +14023,186 @@ def rotate_autonomous_database_encryption_key(self, autonomous_database_id, **kw header_params=header_params, response_type="AutonomousDatabase") + def rotate_ords_certs(self, autonomous_exadata_infrastructure_id, **kwargs): + """ + Rotates Oracle REST Data Services (ORDS) certs for an Autonomous Exadata Infrastructure resource. + + + :param str autonomous_exadata_infrastructure_id: (required) + The Autonomous Exadata Infrastructure `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + :param str opc_request_id: (optional) + Unique identifier for the request. + + :param str opc_retry_token: (optional) + A token that uniquely identifies a request so it can be retried in case of a timeout or + server error without risk of executing that same action again. Retry tokens expire after 24 + hours, but can be invalidated before then due to conflicting operations (for example, if a resource + has been deleted and purged from the system, then a retry of the original creation request + may be rejected). + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + parameter to the value of the etag from a previous GET or POST response for that resource. The resource + will be updated or deleted only if the etag you provide matches the resource's current etag value. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` + is also available. The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + """ + resource_path = "/autonomousExadataInfrastructures/{autonomousExadataInfrastructureId}/actions/rotateOrdsCerts" + method = "POST" + + # Don't accept unknown kwargs + expected_kwargs = [ + "retry_strategy", + "opc_request_id", + "opc_retry_token", + "if_match" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + "rotate_ords_certs got unknown kwargs: {!r}".format(extra_kwargs)) + + path_params = { + "autonomousExadataInfrastructureId": autonomous_exadata_infrastructure_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k)) + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "opc-request-id": kwargs.get("opc_request_id", missing), + "opc-retry-token": kwargs.get("opc_retry_token", missing), + "if-match": kwargs.get("if_match", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.retry_strategy + if kwargs.get('retry_strategy'): + retry_strategy = kwargs.get('retry_strategy') + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_retry_token_if_needed(header_params) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params) + + def rotate_ssl_certs(self, autonomous_exadata_infrastructure_id, **kwargs): + """ + Rotates SSL certs for an Autonomous Exadata Infrastructure resource. + + + :param str autonomous_exadata_infrastructure_id: (required) + The Autonomous Exadata Infrastructure `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + :param str opc_request_id: (optional) + Unique identifier for the request. + + :param str opc_retry_token: (optional) + A token that uniquely identifies a request so it can be retried in case of a timeout or + server error without risk of executing that same action again. Retry tokens expire after 24 + hours, but can be invalidated before then due to conflicting operations (for example, if a resource + has been deleted and purged from the system, then a retry of the original creation request + may be rejected). + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call for a resource, set the `if-match` + parameter to the value of the etag from a previous GET or POST response for that resource. The resource + will be updated or deleted only if the etag you provide matches the resource's current etag value. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. A convenience :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` + is also available. The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + """ + resource_path = "/autonomousExadataInfrastructures/{autonomousExadataInfrastructureId}/actions/rotateSslCerts" + method = "POST" + + # Don't accept unknown kwargs + expected_kwargs = [ + "retry_strategy", + "opc_request_id", + "opc_retry_token", + "if_match" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + "rotate_ssl_certs got unknown kwargs: {!r}".format(extra_kwargs)) + + path_params = { + "autonomousExadataInfrastructureId": autonomous_exadata_infrastructure_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError('Parameter {} cannot be None, whitespace or empty string'.format(k)) + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "opc-request-id": kwargs.get("opc_request_id", missing), + "opc-retry-token": kwargs.get("opc_retry_token", missing), + "if-match": kwargs.get("if_match", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.retry_strategy + if kwargs.get('retry_strategy'): + retry_strategy = kwargs.get('retry_strategy') + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_retry_token_if_needed(header_params) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params) + def start_autonomous_data_warehouse(self, autonomous_data_warehouse_id, **kwargs): """ **Deprecated.** To start an Autonomous Data Warehouse, use the :func:`start_autonomous_database` operation. @@ -14320,7 +14514,7 @@ def stop_autonomous_database(self, autonomous_database_id, **kwargs): def switchover_autonomous_container_database_dataguard_association(self, autonomous_container_database_id, autonomous_container_database_dataguard_association_id, **kwargs): """ - Switches over the primary Autonomous Container Database of an Autonomous Data Guard peer association into a standby role. The standby Autonomous Container Database associated with autonomousContainerDatabaseDataguardAssociationId assumes the primary Autonomous Container Database role. + Switches over the primary Autonomous Container Database of an Autonomous Data Guard peer association to standby role. The standby Autonomous Container Database associated with autonomousContainerDatabaseDataguardAssociationId assumes the primary Autonomous Container Database role. A switchover incurs no data loss. @@ -15449,7 +15643,7 @@ def update_backup_destination(self, backup_destination_id, update_backup_destina def update_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, update_cloud_exadata_infrastructure_details, **kwargs): """ - Updates the Cloud Exadata infrastructure resource. + Updates the Cloud Exadata infrastructure resource. Applies to Exadata Cloud Service instances only. :param str cloud_exadata_infrastructure_id: (required) @@ -15535,7 +15729,7 @@ def update_cloud_exadata_infrastructure(self, cloud_exadata_infrastructure_id, u def update_cloud_vm_cluster(self, cloud_vm_cluster_id, update_cloud_vm_cluster_details, **kwargs): """ - Updates the specified cloud VM cluster. + Updates the specified cloud VM cluster. Applies to Exadata Cloud Service instances only. :param str cloud_vm_cluster_id: (required) @@ -15621,7 +15815,7 @@ def update_cloud_vm_cluster(self, cloud_vm_cluster_id, update_cloud_vm_cluster_d def update_cloud_vm_cluster_iorm_config(self, cloud_vm_cluster_id, cloud_vm_cluster_iorm_config_update_details, **kwargs): """ - Updates the IORM settings for the specified cloud VM cluster. + Updates the IORM settings for the specified cloud VM cluster in an Exadata Cloud Service instance. :param str cloud_vm_cluster_id: (required) @@ -16031,7 +16225,8 @@ def update_db_system(self, db_system_id, update_db_system_details, **kwargs): def update_exadata_infrastructure(self, exadata_infrastructure_id, update_exadata_infrastructure_details, **kwargs): """ - Updates the Exadata Cloud@Customer infrastructure. + Updates the Exadata infrastructure resource. Applies to Exadata Cloud@Customer instances only. + To update an Exadata Cloud Service infrastructure resource, use the :func:`update_cloud_exadata_infrastructure` operation. :param str exadata_infrastructure_id: (required) @@ -16368,7 +16563,7 @@ def update_maintenance_run(self, maintenance_run_id, update_maintenance_run_deta def update_vm_cluster(self, vm_cluster_id, update_vm_cluster_details, **kwargs): """ - Updates the specified Exadata Cloud@Customer VM cluster. + Updates the specified VM cluster. Applies to Exadata Cloud@Customer instances only. :param str vm_cluster_id: (required) @@ -16454,7 +16649,8 @@ def update_vm_cluster(self, vm_cluster_id, update_vm_cluster_details, **kwargs): def update_vm_cluster_network(self, exadata_infrastructure_id, vm_cluster_network_id, update_vm_cluster_network_details, **kwargs): """ - Updates the specified Exadata Cloud@Customer VM cluster network. + Updates the specified VM cluster network. Applies to Exadata Cloud@Customer instances only. + To update a cloud VM cluster in an Exadata Cloud Service instance, use the :func:`update_cloud_vm_cluster` operation. :param str exadata_infrastructure_id: (required) @@ -16632,7 +16828,7 @@ def upgrade_database(self, database_id, upgrade_database_details, **kwargs): def validate_vm_cluster_network(self, exadata_infrastructure_id, vm_cluster_network_id, **kwargs): """ - Validates the specified Exadata Cloud@Customer VM cluster network. + Validates the specified VM cluster network. Applies to Exadata Cloud@Customer instances only. :param str exadata_infrastructure_id: (required) diff --git a/src/oci/database/database_client_composite_operations.py b/src/oci/database/database_client_composite_operations.py index ee4472c418..be29d3545e 100644 --- a/src/oci/database/database_client_composite_operations.py +++ b/src/oci/database/database_client_composite_operations.py @@ -1198,7 +1198,9 @@ def create_cloud_exadata_infrastructure_and_wait_for_work_request(self, create_c to enter the given state(s). :param CreateCloudExadataInfrastructureDetails create_cloud_exadata_infrastructure_details: (required) - Request to create cloud Exadata infrastructure. + Request to create a cloud Exadata infrastructure resource in an `Exadata Cloud Service`__ instance. + + __ https://docs.cloud.oracle.com/Content/Database/Concepts/exaoverview.htm :param list[str] work_request_states: (optional) An array of work requests states to wait on. These should be valid values for :py:attr:`~oci.work_requests.models.WorkRequest.status` @@ -1233,7 +1235,9 @@ def create_cloud_exadata_infrastructure_and_wait_for_state(self, create_cloud_ex to enter the given state(s). :param CreateCloudExadataInfrastructureDetails create_cloud_exadata_infrastructure_details: (required) - Request to create cloud Exadata infrastructure. + Request to create a cloud Exadata infrastructure resource in an `Exadata Cloud Service`__ instance. + + __ https://docs.cloud.oracle.com/Content/Database/Concepts/exaoverview.htm :param list[str] wait_for_states: An array of states to wait on. These should be valid values for :py:attr:`~oci.database.models.CloudExadataInfrastructure.lifecycle_state` @@ -1271,7 +1275,9 @@ def create_cloud_vm_cluster_and_wait_for_work_request(self, create_cloud_vm_clus to enter the given state(s). :param CreateCloudVmClusterDetails create_cloud_vm_cluster_details: (required) - Request to create a cloud VM cluster. + Request to create a cloud VM cluster. Applies to Exadata Cloud Service instances only. See `The New Exadata Cloud Service Resource Model`__ for information on this resource type. + + __ https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/exaflexsystem.htm#exaflexsystem_topic-resource_model :param list[str] work_request_states: (optional) An array of work requests states to wait on. These should be valid values for :py:attr:`~oci.work_requests.models.WorkRequest.status` @@ -1306,7 +1312,9 @@ def create_cloud_vm_cluster_and_wait_for_state(self, create_cloud_vm_cluster_det to enter the given state(s). :param CreateCloudVmClusterDetails create_cloud_vm_cluster_details: (required) - Request to create a cloud VM cluster. + Request to create a cloud VM cluster. Applies to Exadata Cloud Service instances only. See `The New Exadata Cloud Service Resource Model`__ for information on this resource type. + + __ https://docs.cloud.oracle.com/iaas/Content/Database/Concepts/exaflexsystem.htm#exaflexsystem_topic-resource_model :param list[str] wait_for_states: An array of states to wait on. These should be valid values for :py:attr:`~oci.database.models.CloudVmCluster.lifecycle_state` @@ -1835,7 +1843,8 @@ def create_vm_cluster_and_wait_for_work_request(self, create_vm_cluster_details, to enter the given state(s). :param CreateVmClusterDetails create_vm_cluster_details: (required) - Request to create an Exadata Cloud@Customer VM cluster. + Request to create a VM cluster. Applies to Exadata Cloud@Customer instances only. + See :func:`create_cloud_vm_cluster_details` for details on creating a cloud VM cluster in an Exadata Cloud Service instance. :param list[str] work_request_states: (optional) An array of work requests states to wait on. These should be valid values for :py:attr:`~oci.work_requests.models.WorkRequest.status` @@ -1870,7 +1879,8 @@ def create_vm_cluster_and_wait_for_state(self, create_vm_cluster_details, wait_f to enter the given state(s). :param CreateVmClusterDetails create_vm_cluster_details: (required) - Request to create an Exadata Cloud@Customer VM cluster. + Request to create a VM cluster. Applies to Exadata Cloud@Customer instances only. + See :func:`create_cloud_vm_cluster_details` for details on creating a cloud VM cluster in an Exadata Cloud Service instance. :param list[str] wait_for_states: An array of states to wait on. These should be valid values for :py:attr:`~oci.database.models.VmCluster.lifecycle_state` @@ -3916,6 +3926,80 @@ def rotate_autonomous_database_encryption_key_and_wait_for_state(self, autonomou except Exception as e: raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def rotate_ords_certs_and_wait_for_work_request(self, autonomous_exadata_infrastructure_id, work_request_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.database.DatabaseClient.rotate_ords_certs` and waits for the oci.work_requests.models.WorkRequest + to enter the given state(s). + + :param str autonomous_exadata_infrastructure_id: (required) + The Autonomous Exadata Infrastructure `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + :param list[str] work_request_states: (optional) + An array of work requests states to wait on. These should be valid values for :py:attr:`~oci.work_requests.models.WorkRequest.status` + Default values are termination states: [STATUS_SUCCEEDED, STATUS_FAILED, STATUS_CANCELED] + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.database.DatabaseClient.rotate_ords_certs` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.rotate_ords_certs(autonomous_exadata_infrastructure_id, **operation_kwargs) + work_request_states = work_request_states if work_request_states else oci.waiter._WORK_REQUEST_TERMINATION_STATES + lowered_work_request_states = [w.lower() for w in work_request_states] + work_request_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self._work_request_client, + self._work_request_client.get_work_request(work_request_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_work_request_states, + **waiter_kwargs + ) + return waiter_result + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + + def rotate_ssl_certs_and_wait_for_work_request(self, autonomous_exadata_infrastructure_id, work_request_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.database.DatabaseClient.rotate_ssl_certs` and waits for the oci.work_requests.models.WorkRequest + to enter the given state(s). + + :param str autonomous_exadata_infrastructure_id: (required) + The Autonomous Exadata Infrastructure `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + :param list[str] work_request_states: (optional) + An array of work requests states to wait on. These should be valid values for :py:attr:`~oci.work_requests.models.WorkRequest.status` + Default values are termination states: [STATUS_SUCCEEDED, STATUS_FAILED, STATUS_CANCELED] + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.database.DatabaseClient.rotate_ssl_certs` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.rotate_ssl_certs(autonomous_exadata_infrastructure_id, **operation_kwargs) + work_request_states = work_request_states if work_request_states else oci.waiter._WORK_REQUEST_TERMINATION_STATES + lowered_work_request_states = [w.lower() for w in work_request_states] + work_request_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self._work_request_client, + self._work_request_client.get_work_request(work_request_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_work_request_states, + **waiter_kwargs + ) + return waiter_result + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def start_autonomous_data_warehouse_and_wait_for_state(self, autonomous_data_warehouse_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): """ Calls :py:func:`~oci.database.DatabaseClient.start_autonomous_data_warehouse` and waits for the :py:class:`~oci.database.models.AutonomousDataWarehouse` acted upon diff --git a/src/oci/database/models/activate_exadata_infrastructure_details.py b/src/oci/database/models/activate_exadata_infrastructure_details.py index 1b0c77dad4..00bda587b3 100644 --- a/src/oci/database/models/activate_exadata_infrastructure_details.py +++ b/src/oci/database/models/activate_exadata_infrastructure_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class ActivateExadataInfrastructureDetails(object): """ - The activation details for the Exadata Cloud@Customer infrastructure. + The activation details for the Exadata Cloud@Customer infrastructure. Applies to Exadata Cloud@Customer instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/autonomous_container_database.py b/src/oci/database/models/autonomous_container_database.py index d5608548a6..0ffe1e1144 100644 --- a/src/oci/database/models/autonomous_container_database.py +++ b/src/oci/database/models/autonomous_container_database.py @@ -787,8 +787,8 @@ def maintenance_window(self, maintenance_window): def standby_maintenance_buffer_in_days(self): """ Gets the standby_maintenance_buffer_in_days of this AutonomousContainerDatabase. - The scheduling detail for the quarterly maintenance window of standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. + This value represents the number of days before scheduled maintenance of the primary database. :return: The standby_maintenance_buffer_in_days of this AutonomousContainerDatabase. @@ -800,8 +800,8 @@ def standby_maintenance_buffer_in_days(self): def standby_maintenance_buffer_in_days(self, standby_maintenance_buffer_in_days): """ Sets the standby_maintenance_buffer_in_days of this AutonomousContainerDatabase. - The scheduling detail for the quarterly maintenance window of standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. + This value represents the number of days before scheduled maintenance of the primary database. :param standby_maintenance_buffer_in_days: The standby_maintenance_buffer_in_days of this AutonomousContainerDatabase. diff --git a/src/oci/database/models/autonomous_container_database_dataguard_association.py b/src/oci/database/models/autonomous_container_database_dataguard_association.py index 4abee3656a..372d979a5d 100644 --- a/src/oci/database/models/autonomous_container_database_dataguard_association.py +++ b/src/oci/database/models/autonomous_container_database_dataguard_association.py @@ -314,7 +314,7 @@ def role(self, role): def lifecycle_state(self): """ **[Required]** Gets the lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ROLE_CHANGE_IN_PROGRESS", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -329,7 +329,7 @@ def lifecycle_state(self): def lifecycle_state(self, lifecycle_state): """ Sets the lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. :param lifecycle_state: The lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. @@ -450,7 +450,7 @@ def peer_role(self, peer_role): def peer_lifecycle_state(self): """ Gets the peer_lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ROLE_CHANGE_IN_PROGRESS", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -465,7 +465,7 @@ def peer_lifecycle_state(self): def peer_lifecycle_state(self, peer_lifecycle_state): """ Sets the peer_lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. :param peer_lifecycle_state: The peer_lifecycle_state of this AutonomousContainerDatabaseDataguardAssociation. diff --git a/src/oci/database/models/autonomous_container_database_summary.py b/src/oci/database/models/autonomous_container_database_summary.py index 3e9d041cf7..18d3700fb4 100644 --- a/src/oci/database/models/autonomous_container_database_summary.py +++ b/src/oci/database/models/autonomous_container_database_summary.py @@ -787,8 +787,8 @@ def maintenance_window(self, maintenance_window): def standby_maintenance_buffer_in_days(self): """ Gets the standby_maintenance_buffer_in_days of this AutonomousContainerDatabaseSummary. - The scheduling detail for the quarterly maintenance window of standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. + This value represents the number of days before scheduled maintenance of the primary database. :return: The standby_maintenance_buffer_in_days of this AutonomousContainerDatabaseSummary. @@ -800,8 +800,8 @@ def standby_maintenance_buffer_in_days(self): def standby_maintenance_buffer_in_days(self, standby_maintenance_buffer_in_days): """ Sets the standby_maintenance_buffer_in_days of this AutonomousContainerDatabaseSummary. - The scheduling detail for the quarterly maintenance window of standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. + This value represents the number of days before scheduled maintenance of the primary database. :param standby_maintenance_buffer_in_days: The standby_maintenance_buffer_in_days of this AutonomousContainerDatabaseSummary. diff --git a/src/oci/database/models/autonomous_database.py b/src/oci/database/models/autonomous_database.py index a81dac3c1e..32ced667b5 100644 --- a/src/oci/database/models/autonomous_database.py +++ b/src/oci/database/models/autonomous_database.py @@ -1649,7 +1649,7 @@ def data_safe_status(self, data_safe_status): def operations_insights_status(self): """ Gets the operations_insights_status of this AutonomousDatabase. - Status of the Operations Insights for this Autonomous Database. + Status of Operations Insights for this Autonomous Database. Allowed values for this property are: "ENABLING", "ENABLED", "DISABLING", "NOT_ENABLED", "FAILED_ENABLING", "FAILED_DISABLING", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -1664,7 +1664,7 @@ def operations_insights_status(self): def operations_insights_status(self, operations_insights_status): """ Sets the operations_insights_status of this AutonomousDatabase. - Status of the Operations Insights for this Autonomous Database. + Status of Operations Insights for this Autonomous Database. :param operations_insights_status: The operations_insights_status of this AutonomousDatabase. diff --git a/src/oci/database/models/autonomous_database_dataguard_association.py b/src/oci/database/models/autonomous_database_dataguard_association.py index 11ffd50fd3..3615ee892e 100644 --- a/src/oci/database/models/autonomous_database_dataguard_association.py +++ b/src/oci/database/models/autonomous_database_dataguard_association.py @@ -309,7 +309,7 @@ def role(self, role): def lifecycle_state(self): """ **[Required]** Gets the lifecycle_state of this AutonomousDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ROLE_CHANGE_IN_PROGRESS", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -324,7 +324,7 @@ def lifecycle_state(self): def lifecycle_state(self, lifecycle_state): """ Sets the lifecycle_state of this AutonomousDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. :param lifecycle_state: The lifecycle_state of this AutonomousDatabaseDataguardAssociation. @@ -421,7 +421,7 @@ def peer_autonomous_database_id(self, peer_autonomous_database_id): def peer_autonomous_database_life_cycle_state(self): """ Gets the peer_autonomous_database_life_cycle_state of this AutonomousDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. Allowed values for this property are: "PROVISIONING", "AVAILABLE", "ROLE_CHANGE_IN_PROGRESS", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -436,7 +436,7 @@ def peer_autonomous_database_life_cycle_state(self): def peer_autonomous_database_life_cycle_state(self, peer_autonomous_database_life_cycle_state): """ Sets the peer_autonomous_database_life_cycle_state of this AutonomousDatabaseDataguardAssociation. - The current state of the Autonomous Data Guard. + The current state of Autonomous Data Guard. :param peer_autonomous_database_life_cycle_state: The peer_autonomous_database_life_cycle_state of this AutonomousDatabaseDataguardAssociation. diff --git a/src/oci/database/models/autonomous_database_summary.py b/src/oci/database/models/autonomous_database_summary.py index 6def7a2ad7..9543fe5b83 100644 --- a/src/oci/database/models/autonomous_database_summary.py +++ b/src/oci/database/models/autonomous_database_summary.py @@ -1651,7 +1651,7 @@ def data_safe_status(self, data_safe_status): def operations_insights_status(self): """ Gets the operations_insights_status of this AutonomousDatabaseSummary. - Status of the Operations Insights for this Autonomous Database. + Status of Operations Insights for this Autonomous Database. Allowed values for this property are: "ENABLING", "ENABLED", "DISABLING", "NOT_ENABLED", "FAILED_ENABLING", "FAILED_DISABLING", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -1666,7 +1666,7 @@ def operations_insights_status(self): def operations_insights_status(self, operations_insights_status): """ Sets the operations_insights_status of this AutonomousDatabaseSummary. - Status of the Operations Insights for this Autonomous Database. + Status of Operations Insights for this Autonomous Database. :param operations_insights_status: The operations_insights_status of this AutonomousDatabaseSummary. diff --git a/src/oci/database/models/change_cloud_exadata_infrastructure_compartment_details.py b/src/oci/database/models/change_cloud_exadata_infrastructure_compartment_details.py index cec9a7daaa..c7e3d580ac 100644 --- a/src/oci/database/models/change_cloud_exadata_infrastructure_compartment_details.py +++ b/src/oci/database/models/change_cloud_exadata_infrastructure_compartment_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class ChangeCloudExadataInfrastructureCompartmentDetails(object): """ - The configuration details for moving the resource. + The configuration details for moving the cloud Exadata infrastructure resource to another compartment. Applies to Exadata Cloud Service instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/change_cloud_vm_cluster_compartment_details.py b/src/oci/database/models/change_cloud_vm_cluster_compartment_details.py index 5dac2212ce..0b507ce54a 100644 --- a/src/oci/database/models/change_cloud_vm_cluster_compartment_details.py +++ b/src/oci/database/models/change_cloud_vm_cluster_compartment_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class ChangeCloudVmClusterCompartmentDetails(object): """ - The configuration details for moving the cloud VM cluster to another compartment. + The configuration details for moving the cloud VM cluster to another compartment. Applies to Exadata Cloud Service instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/cloud_exadata_infrastructure.py b/src/oci/database/models/cloud_exadata_infrastructure.py index 9c2552fe70..dbfa9009b8 100644 --- a/src/oci/database/models/cloud_exadata_infrastructure.py +++ b/src/oci/database/models/cloud_exadata_infrastructure.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CloudExadataInfrastructure(object): """ - Details of the cloud Exadata infrastructure resource. + Details of the cloud Exadata infrastructure resource. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the lifecycle_state property of a CloudExadataInfrastructure. diff --git a/src/oci/database/models/cloud_exadata_infrastructure_summary.py b/src/oci/database/models/cloud_exadata_infrastructure_summary.py index aa359ba2d5..6428224ef7 100644 --- a/src/oci/database/models/cloud_exadata_infrastructure_summary.py +++ b/src/oci/database/models/cloud_exadata_infrastructure_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CloudExadataInfrastructureSummary(object): """ - Details of the cloud Exadata infrastructure resource. + Details of the cloud Exadata infrastructure resource. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the lifecycle_state property of a CloudExadataInfrastructureSummary. diff --git a/src/oci/database/models/cloud_vm_cluster.py b/src/oci/database/models/cloud_vm_cluster.py index a2eb47a9d0..478c9c973c 100644 --- a/src/oci/database/models/cloud_vm_cluster.py +++ b/src/oci/database/models/cloud_vm_cluster.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CloudVmCluster(object): """ - Details of the cloud VM cluster. + Details of the cloud VM cluster. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the lifecycle_state property of a CloudVmCluster. diff --git a/src/oci/database/models/cloud_vm_cluster_summary.py b/src/oci/database/models/cloud_vm_cluster_summary.py index e4527ad647..bab1df0e92 100644 --- a/src/oci/database/models/cloud_vm_cluster_summary.py +++ b/src/oci/database/models/cloud_vm_cluster_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CloudVmClusterSummary(object): """ - Details of the cloud VM cluster. + Details of the cloud VM cluster. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the lifecycle_state property of a CloudVmClusterSummary. diff --git a/src/oci/database/models/create_autonomous_container_database_details.py b/src/oci/database/models/create_autonomous_container_database_details.py index 0da5ff0718..772670fc70 100644 --- a/src/oci/database/models/create_autonomous_container_database_details.py +++ b/src/oci/database/models/create_autonomous_container_database_details.py @@ -586,7 +586,7 @@ def standby_maintenance_buffer_in_days(self): """ Gets the standby_maintenance_buffer_in_days of this CreateAutonomousContainerDatabaseDetails. The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + This value represents the number of days before scheduled maintenance of the primary database. :return: The standby_maintenance_buffer_in_days of this CreateAutonomousContainerDatabaseDetails. @@ -599,7 +599,7 @@ def standby_maintenance_buffer_in_days(self, standby_maintenance_buffer_in_days) """ Sets the standby_maintenance_buffer_in_days of this CreateAutonomousContainerDatabaseDetails. The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + This value represents the number of days before scheduled maintenance of the primary database. :param standby_maintenance_buffer_in_days: The standby_maintenance_buffer_in_days of this CreateAutonomousContainerDatabaseDetails. diff --git a/src/oci/database/models/create_cloud_exadata_infrastructure_details.py b/src/oci/database/models/create_cloud_exadata_infrastructure_details.py index e0e9ffea1d..cc86cfb353 100644 --- a/src/oci/database/models/create_cloud_exadata_infrastructure_details.py +++ b/src/oci/database/models/create_cloud_exadata_infrastructure_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CreateCloudExadataInfrastructureDetails(object): """ - Request to create cloud Exadata infrastructure. + Request to create cloud Exadata infrastructure. Applies to Exadata Cloud Service instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/create_cloud_vm_cluster_details.py b/src/oci/database/models/create_cloud_vm_cluster_details.py index a2b0eba043..4e3a99bbc2 100644 --- a/src/oci/database/models/create_cloud_vm_cluster_details.py +++ b/src/oci/database/models/create_cloud_vm_cluster_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class CreateCloudVmClusterDetails(object): """ - Details for the create cloud VM cluster operation. + Details for the create cloud VM cluster operation. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the license_model property of a CreateCloudVmClusterDetails. @@ -448,6 +448,7 @@ def domain(self): A domain name used for the cloud VM cluster. If the Oracle-provided internet and VCN resolver is enabled for the specified subnet, the domain name for the subnet is used (do not provide one). Otherwise, provide a valid DNS domain name. Hyphens (-) are not permitted. + Applies to Exadata Cloud Service instances only. :return: The domain of this CreateCloudVmClusterDetails. @@ -462,6 +463,7 @@ def domain(self, domain): A domain name used for the cloud VM cluster. If the Oracle-provided internet and VCN resolver is enabled for the specified subnet, the domain name for the subnet is used (do not provide one). Otherwise, provide a valid DNS domain name. Hyphens (-) are not permitted. + Applies to Exadata Cloud Service instances only. :param domain: The domain of this CreateCloudVmClusterDetails. diff --git a/src/oci/database/models/create_exadata_infrastructure_details.py b/src/oci/database/models/create_exadata_infrastructure_details.py index 938d5144b2..fccc0b7389 100644 --- a/src/oci/database/models/create_exadata_infrastructure_details.py +++ b/src/oci/database/models/create_exadata_infrastructure_details.py @@ -10,7 +10,8 @@ @init_model_state_from_kwargs class CreateExadataInfrastructureDetails(object): """ - Request to create Exadata Cloud@Customer infrastructure resource. + Request to create Exadata infrastructure resource. Applies to Exadata Cloud@Customer instances only. + See :func:`create_cloud_exadata_infrastructure_details` for information on creating a cloud Exadata infrastructure resource in an Exadata Cloud Service instance. """ def __init__(self, **kwargs): @@ -66,6 +67,10 @@ def __init__(self, **kwargs): The value to assign to the contacts property of this CreateExadataInfrastructureDetails. :type contacts: list[ExadataInfrastructureContact] + :param maintenance_window: + The value to assign to the maintenance_window property of this CreateExadataInfrastructureDetails. + :type maintenance_window: MaintenanceWindow + :param dns_server: The value to assign to the dns_server property of this CreateExadataInfrastructureDetails. :type dns_server: list[str] @@ -96,6 +101,7 @@ def __init__(self, **kwargs): 'infini_band_network_cidr': 'str', 'corporate_proxy': 'str', 'contacts': 'list[ExadataInfrastructureContact]', + 'maintenance_window': 'MaintenanceWindow', 'dns_server': 'list[str]', 'ntp_server': 'list[str]', 'freeform_tags': 'dict(str, str)', @@ -115,6 +121,7 @@ def __init__(self, **kwargs): 'infini_band_network_cidr': 'infiniBandNetworkCIDR', 'corporate_proxy': 'corporateProxy', 'contacts': 'contacts', + 'maintenance_window': 'maintenanceWindow', 'dns_server': 'dnsServer', 'ntp_server': 'ntpServer', 'freeform_tags': 'freeformTags', @@ -133,6 +140,7 @@ def __init__(self, **kwargs): self._infini_band_network_cidr = None self._corporate_proxy = None self._contacts = None + self._maintenance_window = None self._dns_server = None self._ntp_server = None self._freeform_tags = None @@ -436,6 +444,26 @@ def contacts(self, contacts): """ self._contacts = contacts + @property + def maintenance_window(self): + """ + Gets the maintenance_window of this CreateExadataInfrastructureDetails. + + :return: The maintenance_window of this CreateExadataInfrastructureDetails. + :rtype: MaintenanceWindow + """ + return self._maintenance_window + + @maintenance_window.setter + def maintenance_window(self, maintenance_window): + """ + Sets the maintenance_window of this CreateExadataInfrastructureDetails. + + :param maintenance_window: The maintenance_window of this CreateExadataInfrastructureDetails. + :type: MaintenanceWindow + """ + self._maintenance_window = maintenance_window + @property def dns_server(self): """ diff --git a/src/oci/database/models/create_vm_cluster_details.py b/src/oci/database/models/create_vm_cluster_details.py index 830a6cc34b..80890aaa57 100644 --- a/src/oci/database/models/create_vm_cluster_details.py +++ b/src/oci/database/models/create_vm_cluster_details.py @@ -10,7 +10,8 @@ @init_model_state_from_kwargs class CreateVmClusterDetails(object): """ - Details for the create Exadata Cloud@Customer VM cluster operation. + Details for the create Exadata VM cluster operation. Applies to Exadata Cloud@Customer instances only. + For details on the create cloud Exadata VM cluster operation used with Exadata Cloud Service instances, see :func:`create_cloud_vm_cluster_details` """ #: A constant which can be used with the license_model property of a CreateVmClusterDetails. diff --git a/src/oci/database/models/exadata_db_system_migration.py b/src/oci/database/models/exadata_db_system_migration.py index e89b31ea51..7335fc9af2 100644 --- a/src/oci/database/models/exadata_db_system_migration.py +++ b/src/oci/database/models/exadata_db_system_migration.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class ExadataDbSystemMigration(object): """ - Information about the Exadata DB system migration. The migration is used to move the system to the Exadata infrastructure resource model. + Information about the Exadata DB system migration. The migration is used to move the Exadata Cloud Service instance from the DB system resource model to the new cloud Exadata infrastructure resource model. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/exadata_db_system_migration_summary.py b/src/oci/database/models/exadata_db_system_migration_summary.py index f88a946060..e76452ca74 100644 --- a/src/oci/database/models/exadata_db_system_migration_summary.py +++ b/src/oci/database/models/exadata_db_system_migration_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class ExadataDbSystemMigrationSummary(object): """ - Information about Exadata DB system migration. The migration is used to move the system to the Exadata infrastructure resource model. + Information about the Exadata DB system migration. The migration is used to move the Exadata Cloud Service instance from the DB system resource model to the new cloud Exadata infrastructure resource model. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/exadata_infrastructure.py b/src/oci/database/models/exadata_infrastructure.py index cbd60f9c01..ed2792641d 100644 --- a/src/oci/database/models/exadata_infrastructure.py +++ b/src/oci/database/models/exadata_infrastructure.py @@ -53,6 +53,10 @@ class ExadataInfrastructure(object): #: This constant has a value of "DISCONNECTED" LIFECYCLE_STATE_DISCONNECTED = "DISCONNECTED" + #: A constant which can be used with the lifecycle_state property of a ExadataInfrastructure. + #: This constant has a value of "MAINTENANCE_IN_PROGRESS" + LIFECYCLE_STATE_MAINTENANCE_IN_PROGRESS = "MAINTENANCE_IN_PROGRESS" + def __init__(self, **kwargs): """ Initializes a new ExadataInfrastructure object with values from keyword arguments. @@ -68,7 +72,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this ExadataInfrastructure. - Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -168,6 +172,10 @@ def __init__(self, **kwargs): The value to assign to the contacts property of this ExadataInfrastructure. :type contacts: list[ExadataInfrastructureContact] + :param maintenance_window: + The value to assign to the maintenance_window property of this ExadataInfrastructure. + :type maintenance_window: MaintenanceWindow + :param freeform_tags: The value to assign to the freeform_tags property of this ExadataInfrastructure. :type freeform_tags: dict(str, str) @@ -205,6 +213,7 @@ def __init__(self, **kwargs): 'lifecycle_details': 'str', 'csi_number': 'str', 'contacts': 'list[ExadataInfrastructureContact]', + 'maintenance_window': 'MaintenanceWindow', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))' } @@ -237,6 +246,7 @@ def __init__(self, **kwargs): 'lifecycle_details': 'lifecycleDetails', 'csi_number': 'csiNumber', 'contacts': 'contacts', + 'maintenance_window': 'maintenanceWindow', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags' } @@ -268,6 +278,7 @@ def __init__(self, **kwargs): self._lifecycle_details = None self._csi_number = None self._contacts = None + self._maintenance_window = None self._freeform_tags = None self._defined_tags = None @@ -333,7 +344,7 @@ def lifecycle_state(self): **[Required]** Gets the lifecycle_state of this ExadataInfrastructure. The current lifecycle state of the Exadata infrastructure. - Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -352,7 +363,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this ExadataInfrastructure. :type: str """ - allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED"] + allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state @@ -937,6 +948,26 @@ def contacts(self, contacts): """ self._contacts = contacts + @property + def maintenance_window(self): + """ + Gets the maintenance_window of this ExadataInfrastructure. + + :return: The maintenance_window of this ExadataInfrastructure. + :rtype: MaintenanceWindow + """ + return self._maintenance_window + + @maintenance_window.setter + def maintenance_window(self, maintenance_window): + """ + Sets the maintenance_window of this ExadataInfrastructure. + + :param maintenance_window: The maintenance_window of this ExadataInfrastructure. + :type: MaintenanceWindow + """ + self._maintenance_window = maintenance_window + @property def freeform_tags(self): """ diff --git a/src/oci/database/models/exadata_infrastructure_summary.py b/src/oci/database/models/exadata_infrastructure_summary.py index 303daf4b9d..a853c9f1e4 100644 --- a/src/oci/database/models/exadata_infrastructure_summary.py +++ b/src/oci/database/models/exadata_infrastructure_summary.py @@ -10,7 +10,8 @@ @init_model_state_from_kwargs class ExadataInfrastructureSummary(object): """ - Details of the Exadata Cloud@Customer infrastructure. + Details of the Exadata Cloud@Customer infrastructure. Applies to Exadata Cloud@Customer instances only. + See :func:`cloud_exadata_infrastructure_summary` for details of the cloud Exadata infrastructure resource used by Exadata Cloud Service instances. """ #: A constant which can be used with the lifecycle_state property of a ExadataInfrastructureSummary. @@ -53,6 +54,10 @@ class ExadataInfrastructureSummary(object): #: This constant has a value of "DISCONNECTED" LIFECYCLE_STATE_DISCONNECTED = "DISCONNECTED" + #: A constant which can be used with the lifecycle_state property of a ExadataInfrastructureSummary. + #: This constant has a value of "MAINTENANCE_IN_PROGRESS" + LIFECYCLE_STATE_MAINTENANCE_IN_PROGRESS = "MAINTENANCE_IN_PROGRESS" + def __init__(self, **kwargs): """ Initializes a new ExadataInfrastructureSummary object with values from keyword arguments. @@ -68,7 +73,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this ExadataInfrastructureSummary. - Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -168,6 +173,10 @@ def __init__(self, **kwargs): The value to assign to the contacts property of this ExadataInfrastructureSummary. :type contacts: list[ExadataInfrastructureContact] + :param maintenance_window: + The value to assign to the maintenance_window property of this ExadataInfrastructureSummary. + :type maintenance_window: MaintenanceWindow + :param freeform_tags: The value to assign to the freeform_tags property of this ExadataInfrastructureSummary. :type freeform_tags: dict(str, str) @@ -205,6 +214,7 @@ def __init__(self, **kwargs): 'lifecycle_details': 'str', 'csi_number': 'str', 'contacts': 'list[ExadataInfrastructureContact]', + 'maintenance_window': 'MaintenanceWindow', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))' } @@ -237,6 +247,7 @@ def __init__(self, **kwargs): 'lifecycle_details': 'lifecycleDetails', 'csi_number': 'csiNumber', 'contacts': 'contacts', + 'maintenance_window': 'maintenanceWindow', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags' } @@ -268,6 +279,7 @@ def __init__(self, **kwargs): self._lifecycle_details = None self._csi_number = None self._contacts = None + self._maintenance_window = None self._freeform_tags = None self._defined_tags = None @@ -333,7 +345,7 @@ def lifecycle_state(self): **[Required]** Gets the lifecycle_state of this ExadataInfrastructureSummary. The current lifecycle state of the Exadata infrastructure. - Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -352,7 +364,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this ExadataInfrastructureSummary. :type: str """ - allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED"] + allowed_values = ["CREATING", "REQUIRES_ACTIVATION", "ACTIVATING", "ACTIVE", "ACTIVATION_FAILED", "FAILED", "UPDATING", "DELETING", "DELETED", "DISCONNECTED", "MAINTENANCE_IN_PROGRESS"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state @@ -937,6 +949,26 @@ def contacts(self, contacts): """ self._contacts = contacts + @property + def maintenance_window(self): + """ + Gets the maintenance_window of this ExadataInfrastructureSummary. + + :return: The maintenance_window of this ExadataInfrastructureSummary. + :rtype: MaintenanceWindow + """ + return self._maintenance_window + + @maintenance_window.setter + def maintenance_window(self, maintenance_window): + """ + Sets the maintenance_window of this ExadataInfrastructureSummary. + + :param maintenance_window: The maintenance_window of this ExadataInfrastructureSummary. + :type: MaintenanceWindow + """ + self._maintenance_window = maintenance_window + @property def freeform_tags(self): """ diff --git a/src/oci/database/models/generate_recommended_network_details.py b/src/oci/database/models/generate_recommended_network_details.py index 10f4a4ee81..a2b03534d2 100644 --- a/src/oci/database/models/generate_recommended_network_details.py +++ b/src/oci/database/models/generate_recommended_network_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class GenerateRecommendedNetworkDetails(object): """ - Generates a recommended VM cluster network configuration for an Exadata Cloud@Customer system. + Generates a recommended VM cluster network configuration for an Exadata Cloud@Customer system. Applies to Exadata Cloud@Customer instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/maintenance_run.py b/src/oci/database/models/maintenance_run.py index 3223113cef..eb16d1974b 100644 --- a/src/oci/database/models/maintenance_run.py +++ b/src/oci/database/models/maintenance_run.py @@ -61,6 +61,10 @@ class MaintenanceRun(object): #: This constant has a value of "CLOUD_EXADATA_INFRASTRUCTURE" TARGET_RESOURCE_TYPE_CLOUD_EXADATA_INFRASTRUCTURE = "CLOUD_EXADATA_INFRASTRUCTURE" + #: A constant which can be used with the target_resource_type property of a MaintenanceRun. + #: This constant has a value of "EXACC_INFRASTRUCTURE" + TARGET_RESOURCE_TYPE_EXACC_INFRASTRUCTURE = "EXACC_INFRASTRUCTURE" + #: A constant which can be used with the maintenance_type property of a MaintenanceRun. #: This constant has a value of "PLANNED" MAINTENANCE_TYPE_PLANNED = "PLANNED" @@ -126,7 +130,7 @@ def __init__(self, **kwargs): :param target_resource_type: The value to assign to the target_resource_type property of this MaintenanceRun. - Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type target_resource_type: str @@ -435,7 +439,7 @@ def target_resource_type(self): Gets the target_resource_type of this MaintenanceRun. The type of the target resource on which the maintenance run occurs. - Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -454,7 +458,7 @@ def target_resource_type(self, target_resource_type): :param target_resource_type: The target_resource_type of this MaintenanceRun. :type: str """ - allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE"] + allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE"] if not value_allowed_none_or_none_sentinel(target_resource_type, allowed_values): target_resource_type = 'UNKNOWN_ENUM_VALUE' self._target_resource_type = target_resource_type diff --git a/src/oci/database/models/maintenance_run_summary.py b/src/oci/database/models/maintenance_run_summary.py index 9062cc3be4..4e518cdacc 100644 --- a/src/oci/database/models/maintenance_run_summary.py +++ b/src/oci/database/models/maintenance_run_summary.py @@ -61,6 +61,10 @@ class MaintenanceRunSummary(object): #: This constant has a value of "CLOUD_EXADATA_INFRASTRUCTURE" TARGET_RESOURCE_TYPE_CLOUD_EXADATA_INFRASTRUCTURE = "CLOUD_EXADATA_INFRASTRUCTURE" + #: A constant which can be used with the target_resource_type property of a MaintenanceRunSummary. + #: This constant has a value of "EXACC_INFRASTRUCTURE" + TARGET_RESOURCE_TYPE_EXACC_INFRASTRUCTURE = "EXACC_INFRASTRUCTURE" + #: A constant which can be used with the maintenance_type property of a MaintenanceRunSummary. #: This constant has a value of "PLANNED" MAINTENANCE_TYPE_PLANNED = "PLANNED" @@ -126,7 +130,7 @@ def __init__(self, **kwargs): :param target_resource_type: The value to assign to the target_resource_type property of this MaintenanceRunSummary. - Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type target_resource_type: str @@ -435,7 +439,7 @@ def target_resource_type(self): Gets the target_resource_type of this MaintenanceRunSummary. The type of the target resource on which the maintenance run occurs. - Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -454,7 +458,7 @@ def target_resource_type(self, target_resource_type): :param target_resource_type: The target_resource_type of this MaintenanceRunSummary. :type: str """ - allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE"] + allowed_values = ["AUTONOMOUS_EXADATA_INFRASTRUCTURE", "AUTONOMOUS_CONTAINER_DATABASE", "EXADATA_DB_SYSTEM", "CLOUD_EXADATA_INFRASTRUCTURE", "EXACC_INFRASTRUCTURE"] if not value_allowed_none_or_none_sentinel(target_resource_type, allowed_values): target_resource_type = 'UNKNOWN_ENUM_VALUE' self._target_resource_type = target_resource_type diff --git a/src/oci/database/models/update_autonomous_container_database_details.py b/src/oci/database/models/update_autonomous_container_database_details.py index d25aa1af54..8c93023ced 100644 --- a/src/oci/database/models/update_autonomous_container_database_details.py +++ b/src/oci/database/models/update_autonomous_container_database_details.py @@ -165,7 +165,7 @@ def standby_maintenance_buffer_in_days(self): """ Gets the standby_maintenance_buffer_in_days of this UpdateAutonomousContainerDatabaseDetails. The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + This value represents the number of days before schedlued maintenance of the primary database. :return: The standby_maintenance_buffer_in_days of this UpdateAutonomousContainerDatabaseDetails. @@ -178,7 +178,7 @@ def standby_maintenance_buffer_in_days(self, standby_maintenance_buffer_in_days) """ Sets the standby_maintenance_buffer_in_days of this UpdateAutonomousContainerDatabaseDetails. The scheduling detail for the quarterly maintenance window of the standby Autonomous Container Database. - This value represents the number of days before the primary database maintenance schedule. + This value represents the number of days before schedlued maintenance of the primary database. :param standby_maintenance_buffer_in_days: The standby_maintenance_buffer_in_days of this UpdateAutonomousContainerDatabaseDetails. diff --git a/src/oci/database/models/update_cloud_exadata_infrastructure_details.py b/src/oci/database/models/update_cloud_exadata_infrastructure_details.py index b924a0893c..182e1f6508 100644 --- a/src/oci/database/models/update_cloud_exadata_infrastructure_details.py +++ b/src/oci/database/models/update_cloud_exadata_infrastructure_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateCloudExadataInfrastructureDetails(object): """ - Updates the cloud Exadata infrastructure. + Updates the cloud Exadata infrastructure. Applies to Exadata Cloud Service instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/update_cloud_vm_cluster_details.py b/src/oci/database/models/update_cloud_vm_cluster_details.py index 43c791db67..ef026b2a75 100644 --- a/src/oci/database/models/update_cloud_vm_cluster_details.py +++ b/src/oci/database/models/update_cloud_vm_cluster_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateCloudVmClusterDetails(object): """ - Details for updating the cloud VM cluster. + Details for updating the cloud VM cluster. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the license_model property of a UpdateCloudVmClusterDetails. @@ -164,7 +164,7 @@ def cpu_core_count(self, cpu_core_count): def license_model(self): """ Gets the license_model of this UpdateCloudVmClusterDetails. - The Oracle license model that applies to the cloud VM cluster. The default is BRING_YOUR_OWN_LICENSE. + The Oracle license model that applies to the cloud VM cluster. The default is BRING_YOUR_OWN_LICENSE. Applies to Exadata Cloud Service instances only. Allowed values for this property are: "LICENSE_INCLUDED", "BRING_YOUR_OWN_LICENSE" @@ -178,7 +178,7 @@ def license_model(self): def license_model(self, license_model): """ Sets the license_model of this UpdateCloudVmClusterDetails. - The Oracle license model that applies to the cloud VM cluster. The default is BRING_YOUR_OWN_LICENSE. + The Oracle license model that applies to the cloud VM cluster. The default is BRING_YOUR_OWN_LICENSE. Applies to Exadata Cloud Service instances only. :param license_model: The license_model of this UpdateCloudVmClusterDetails. diff --git a/src/oci/database/models/update_details.py b/src/oci/database/models/update_details.py index 93dfec68e5..3c49f7c450 100644 --- a/src/oci/database/models/update_details.py +++ b/src/oci/database/models/update_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateDetails(object): """ - Details specifying which maintenance update to apply to the target and which actions are to be performed by the maintenance update. + Details specifying which maintenance update to apply to the cloud VM cluster and which actions are to be performed by the maintenance update. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the update_action property of a UpdateDetails. diff --git a/src/oci/database/models/update_exadata_infrastructure_details.py b/src/oci/database/models/update_exadata_infrastructure_details.py index 775266e7f5..b8d25b1a28 100644 --- a/src/oci/database/models/update_exadata_infrastructure_details.py +++ b/src/oci/database/models/update_exadata_infrastructure_details.py @@ -10,7 +10,8 @@ @init_model_state_from_kwargs class UpdateExadataInfrastructureDetails(object): """ - Updates the Exadata Cloud@Customer infrastructure. + Updates the Exadata infrastructure. Applies to Exadata Cloud@Customer instances only. + See :func:`update_cloud_exadata_infrastructure_details` for information on updating Exadata Cloud Service cloud Exadata infrastructure resources. """ def __init__(self, **kwargs): @@ -50,6 +51,10 @@ def __init__(self, **kwargs): The value to assign to the contacts property of this UpdateExadataInfrastructureDetails. :type contacts: list[ExadataInfrastructureContact] + :param maintenance_window: + The value to assign to the maintenance_window property of this UpdateExadataInfrastructureDetails. + :type maintenance_window: MaintenanceWindow + :param dns_server: The value to assign to the dns_server property of this UpdateExadataInfrastructureDetails. :type dns_server: list[str] @@ -80,6 +85,7 @@ def __init__(self, **kwargs): 'infini_band_network_cidr': 'str', 'corporate_proxy': 'str', 'contacts': 'list[ExadataInfrastructureContact]', + 'maintenance_window': 'MaintenanceWindow', 'dns_server': 'list[str]', 'ntp_server': 'list[str]', 'time_zone': 'str', @@ -96,6 +102,7 @@ def __init__(self, **kwargs): 'infini_band_network_cidr': 'infiniBandNetworkCIDR', 'corporate_proxy': 'corporateProxy', 'contacts': 'contacts', + 'maintenance_window': 'maintenanceWindow', 'dns_server': 'dnsServer', 'ntp_server': 'ntpServer', 'time_zone': 'timeZone', @@ -111,6 +118,7 @@ def __init__(self, **kwargs): self._infini_band_network_cidr = None self._corporate_proxy = None self._contacts = None + self._maintenance_window = None self._dns_server = None self._ntp_server = None self._time_zone = None @@ -309,6 +317,26 @@ def contacts(self, contacts): """ self._contacts = contacts + @property + def maintenance_window(self): + """ + Gets the maintenance_window of this UpdateExadataInfrastructureDetails. + + :return: The maintenance_window of this UpdateExadataInfrastructureDetails. + :rtype: MaintenanceWindow + """ + return self._maintenance_window + + @maintenance_window.setter + def maintenance_window(self, maintenance_window): + """ + Sets the maintenance_window of this UpdateExadataInfrastructureDetails. + + :param maintenance_window: The maintenance_window of this UpdateExadataInfrastructureDetails. + :type: MaintenanceWindow + """ + self._maintenance_window = maintenance_window + @property def dns_server(self): """ diff --git a/src/oci/database/models/update_history_entry_summary.py b/src/oci/database/models/update_history_entry_summary.py index 35af98c10f..d063de5f69 100644 --- a/src/oci/database/models/update_history_entry_summary.py +++ b/src/oci/database/models/update_history_entry_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateHistoryEntrySummary(object): """ - The record of an update action on a specified target. + The record of an maintenance update action on a specified cloud VM cluster. Applies to Exadata Cloud Service instances only. """ #: A constant which can be used with the update_action property of a UpdateHistoryEntrySummary. diff --git a/src/oci/database/models/update_summary.py b/src/oci/database/models/update_summary.py index 065d28952b..667f531773 100644 --- a/src/oci/database/models/update_summary.py +++ b/src/oci/database/models/update_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateSummary(object): """ - A maintenance update for a cloud VM cluster. + A maintenance update for a cloud VM cluster. Applies to Exadata Cloud Service instances only. To use any of the API operations, you must be authorized in an IAM policy. If you're not authorized, talk to an administrator. If you're an administrator who needs to write policies to give users access, diff --git a/src/oci/database/models/update_vm_cluster_details.py b/src/oci/database/models/update_vm_cluster_details.py index 5f74642edf..fb373a9850 100644 --- a/src/oci/database/models/update_vm_cluster_details.py +++ b/src/oci/database/models/update_vm_cluster_details.py @@ -10,7 +10,8 @@ @init_model_state_from_kwargs class UpdateVmClusterDetails(object): """ - Details for updating the Exadata Cloud@Customer VM cluster. + Details for updating the VM cluster. Applies to Exadata Cloud@Customer instances only. + For details on updating a cloud VM cluster in an Exadata Cloud Service instance, see :func:`update_cloud_vm_cluster_details` """ #: A constant which can be used with the license_model property of a UpdateVmClusterDetails. diff --git a/src/oci/database/models/update_vm_cluster_network_details.py b/src/oci/database/models/update_vm_cluster_network_details.py index cd3bc8dbc9..b95687d333 100644 --- a/src/oci/database/models/update_vm_cluster_network_details.py +++ b/src/oci/database/models/update_vm_cluster_network_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class UpdateVmClusterNetworkDetails(object): """ - Details for an Exadata Cloud@Customer VM cluster network. + Details for an Exadata VM cluster network. Applies to Exadata Cloud@Customer instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/vm_cluster.py b/src/oci/database/models/vm_cluster.py index d4837b567d..5656a9cfec 100644 --- a/src/oci/database/models/vm_cluster.py +++ b/src/oci/database/models/vm_cluster.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class VmCluster(object): """ - Details of the Exadata Cloud@Customer VM cluster. + Details of the VM cluster resource. Applies to Exadata Cloud@Customer instances only. """ #: A constant which can be used with the lifecycle_state property of a VmCluster. @@ -37,6 +37,10 @@ class VmCluster(object): #: This constant has a value of "FAILED" LIFECYCLE_STATE_FAILED = "FAILED" + #: A constant which can be used with the lifecycle_state property of a VmCluster. + #: This constant has a value of "MAINTENANCE_IN_PROGRESS" + LIFECYCLE_STATE_MAINTENANCE_IN_PROGRESS = "MAINTENANCE_IN_PROGRESS" + #: A constant which can be used with the license_model property of a VmCluster. #: This constant has a value of "LICENSE_INCLUDED" LICENSE_MODEL_LICENSE_INCLUDED = "LICENSE_INCLUDED" @@ -64,7 +68,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this VmCluster. - Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -306,7 +310,7 @@ def lifecycle_state(self): Gets the lifecycle_state of this VmCluster. The current state of the VM cluster. - Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -325,7 +329,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this VmCluster. :type: str """ - allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED"] + allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state diff --git a/src/oci/database/models/vm_cluster_network_details.py b/src/oci/database/models/vm_cluster_network_details.py index 73cec3f001..78fb577684 100644 --- a/src/oci/database/models/vm_cluster_network_details.py +++ b/src/oci/database/models/vm_cluster_network_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class VmClusterNetworkDetails(object): """ - Details for an Exadata Cloud@Customer VM cluster network. + Details for an Exadata VM cluster network. Applies to Exadata Cloud@Customer instances only. """ def __init__(self, **kwargs): diff --git a/src/oci/database/models/vm_cluster_network_summary.py b/src/oci/database/models/vm_cluster_network_summary.py index 84ff239838..9bc0a40ef3 100644 --- a/src/oci/database/models/vm_cluster_network_summary.py +++ b/src/oci/database/models/vm_cluster_network_summary.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class VmClusterNetworkSummary(object): """ - Details of the Exadata Cloud@Customer VM cluster network. + Details of the VM cluster network. Applies to Exadata Cloud@Customer instances only. """ #: A constant which can be used with the lifecycle_state property of a VmClusterNetworkSummary. diff --git a/src/oci/database/models/vm_cluster_summary.py b/src/oci/database/models/vm_cluster_summary.py index dd8a495085..4864e87088 100644 --- a/src/oci/database/models/vm_cluster_summary.py +++ b/src/oci/database/models/vm_cluster_summary.py @@ -37,6 +37,10 @@ class VmClusterSummary(object): #: This constant has a value of "FAILED" LIFECYCLE_STATE_FAILED = "FAILED" + #: A constant which can be used with the lifecycle_state property of a VmClusterSummary. + #: This constant has a value of "MAINTENANCE_IN_PROGRESS" + LIFECYCLE_STATE_MAINTENANCE_IN_PROGRESS = "MAINTENANCE_IN_PROGRESS" + #: A constant which can be used with the license_model property of a VmClusterSummary. #: This constant has a value of "LICENSE_INCLUDED" LICENSE_MODEL_LICENSE_INCLUDED = "LICENSE_INCLUDED" @@ -64,7 +68,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this VmClusterSummary. - Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -306,7 +310,7 @@ def lifecycle_state(self): Gets the lifecycle_state of this VmClusterSummary. The current state of the VM cluster. - Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -325,7 +329,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this VmClusterSummary. :type: str """ - allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED"] + allowed_values = ["PROVISIONING", "AVAILABLE", "UPDATING", "TERMINATING", "TERMINATED", "FAILED", "MAINTENANCE_IN_PROGRESS"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state diff --git a/src/oci/database/models/vm_network_details.py b/src/oci/database/models/vm_network_details.py index ff17c0614b..155b9cd5b8 100644 --- a/src/oci/database/models/vm_network_details.py +++ b/src/oci/database/models/vm_network_details.py @@ -10,7 +10,7 @@ @init_model_state_from_kwargs class VmNetworkDetails(object): """ - Details of the client or backup networks in an Exadata Cloud@Customer VM cluster network. + Details of the client or backup networks in an Exadata VM cluster network. Applies to Exadata Cloud@Customer instances only. """ #: A constant which can be used with the network_type property of a VmNetworkDetails. diff --git a/src/oci/identity/models/saml2_identity_provider.py b/src/oci/identity/models/saml2_identity_provider.py index 293fb1066f..732fc5cab0 100644 --- a/src/oci/identity/models/saml2_identity_provider.py +++ b/src/oci/identity/models/saml2_identity_provider.py @@ -72,6 +72,10 @@ def __init__(self, **kwargs): The value to assign to the metadata_url property of this Saml2IdentityProvider. :type metadata_url: str + :param metadata: + The value to assign to the metadata property of this Saml2IdentityProvider. + :type metadata: str + :param signing_certificate: The value to assign to the signing_certificate property of this Saml2IdentityProvider. :type signing_certificate: str @@ -98,6 +102,7 @@ def __init__(self, **kwargs): 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'metadata_url': 'str', + 'metadata': 'str', 'signing_certificate': 'str', 'redirect_url': 'str', 'freeform_attributes': 'dict(str, str)' @@ -116,6 +121,7 @@ def __init__(self, **kwargs): 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'metadata_url': 'metadataUrl', + 'metadata': 'metadata', 'signing_certificate': 'signingCertificate', 'redirect_url': 'redirectUrl', 'freeform_attributes': 'freeformAttributes' @@ -133,6 +139,7 @@ def __init__(self, **kwargs): self._freeform_tags = None self._defined_tags = None self._metadata_url = None + self._metadata = None self._signing_certificate = None self._redirect_url = None self._freeform_attributes = None @@ -164,6 +171,30 @@ def metadata_url(self, metadata_url): """ self._metadata_url = metadata_url + @property + def metadata(self): + """ + Gets the metadata of this Saml2IdentityProvider. + The XML that contains the information required for federating Identity with SAML2 Identity Provider. + + + :return: The metadata of this Saml2IdentityProvider. + :rtype: str + """ + return self._metadata + + @metadata.setter + def metadata(self, metadata): + """ + Sets the metadata of this Saml2IdentityProvider. + The XML that contains the information required for federating Identity with SAML2 Identity Provider. + + + :param metadata: The metadata of this Saml2IdentityProvider. + :type: str + """ + self._metadata = metadata + @property def signing_certificate(self): """ diff --git a/src/oci/integration/models/__init__.py b/src/oci/integration/models/__init__.py index da48b4d537..0632c9bd82 100644 --- a/src/oci/integration/models/__init__.py +++ b/src/oci/integration/models/__init__.py @@ -5,9 +5,12 @@ from __future__ import absolute_import from .change_integration_instance_compartment_details import ChangeIntegrationInstanceCompartmentDetails +from .create_custom_endpoint_details import CreateCustomEndpointDetails from .create_integration_instance_details import CreateIntegrationInstanceDetails +from .custom_endpoint_details import CustomEndpointDetails from .integration_instance import IntegrationInstance from .integration_instance_summary import IntegrationInstanceSummary +from .update_custom_endpoint_details import UpdateCustomEndpointDetails from .update_integration_instance_details import UpdateIntegrationInstanceDetails from .work_request import WorkRequest from .work_request_error import WorkRequestError @@ -18,9 +21,12 @@ # Maps type names to classes for integration services. integration_type_mapping = { "ChangeIntegrationInstanceCompartmentDetails": ChangeIntegrationInstanceCompartmentDetails, + "CreateCustomEndpointDetails": CreateCustomEndpointDetails, "CreateIntegrationInstanceDetails": CreateIntegrationInstanceDetails, + "CustomEndpointDetails": CustomEndpointDetails, "IntegrationInstance": IntegrationInstance, "IntegrationInstanceSummary": IntegrationInstanceSummary, + "UpdateCustomEndpointDetails": UpdateCustomEndpointDetails, "UpdateIntegrationInstanceDetails": UpdateIntegrationInstanceDetails, "WorkRequest": WorkRequest, "WorkRequestError": WorkRequestError, diff --git a/src/oci/integration/models/create_custom_endpoint_details.py b/src/oci/integration/models/create_custom_endpoint_details.py new file mode 100644 index 0000000000..d52966223e --- /dev/null +++ b/src/oci/integration/models/create_custom_endpoint_details.py @@ -0,0 +1,105 @@ +# coding: utf-8 +# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. +# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class CreateCustomEndpointDetails(object): + """ + Details for a custom endpoint for the integration instance (update). + """ + + def __init__(self, **kwargs): + """ + Initializes a new CreateCustomEndpointDetails object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param hostname: + The value to assign to the hostname property of this CreateCustomEndpointDetails. + :type hostname: str + + :param certificate_secret_id: + The value to assign to the certificate_secret_id property of this CreateCustomEndpointDetails. + :type certificate_secret_id: str + + """ + self.swagger_types = { + 'hostname': 'str', + 'certificate_secret_id': 'str' + } + + self.attribute_map = { + 'hostname': 'hostname', + 'certificate_secret_id': 'certificateSecretId' + } + + self._hostname = None + self._certificate_secret_id = None + + @property + def hostname(self): + """ + **[Required]** Gets the hostname of this CreateCustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :return: The hostname of this CreateCustomEndpointDetails. + :rtype: str + """ + return self._hostname + + @hostname.setter + def hostname(self, hostname): + """ + Sets the hostname of this CreateCustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :param hostname: The hostname of this CreateCustomEndpointDetails. + :type: str + """ + self._hostname = hostname + + @property + def certificate_secret_id(self): + """ + Gets the certificate_secret_id of this CreateCustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + All certificates should be stored in a single base64 encoded secret + Note the update will fail if this is not a valid certificate. + + + :return: The certificate_secret_id of this CreateCustomEndpointDetails. + :rtype: str + """ + return self._certificate_secret_id + + @certificate_secret_id.setter + def certificate_secret_id(self, certificate_secret_id): + """ + Sets the certificate_secret_id of this CreateCustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + All certificates should be stored in a single base64 encoded secret + Note the update will fail if this is not a valid certificate. + + + :param certificate_secret_id: The certificate_secret_id of this CreateCustomEndpointDetails. + :type: str + """ + self._certificate_secret_id = certificate_secret_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/integration/models/create_integration_instance_details.py b/src/oci/integration/models/create_integration_instance_details.py index 4f0f6a0931..9508a06b27 100644 --- a/src/oci/integration/models/create_integration_instance_details.py +++ b/src/oci/integration/models/create_integration_instance_details.py @@ -71,6 +71,18 @@ def __init__(self, **kwargs): The value to assign to the message_packs property of this CreateIntegrationInstanceDetails. :type message_packs: int + :param is_visual_builder_enabled: + The value to assign to the is_visual_builder_enabled property of this CreateIntegrationInstanceDetails. + :type is_visual_builder_enabled: bool + + :param custom_endpoint: + The value to assign to the custom_endpoint property of this CreateIntegrationInstanceDetails. + :type custom_endpoint: CreateCustomEndpointDetails + + :param alternate_custom_endpoints: + The value to assign to the alternate_custom_endpoints property of this CreateIntegrationInstanceDetails. + :type alternate_custom_endpoints: list[CreateCustomEndpointDetails] + :param consumption_model: The value to assign to the consumption_model property of this CreateIntegrationInstanceDetails. Allowed values for this property are: "UCM", "GOV", "OIC4SAAS" @@ -90,6 +102,9 @@ def __init__(self, **kwargs): 'is_byol': 'bool', 'idcs_at': 'str', 'message_packs': 'int', + 'is_visual_builder_enabled': 'bool', + 'custom_endpoint': 'CreateCustomEndpointDetails', + 'alternate_custom_endpoints': 'list[CreateCustomEndpointDetails]', 'consumption_model': 'str', 'is_file_server_enabled': 'bool' } @@ -103,6 +118,9 @@ def __init__(self, **kwargs): 'is_byol': 'isByol', 'idcs_at': 'idcsAt', 'message_packs': 'messagePacks', + 'is_visual_builder_enabled': 'isVisualBuilderEnabled', + 'custom_endpoint': 'customEndpoint', + 'alternate_custom_endpoints': 'alternateCustomEndpoints', 'consumption_model': 'consumptionModel', 'is_file_server_enabled': 'isFileServerEnabled' } @@ -115,6 +133,9 @@ def __init__(self, **kwargs): self._is_byol = None self._idcs_at = None self._message_packs = None + self._is_visual_builder_enabled = None + self._custom_endpoint = None + self._alternate_custom_endpoints = None self._consumption_model = None self._is_file_server_enabled = None @@ -326,6 +347,76 @@ def message_packs(self, message_packs): """ self._message_packs = message_packs + @property + def is_visual_builder_enabled(self): + """ + Gets the is_visual_builder_enabled of this CreateIntegrationInstanceDetails. + Visual Builder is enabled or not. + + + :return: The is_visual_builder_enabled of this CreateIntegrationInstanceDetails. + :rtype: bool + """ + return self._is_visual_builder_enabled + + @is_visual_builder_enabled.setter + def is_visual_builder_enabled(self, is_visual_builder_enabled): + """ + Sets the is_visual_builder_enabled of this CreateIntegrationInstanceDetails. + Visual Builder is enabled or not. + + + :param is_visual_builder_enabled: The is_visual_builder_enabled of this CreateIntegrationInstanceDetails. + :type: bool + """ + self._is_visual_builder_enabled = is_visual_builder_enabled + + @property + def custom_endpoint(self): + """ + Gets the custom_endpoint of this CreateIntegrationInstanceDetails. + + :return: The custom_endpoint of this CreateIntegrationInstanceDetails. + :rtype: CreateCustomEndpointDetails + """ + return self._custom_endpoint + + @custom_endpoint.setter + def custom_endpoint(self, custom_endpoint): + """ + Sets the custom_endpoint of this CreateIntegrationInstanceDetails. + + :param custom_endpoint: The custom_endpoint of this CreateIntegrationInstanceDetails. + :type: CreateCustomEndpointDetails + """ + self._custom_endpoint = custom_endpoint + + @property + def alternate_custom_endpoints(self): + """ + Gets the alternate_custom_endpoints of this CreateIntegrationInstanceDetails. + A list of alternate custom endpoints to be used for the integration instance URL + (contact Oracle for alternateCustomEndpoints availability for a specific instance). + + + :return: The alternate_custom_endpoints of this CreateIntegrationInstanceDetails. + :rtype: list[CreateCustomEndpointDetails] + """ + return self._alternate_custom_endpoints + + @alternate_custom_endpoints.setter + def alternate_custom_endpoints(self, alternate_custom_endpoints): + """ + Sets the alternate_custom_endpoints of this CreateIntegrationInstanceDetails. + A list of alternate custom endpoints to be used for the integration instance URL + (contact Oracle for alternateCustomEndpoints availability for a specific instance). + + + :param alternate_custom_endpoints: The alternate_custom_endpoints of this CreateIntegrationInstanceDetails. + :type: list[CreateCustomEndpointDetails] + """ + self._alternate_custom_endpoints = alternate_custom_endpoints + @property def consumption_model(self): """ diff --git a/src/oci/integration/models/custom_endpoint_details.py b/src/oci/integration/models/custom_endpoint_details.py new file mode 100644 index 0000000000..b0100e0ba2 --- /dev/null +++ b/src/oci/integration/models/custom_endpoint_details.py @@ -0,0 +1,132 @@ +# coding: utf-8 +# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. +# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class CustomEndpointDetails(object): + """ + Details for a custom endpoint for the integration instance. + """ + + def __init__(self, **kwargs): + """ + Initializes a new CustomEndpointDetails object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param hostname: + The value to assign to the hostname property of this CustomEndpointDetails. + :type hostname: str + + :param certificate_secret_id: + The value to assign to the certificate_secret_id property of this CustomEndpointDetails. + :type certificate_secret_id: str + + :param certificate_secret_version: + The value to assign to the certificate_secret_version property of this CustomEndpointDetails. + :type certificate_secret_version: int + + """ + self.swagger_types = { + 'hostname': 'str', + 'certificate_secret_id': 'str', + 'certificate_secret_version': 'int' + } + + self.attribute_map = { + 'hostname': 'hostname', + 'certificate_secret_id': 'certificateSecretId', + 'certificate_secret_version': 'certificateSecretVersion' + } + + self._hostname = None + self._certificate_secret_id = None + self._certificate_secret_version = None + + @property + def hostname(self): + """ + **[Required]** Gets the hostname of this CustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :return: The hostname of this CustomEndpointDetails. + :rtype: str + """ + return self._hostname + + @hostname.setter + def hostname(self, hostname): + """ + Sets the hostname of this CustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :param hostname: The hostname of this CustomEndpointDetails. + :type: str + """ + self._hostname = hostname + + @property + def certificate_secret_id(self): + """ + Gets the certificate_secret_id of this CustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + + + :return: The certificate_secret_id of this CustomEndpointDetails. + :rtype: str + """ + return self._certificate_secret_id + + @certificate_secret_id.setter + def certificate_secret_id(self, certificate_secret_id): + """ + Sets the certificate_secret_id of this CustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + + + :param certificate_secret_id: The certificate_secret_id of this CustomEndpointDetails. + :type: str + """ + self._certificate_secret_id = certificate_secret_id + + @property + def certificate_secret_version(self): + """ + Gets the certificate_secret_version of this CustomEndpointDetails. + The secret version used for the certificate-secret-id (if certificate-secret-id is specified). + + + :return: The certificate_secret_version of this CustomEndpointDetails. + :rtype: int + """ + return self._certificate_secret_version + + @certificate_secret_version.setter + def certificate_secret_version(self, certificate_secret_version): + """ + Sets the certificate_secret_version of this CustomEndpointDetails. + The secret version used for the certificate-secret-id (if certificate-secret-id is specified). + + + :param certificate_secret_version: The certificate_secret_version of this CustomEndpointDetails. + :type: int + """ + self._certificate_secret_version = certificate_secret_version + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/integration/models/integration_instance.py b/src/oci/integration/models/integration_instance.py index 0736563837..68d8ebd559 100644 --- a/src/oci/integration/models/integration_instance.py +++ b/src/oci/integration/models/integration_instance.py @@ -126,6 +126,18 @@ def __init__(self, **kwargs): The value to assign to the is_file_server_enabled property of this IntegrationInstance. :type is_file_server_enabled: bool + :param is_visual_builder_enabled: + The value to assign to the is_visual_builder_enabled property of this IntegrationInstance. + :type is_visual_builder_enabled: bool + + :param custom_endpoint: + The value to assign to the custom_endpoint property of this IntegrationInstance. + :type custom_endpoint: CustomEndpointDetails + + :param alternate_custom_endpoints: + The value to assign to the alternate_custom_endpoints property of this IntegrationInstance. + :type alternate_custom_endpoints: list[CustomEndpointDetails] + :param consumption_model: The value to assign to the consumption_model property of this IntegrationInstance. Allowed values for this property are: "UCM", "GOV", "OIC4SAAS", 'UNKNOWN_ENUM_VALUE'. @@ -148,6 +160,9 @@ def __init__(self, **kwargs): 'instance_url': 'str', 'message_packs': 'int', 'is_file_server_enabled': 'bool', + 'is_visual_builder_enabled': 'bool', + 'custom_endpoint': 'CustomEndpointDetails', + 'alternate_custom_endpoints': 'list[CustomEndpointDetails]', 'consumption_model': 'str' } @@ -166,6 +181,9 @@ def __init__(self, **kwargs): 'instance_url': 'instanceUrl', 'message_packs': 'messagePacks', 'is_file_server_enabled': 'isFileServerEnabled', + 'is_visual_builder_enabled': 'isVisualBuilderEnabled', + 'custom_endpoint': 'customEndpoint', + 'alternate_custom_endpoints': 'alternateCustomEndpoints', 'consumption_model': 'consumptionModel' } @@ -183,6 +201,9 @@ def __init__(self, **kwargs): self._instance_url = None self._message_packs = None self._is_file_server_enabled = None + self._is_visual_builder_enabled = None + self._custom_endpoint = None + self._alternate_custom_endpoints = None self._consumption_model = None @property @@ -541,6 +562,74 @@ def is_file_server_enabled(self, is_file_server_enabled): """ self._is_file_server_enabled = is_file_server_enabled + @property + def is_visual_builder_enabled(self): + """ + Gets the is_visual_builder_enabled of this IntegrationInstance. + VisualBuilder is enabled or not. + + + :return: The is_visual_builder_enabled of this IntegrationInstance. + :rtype: bool + """ + return self._is_visual_builder_enabled + + @is_visual_builder_enabled.setter + def is_visual_builder_enabled(self, is_visual_builder_enabled): + """ + Sets the is_visual_builder_enabled of this IntegrationInstance. + VisualBuilder is enabled or not. + + + :param is_visual_builder_enabled: The is_visual_builder_enabled of this IntegrationInstance. + :type: bool + """ + self._is_visual_builder_enabled = is_visual_builder_enabled + + @property + def custom_endpoint(self): + """ + Gets the custom_endpoint of this IntegrationInstance. + + :return: The custom_endpoint of this IntegrationInstance. + :rtype: CustomEndpointDetails + """ + return self._custom_endpoint + + @custom_endpoint.setter + def custom_endpoint(self, custom_endpoint): + """ + Sets the custom_endpoint of this IntegrationInstance. + + :param custom_endpoint: The custom_endpoint of this IntegrationInstance. + :type: CustomEndpointDetails + """ + self._custom_endpoint = custom_endpoint + + @property + def alternate_custom_endpoints(self): + """ + Gets the alternate_custom_endpoints of this IntegrationInstance. + A list of alternate custom endpoints used for the integration instance URL. + + + :return: The alternate_custom_endpoints of this IntegrationInstance. + :rtype: list[CustomEndpointDetails] + """ + return self._alternate_custom_endpoints + + @alternate_custom_endpoints.setter + def alternate_custom_endpoints(self, alternate_custom_endpoints): + """ + Sets the alternate_custom_endpoints of this IntegrationInstance. + A list of alternate custom endpoints used for the integration instance URL. + + + :param alternate_custom_endpoints: The alternate_custom_endpoints of this IntegrationInstance. + :type: list[CustomEndpointDetails] + """ + self._alternate_custom_endpoints = alternate_custom_endpoints + @property def consumption_model(self): """ diff --git a/src/oci/integration/models/integration_instance_summary.py b/src/oci/integration/models/integration_instance_summary.py index 8e3d6e7391..708fd30016 100644 --- a/src/oci/integration/models/integration_instance_summary.py +++ b/src/oci/integration/models/integration_instance_summary.py @@ -118,6 +118,18 @@ def __init__(self, **kwargs): The value to assign to the is_file_server_enabled property of this IntegrationInstanceSummary. :type is_file_server_enabled: bool + :param is_visual_builder_enabled: + The value to assign to the is_visual_builder_enabled property of this IntegrationInstanceSummary. + :type is_visual_builder_enabled: bool + + :param custom_endpoint: + The value to assign to the custom_endpoint property of this IntegrationInstanceSummary. + :type custom_endpoint: CustomEndpointDetails + + :param alternate_custom_endpoints: + The value to assign to the alternate_custom_endpoints property of this IntegrationInstanceSummary. + :type alternate_custom_endpoints: list[CustomEndpointDetails] + :param consumption_model: The value to assign to the consumption_model property of this IntegrationInstanceSummary. Allowed values for this property are: "UCM", "GOV", "OIC4SAAS", 'UNKNOWN_ENUM_VALUE'. @@ -138,6 +150,9 @@ def __init__(self, **kwargs): 'instance_url': 'str', 'message_packs': 'int', 'is_file_server_enabled': 'bool', + 'is_visual_builder_enabled': 'bool', + 'custom_endpoint': 'CustomEndpointDetails', + 'alternate_custom_endpoints': 'list[CustomEndpointDetails]', 'consumption_model': 'str' } @@ -154,6 +169,9 @@ def __init__(self, **kwargs): 'instance_url': 'instanceUrl', 'message_packs': 'messagePacks', 'is_file_server_enabled': 'isFileServerEnabled', + 'is_visual_builder_enabled': 'isVisualBuilderEnabled', + 'custom_endpoint': 'customEndpoint', + 'alternate_custom_endpoints': 'alternateCustomEndpoints', 'consumption_model': 'consumptionModel' } @@ -169,6 +187,9 @@ def __init__(self, **kwargs): self._instance_url = None self._message_packs = None self._is_file_server_enabled = None + self._is_visual_builder_enabled = None + self._custom_endpoint = None + self._alternate_custom_endpoints = None self._consumption_model = None @property @@ -471,6 +492,74 @@ def is_file_server_enabled(self, is_file_server_enabled): """ self._is_file_server_enabled = is_file_server_enabled + @property + def is_visual_builder_enabled(self): + """ + Gets the is_visual_builder_enabled of this IntegrationInstanceSummary. + Visual Builder is enabled or not. + + + :return: The is_visual_builder_enabled of this IntegrationInstanceSummary. + :rtype: bool + """ + return self._is_visual_builder_enabled + + @is_visual_builder_enabled.setter + def is_visual_builder_enabled(self, is_visual_builder_enabled): + """ + Sets the is_visual_builder_enabled of this IntegrationInstanceSummary. + Visual Builder is enabled or not. + + + :param is_visual_builder_enabled: The is_visual_builder_enabled of this IntegrationInstanceSummary. + :type: bool + """ + self._is_visual_builder_enabled = is_visual_builder_enabled + + @property + def custom_endpoint(self): + """ + Gets the custom_endpoint of this IntegrationInstanceSummary. + + :return: The custom_endpoint of this IntegrationInstanceSummary. + :rtype: CustomEndpointDetails + """ + return self._custom_endpoint + + @custom_endpoint.setter + def custom_endpoint(self, custom_endpoint): + """ + Sets the custom_endpoint of this IntegrationInstanceSummary. + + :param custom_endpoint: The custom_endpoint of this IntegrationInstanceSummary. + :type: CustomEndpointDetails + """ + self._custom_endpoint = custom_endpoint + + @property + def alternate_custom_endpoints(self): + """ + Gets the alternate_custom_endpoints of this IntegrationInstanceSummary. + A list of alternate custom endpoints used for the integration instance URL. + + + :return: The alternate_custom_endpoints of this IntegrationInstanceSummary. + :rtype: list[CustomEndpointDetails] + """ + return self._alternate_custom_endpoints + + @alternate_custom_endpoints.setter + def alternate_custom_endpoints(self, alternate_custom_endpoints): + """ + Sets the alternate_custom_endpoints of this IntegrationInstanceSummary. + A list of alternate custom endpoints used for the integration instance URL. + + + :param alternate_custom_endpoints: The alternate_custom_endpoints of this IntegrationInstanceSummary. + :type: list[CustomEndpointDetails] + """ + self._alternate_custom_endpoints = alternate_custom_endpoints + @property def consumption_model(self): """ diff --git a/src/oci/integration/models/update_custom_endpoint_details.py b/src/oci/integration/models/update_custom_endpoint_details.py new file mode 100644 index 0000000000..9b16b7a57b --- /dev/null +++ b/src/oci/integration/models/update_custom_endpoint_details.py @@ -0,0 +1,105 @@ +# coding: utf-8 +# Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. +# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdateCustomEndpointDetails(object): + """ + Details for a custom endpoint for the integration instance (update). + """ + + def __init__(self, **kwargs): + """ + Initializes a new UpdateCustomEndpointDetails object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param hostname: + The value to assign to the hostname property of this UpdateCustomEndpointDetails. + :type hostname: str + + :param certificate_secret_id: + The value to assign to the certificate_secret_id property of this UpdateCustomEndpointDetails. + :type certificate_secret_id: str + + """ + self.swagger_types = { + 'hostname': 'str', + 'certificate_secret_id': 'str' + } + + self.attribute_map = { + 'hostname': 'hostname', + 'certificate_secret_id': 'certificateSecretId' + } + + self._hostname = None + self._certificate_secret_id = None + + @property + def hostname(self): + """ + **[Required]** Gets the hostname of this UpdateCustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :return: The hostname of this UpdateCustomEndpointDetails. + :rtype: str + """ + return self._hostname + + @hostname.setter + def hostname(self, hostname): + """ + Sets the hostname of this UpdateCustomEndpointDetails. + A custom hostname to be used for the integration instance URL, in FQDN format. + + + :param hostname: The hostname of this UpdateCustomEndpointDetails. + :type: str + """ + self._hostname = hostname + + @property + def certificate_secret_id(self): + """ + Gets the certificate_secret_id of this UpdateCustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + All certificates should be stored in a single base64 encoded secret. + Note the update will fail if this is not a valid certificate. + + + :return: The certificate_secret_id of this UpdateCustomEndpointDetails. + :rtype: str + """ + return self._certificate_secret_id + + @certificate_secret_id.setter + def certificate_secret_id(self, certificate_secret_id): + """ + Sets the certificate_secret_id of this UpdateCustomEndpointDetails. + Optional OCID of a vault/secret containing a private SSL certificate bundle to be used for the custom hostname. + All certificates should be stored in a single base64 encoded secret. + Note the update will fail if this is not a valid certificate. + + + :param certificate_secret_id: The certificate_secret_id of this UpdateCustomEndpointDetails. + :type: str + """ + self._certificate_secret_id = certificate_secret_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/integration/models/update_integration_instance_details.py b/src/oci/integration/models/update_integration_instance_details.py index cf79c97952..06b6a9e191 100644 --- a/src/oci/integration/models/update_integration_instance_details.py +++ b/src/oci/integration/models/update_integration_instance_details.py @@ -55,6 +55,18 @@ def __init__(self, **kwargs): The value to assign to the is_file_server_enabled property of this UpdateIntegrationInstanceDetails. :type is_file_server_enabled: bool + :param is_visual_builder_enabled: + The value to assign to the is_visual_builder_enabled property of this UpdateIntegrationInstanceDetails. + :type is_visual_builder_enabled: bool + + :param custom_endpoint: + The value to assign to the custom_endpoint property of this UpdateIntegrationInstanceDetails. + :type custom_endpoint: UpdateCustomEndpointDetails + + :param alternate_custom_endpoints: + The value to assign to the alternate_custom_endpoints property of this UpdateIntegrationInstanceDetails. + :type alternate_custom_endpoints: list[UpdateCustomEndpointDetails] + """ self.swagger_types = { 'display_name': 'str', @@ -63,7 +75,10 @@ def __init__(self, **kwargs): 'defined_tags': 'dict(str, dict(str, object))', 'is_byol': 'bool', 'message_packs': 'int', - 'is_file_server_enabled': 'bool' + 'is_file_server_enabled': 'bool', + 'is_visual_builder_enabled': 'bool', + 'custom_endpoint': 'UpdateCustomEndpointDetails', + 'alternate_custom_endpoints': 'list[UpdateCustomEndpointDetails]' } self.attribute_map = { @@ -73,7 +88,10 @@ def __init__(self, **kwargs): 'defined_tags': 'definedTags', 'is_byol': 'isByol', 'message_packs': 'messagePacks', - 'is_file_server_enabled': 'isFileServerEnabled' + 'is_file_server_enabled': 'isFileServerEnabled', + 'is_visual_builder_enabled': 'isVisualBuilderEnabled', + 'custom_endpoint': 'customEndpoint', + 'alternate_custom_endpoints': 'alternateCustomEndpoints' } self._display_name = None @@ -83,6 +101,9 @@ def __init__(self, **kwargs): self._is_byol = None self._message_packs = None self._is_file_server_enabled = None + self._is_visual_builder_enabled = None + self._custom_endpoint = None + self._alternate_custom_endpoints = None @property def display_name(self): @@ -268,6 +289,76 @@ def is_file_server_enabled(self, is_file_server_enabled): """ self._is_file_server_enabled = is_file_server_enabled + @property + def is_visual_builder_enabled(self): + """ + Gets the is_visual_builder_enabled of this UpdateIntegrationInstanceDetails. + Visual Builder is enabled or not. + + + :return: The is_visual_builder_enabled of this UpdateIntegrationInstanceDetails. + :rtype: bool + """ + return self._is_visual_builder_enabled + + @is_visual_builder_enabled.setter + def is_visual_builder_enabled(self, is_visual_builder_enabled): + """ + Sets the is_visual_builder_enabled of this UpdateIntegrationInstanceDetails. + Visual Builder is enabled or not. + + + :param is_visual_builder_enabled: The is_visual_builder_enabled of this UpdateIntegrationInstanceDetails. + :type: bool + """ + self._is_visual_builder_enabled = is_visual_builder_enabled + + @property + def custom_endpoint(self): + """ + Gets the custom_endpoint of this UpdateIntegrationInstanceDetails. + + :return: The custom_endpoint of this UpdateIntegrationInstanceDetails. + :rtype: UpdateCustomEndpointDetails + """ + return self._custom_endpoint + + @custom_endpoint.setter + def custom_endpoint(self, custom_endpoint): + """ + Sets the custom_endpoint of this UpdateIntegrationInstanceDetails. + + :param custom_endpoint: The custom_endpoint of this UpdateIntegrationInstanceDetails. + :type: UpdateCustomEndpointDetails + """ + self._custom_endpoint = custom_endpoint + + @property + def alternate_custom_endpoints(self): + """ + Gets the alternate_custom_endpoints of this UpdateIntegrationInstanceDetails. + A list of alternate custom endpoints to be used for the integration instance URL + (contact Oracle for alternateCustomEndpoints availability for a specific instance). + + + :return: The alternate_custom_endpoints of this UpdateIntegrationInstanceDetails. + :rtype: list[UpdateCustomEndpointDetails] + """ + return self._alternate_custom_endpoints + + @alternate_custom_endpoints.setter + def alternate_custom_endpoints(self, alternate_custom_endpoints): + """ + Sets the alternate_custom_endpoints of this UpdateIntegrationInstanceDetails. + A list of alternate custom endpoints to be used for the integration instance URL + (contact Oracle for alternateCustomEndpoints availability for a specific instance). + + + :param alternate_custom_endpoints: The alternate_custom_endpoints of this UpdateIntegrationInstanceDetails. + :type: list[UpdateCustomEndpointDetails] + """ + self._alternate_custom_endpoints = alternate_custom_endpoints + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/opsi/models/sql_insight_aggregation.py b/src/oci/opsi/models/sql_insight_aggregation.py index 48b0cc5ef1..e63b1a9a7b 100644 --- a/src/oci/opsi/models/sql_insight_aggregation.py +++ b/src/oci/opsi/models/sql_insight_aggregation.py @@ -53,7 +53,7 @@ def text(self): **[Required]** Gets the text of this SqlInsightAggregation. Insight text. For example `Degrading SQLs`, `Variant SQLs`, - `Inefficient SQLs`, `SQLs with Plan Changes`, + `Inefficient SQLs`, `Improving SQLs`, `SQLs with Plan Changes`, `Degrading SQLs have increasing IO Time above 50%`, `Degrading SQLs are variant`, `2 of the 2 variant SQLs have plan changes`, @@ -71,7 +71,7 @@ def text(self, text): Sets the text of this SqlInsightAggregation. Insight text. For example `Degrading SQLs`, `Variant SQLs`, - `Inefficient SQLs`, `SQLs with Plan Changes`, + `Inefficient SQLs`, `Improving SQLs`, `SQLs with Plan Changes`, `Degrading SQLs have increasing IO Time above 50%`, `Degrading SQLs are variant`, `2 of the 2 variant SQLs have plan changes`, @@ -116,6 +116,7 @@ def category(self): VARIANT, INEFFICIENT, CHANGING_PLANS, + IMPROVING, DEGRADING_VARIANT, DEGRADING_INEFFICIENT, DEGRADING_CHANGING_PLANS, @@ -151,6 +152,7 @@ def category(self, category): VARIANT, INEFFICIENT, CHANGING_PLANS, + IMPROVING, DEGRADING_VARIANT, DEGRADING_INEFFICIENT, DEGRADING_CHANGING_PLANS, diff --git a/src/oci/opsi/models/sql_insight_thresholds.py b/src/oci/opsi/models/sql_insight_thresholds.py index 7016649aec..7ed6e0a304 100644 --- a/src/oci/opsi/models/sql_insight_thresholds.py +++ b/src/oci/opsi/models/sql_insight_thresholds.py @@ -42,6 +42,10 @@ def __init__(self, **kwargs): The value to assign to the increase_in_inefficient_wait_in_pct property of this SqlInsightThresholds. :type increase_in_inefficient_wait_in_pct: int + :param improved_in_pct: + The value to assign to the improved_in_pct property of this SqlInsightThresholds. + :type improved_in_pct: int + """ self.swagger_types = { 'degradation_in_pct': 'int', @@ -49,7 +53,8 @@ def __init__(self, **kwargs): 'inefficiency_in_pct': 'int', 'increase_in_io_in_pct': 'int', 'increase_in_cpu_in_pct': 'int', - 'increase_in_inefficient_wait_in_pct': 'int' + 'increase_in_inefficient_wait_in_pct': 'int', + 'improved_in_pct': 'int' } self.attribute_map = { @@ -58,7 +63,8 @@ def __init__(self, **kwargs): 'inefficiency_in_pct': 'inefficiencyInPct', 'increase_in_io_in_pct': 'increaseInIOInPct', 'increase_in_cpu_in_pct': 'increaseInCPUInPct', - 'increase_in_inefficient_wait_in_pct': 'increaseInInefficientWaitInPct' + 'increase_in_inefficient_wait_in_pct': 'increaseInInefficientWaitInPct', + 'improved_in_pct': 'improvedInPct' } self._degradation_in_pct = None @@ -67,6 +73,7 @@ def __init__(self, **kwargs): self._increase_in_io_in_pct = None self._increase_in_cpu_in_pct = None self._increase_in_inefficient_wait_in_pct = None + self._improved_in_pct = None @property def degradation_in_pct(self): @@ -224,6 +231,30 @@ def increase_in_inefficient_wait_in_pct(self, increase_in_inefficient_wait_in_pc """ self._increase_in_inefficient_wait_in_pct = increase_in_inefficient_wait_in_pct + @property + def improved_in_pct(self): + """ + **[Required]** Gets the improved_in_pct of this SqlInsightThresholds. + Improved Percent Threshold is used to derive improving SQLs. + + + :return: The improved_in_pct of this SqlInsightThresholds. + :rtype: int + """ + return self._improved_in_pct + + @improved_in_pct.setter + def improved_in_pct(self, improved_in_pct): + """ + Sets the improved_in_pct of this SqlInsightThresholds. + Improved Percent Threshold is used to derive improving SQLs. + + + :param improved_in_pct: The improved_in_pct of this SqlInsightThresholds. + :type: int + """ + self._improved_in_pct = improved_in_pct + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/opsi/operations_insights_client.py b/src/oci/opsi/operations_insights_client.py index a946e0821d..380af440e1 100644 --- a/src/oci/opsi/operations_insights_client.py +++ b/src/oci/opsi/operations_insights_client.py @@ -2282,7 +2282,7 @@ def summarize_sql_statistics(self, compartment_id, **kwargs): :param list[str] category: (optional) Filter sqls by one or more performance categories. - Allowed values are: "DEGRADING", "VARIANT", "INEFFICIENT", "CHANGING_PLANS", "DEGRADING_VARIANT", "DEGRADING_INEFFICIENT", "DEGRADING_CHANGING_PLANS", "DEGRADING_INCREASING_IO", "DEGRADING_INCREASING_CPU", "DEGRADING_INCREASING_INEFFICIENT_WAIT", "DEGRADING_CHANGING_PLANS_AND_INCREASING_IO", "DEGRADING_CHANGING_PLANS_AND_INCREASING_CPU", "DEGRADING_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "VARIANT_INEFFICIENT", "VARIANT_CHANGING_PLANS", "VARIANT_INCREASING_IO", "VARIANT_INCREASING_CPU", "VARIANT_INCREASING_INEFFICIENT_WAIT", "VARIANT_CHANGING_PLANS_AND_INCREASING_IO", "VARIANT_CHANGING_PLANS_AND_INCREASING_CPU", "VARIANT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS", "INEFFICIENT_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT" + Allowed values are: "DEGRADING", "VARIANT", "INEFFICIENT", "CHANGING_PLANS", "IMPROVING", "DEGRADING_VARIANT", "DEGRADING_INEFFICIENT", "DEGRADING_CHANGING_PLANS", "DEGRADING_INCREASING_IO", "DEGRADING_INCREASING_CPU", "DEGRADING_INCREASING_INEFFICIENT_WAIT", "DEGRADING_CHANGING_PLANS_AND_INCREASING_IO", "DEGRADING_CHANGING_PLANS_AND_INCREASING_CPU", "DEGRADING_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "VARIANT_INEFFICIENT", "VARIANT_CHANGING_PLANS", "VARIANT_INCREASING_IO", "VARIANT_INCREASING_CPU", "VARIANT_INCREASING_INEFFICIENT_WAIT", "VARIANT_CHANGING_PLANS_AND_INCREASING_IO", "VARIANT_CHANGING_PLANS_AND_INCREASING_CPU", "VARIANT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS", "INEFFICIENT_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT" :param obj retry_strategy: (optional) A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. @@ -2343,7 +2343,7 @@ def summarize_sql_statistics(self, compartment_id, **kwargs): ) if 'category' in kwargs: - category_allowed_values = ["DEGRADING", "VARIANT", "INEFFICIENT", "CHANGING_PLANS", "DEGRADING_VARIANT", "DEGRADING_INEFFICIENT", "DEGRADING_CHANGING_PLANS", "DEGRADING_INCREASING_IO", "DEGRADING_INCREASING_CPU", "DEGRADING_INCREASING_INEFFICIENT_WAIT", "DEGRADING_CHANGING_PLANS_AND_INCREASING_IO", "DEGRADING_CHANGING_PLANS_AND_INCREASING_CPU", "DEGRADING_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "VARIANT_INEFFICIENT", "VARIANT_CHANGING_PLANS", "VARIANT_INCREASING_IO", "VARIANT_INCREASING_CPU", "VARIANT_INCREASING_INEFFICIENT_WAIT", "VARIANT_CHANGING_PLANS_AND_INCREASING_IO", "VARIANT_CHANGING_PLANS_AND_INCREASING_CPU", "VARIANT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS", "INEFFICIENT_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT"] + category_allowed_values = ["DEGRADING", "VARIANT", "INEFFICIENT", "CHANGING_PLANS", "IMPROVING", "DEGRADING_VARIANT", "DEGRADING_INEFFICIENT", "DEGRADING_CHANGING_PLANS", "DEGRADING_INCREASING_IO", "DEGRADING_INCREASING_CPU", "DEGRADING_INCREASING_INEFFICIENT_WAIT", "DEGRADING_CHANGING_PLANS_AND_INCREASING_IO", "DEGRADING_CHANGING_PLANS_AND_INCREASING_CPU", "DEGRADING_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "VARIANT_INEFFICIENT", "VARIANT_CHANGING_PLANS", "VARIANT_INCREASING_IO", "VARIANT_INCREASING_CPU", "VARIANT_INCREASING_INEFFICIENT_WAIT", "VARIANT_CHANGING_PLANS_AND_INCREASING_IO", "VARIANT_CHANGING_PLANS_AND_INCREASING_CPU", "VARIANT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS", "INEFFICIENT_INCREASING_INEFFICIENT_WAIT", "INEFFICIENT_CHANGING_PLANS_AND_INCREASING_INEFFICIENT_WAIT"] for category_item in kwargs['category']: if category_item not in category_allowed_values: raise ValueError( diff --git a/src/oci/version.py b/src/oci/version.py index 749024d963..fe6a74a42a 100644 --- a/src/oci/version.py +++ b/src/oci/version.py @@ -2,4 +2,4 @@ # Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -__version__ = "2.25.0" +__version__ = "2.25.1"