oci-cli 3.69.0__py3-none-any.whl → 3.70.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. oci_cli/bin/psa.psm1 +51 -0
  2. oci_cli/help_text_producer/data_files/text/cmdref/compute-management/instance-pool/create.txt +11 -0
  3. oci_cli/help_text_producer/data_files/text/cmdref/compute-management/instance-pool/update.txt +11 -0
  4. oci_cli/help_text_producer/data_files/text/cmdref/compute-management/instance-pool-instance/attach.txt +1 -1
  5. oci_cli/help_text_producer/data_files/text/cmdref/compute-management/instance-pool-instance/termination-proceed.txt +116 -0
  6. oci_cli/help_text_producer/data_files/text/cmdref/compute-management/instance-pool-instance.txt +2 -0
  7. oci_cli/help_text_producer/data_files/text/cmdref/compute-management.txt +2 -0
  8. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot/delete.txt +129 -0
  9. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot/get.txt +92 -0
  10. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot/list.txt +153 -0
  11. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot/mount.txt +131 -0
  12. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot/unmount.txt +131 -0
  13. oci_cli/help_text_producer/data_files/text/cmdref/db/dbnode-snapshot.txt +22 -0
  14. oci_cli/help_text_producer/data_files/text/cmdref/db/exadb-vm-cluster/add.txt +154 -0
  15. oci_cli/help_text_producer/data_files/text/cmdref/db/exadb-vm-cluster.txt +2 -0
  16. oci_cli/help_text_producer/data_files/text/cmdref/db.txt +14 -0
  17. oci_cli/help_text_producer/data_files/text/cmdref/delegate-access-control/work-request/{work-request-log-entry/list-work-request-logs.txt → work-request-log/list.txt} +5 -5
  18. oci_cli/help_text_producer/data_files/text/cmdref/delegate-access-control/work-request.txt +2 -2
  19. oci_cli/help_text_producer/data_files/text/cmdref/delegate-access-control.txt +2 -2
  20. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-autonomous-db-service/distributed-autonomous-database/change-distributed-autonomous-db-backup-config.txt +159 -0
  21. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-autonomous-db-service/distributed-autonomous-database/create.txt +42 -12
  22. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-autonomous-db-service/distributed-autonomous-database/rotate-distributed-autonomous-database-passwords.txt +3 -2
  23. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-autonomous-db-service/distributed-autonomous-database.txt +2 -0
  24. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-autonomous-db-service.txt +2 -0
  25. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-db-service/distributed-database/create.txt +31 -11
  26. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database/distributed-db-service/distributed-database/rotate-distributed-database-passwords.txt +3 -2
  27. oci_cli/help_text_producer/data_files/text/cmdref/distributed-database.txt +2 -0
  28. oci_cli/help_text_producer/data_files/text/cmdref/governance-rules-control-plane/work-request/work-request-error/{list-errors.txt → list.txt} +5 -5
  29. oci_cli/help_text_producer/data_files/text/cmdref/governance-rules-control-plane/work-request/work-request-error.txt +1 -1
  30. oci_cli/help_text_producer/data_files/text/cmdref/governance-rules-control-plane/work-request/{work-request-log/list.txt → work-request-log-entry/list-work-request-logs.txt} +5 -5
  31. oci_cli/help_text_producer/data_files/text/cmdref/governance-rules-control-plane/work-request.txt +3 -3
  32. oci_cli/help_text_producer/data_files/text/cmdref/governance-rules-control-plane.txt +3 -3
  33. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/change-compartment.txt +136 -0
  34. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/create.txt +214 -0
  35. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/delete.txt +133 -0
  36. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/get.txt +95 -0
  37. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/list.txt +152 -0
  38. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access/update.txt +211 -0
  39. oci_cli/help_text_producer/data_files/text/cmdref/psa/private-service-access.txt +25 -0
  40. oci_cli/help_text_producer/data_files/text/cmdref/psa/psa-services/list.txt +129 -0
  41. oci_cli/help_text_producer/data_files/text/cmdref/psa/psa-services.txt +16 -0
  42. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request/cancel.txt +103 -0
  43. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request/get.txt +91 -0
  44. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request/list.txt +140 -0
  45. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request-error/list.txt +131 -0
  46. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request-error.txt +15 -0
  47. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request-log/list.txt +131 -0
  48. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request-log.txt +15 -0
  49. oci_cli/help_text_producer/data_files/text/cmdref/psa/work-request.txt +23 -0
  50. oci_cli/help_text_producer/data_files/text/cmdref/psa.txt +47 -0
  51. oci_cli/help_text_producer/data_files/text/cmdref/session/authenticate.txt +9 -9
  52. oci_cli/help_text_producer/data_files/text/cmdref/support/incident/create.txt +6 -6
  53. oci_cli/help_text_producer/data_files/text/cmdref/support/incident/get.txt +2 -2
  54. oci_cli/help_text_producer/data_files/text/cmdref/support/incident/list.txt +1 -1
  55. oci_cli/help_text_producer/data_files/text/cmdref/support/incident/update.txt +4 -4
  56. oci_cli/help_text_producer/data_files/text/cmdref/support/incident-resource-type/list.txt +3 -3
  57. oci_cli/help_text_producer/data_files/text/cmdref/support/validation-response/validate-user.txt +1 -1
  58. oci_cli/help_text_producer/data_files/text/index.txt +2 -0
  59. oci_cli/service_mapping.py +5 -0
  60. oci_cli/version.py +1 -1
  61. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/METADATA +2 -2
  62. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/RECORD +81 -45
  63. services/core/src/oci_cli_compute_management/generated/computemanagement_cli.py +44 -9
  64. services/database/src/oci_cli_database/generated/database_cli.py +309 -0
  65. services/distributed_database/src/oci_cli_distributed_autonomous_db_service/generated/distributedautonomousdbservice_cli.py +77 -12
  66. services/distributed_database/src/oci_cli_distributed_db_service/generated/distributeddbservice_cli.py +8 -8
  67. services/psa/__init__.py +4 -0
  68. services/psa/src/__init__.py +4 -0
  69. services/psa/src/oci_cli_private_service_access/__init__.py +4 -0
  70. services/psa/src/oci_cli_private_service_access/generated/__init__.py +4 -0
  71. services/psa/src/oci_cli_private_service_access/generated/client_mappings.py +14 -0
  72. services/psa/src/oci_cli_private_service_access/generated/privateserviceaccess_cli.py +738 -0
  73. services/psa/src/oci_cli_private_service_access/privateserviceaccess_cli_extended.py +92 -0
  74. services/psa/tests/__init__.py +4 -0
  75. /oci_cli/help_text_producer/data_files/text/cmdref/{governance-rules-control-plane → delegate-access-control}/work-request/work-request-log.txt +0 -0
  76. /oci_cli/help_text_producer/data_files/text/cmdref/{delegate-access-control → governance-rules-control-plane}/work-request/work-request-log-entry.txt +0 -0
  77. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/LICENSE.txt +0 -0
  78. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/THIRD_PARTY_LICENSES.txt +0 -0
  79. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/WHEEL +0 -0
  80. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/entry_points.txt +0 -0
  81. {oci_cli-3.69.0.dist-info → oci_cli-3.70.0.dist-info}/top_level.txt +0 -0
@@ -308,6 +308,12 @@ def console_connection_group():
308
308
  pass
309
309
 
310
310
 
311
+ @click.command(cli_util.override('db.dbnode_snapshot_group.command_name', 'dbnode-snapshot'), cls=CommandGroupWithAlias, help="""Details of the Database Node Snapshot.""")
312
+ @cli_util.help_option_group
313
+ def dbnode_snapshot_group():
314
+ pass
315
+
316
+
311
317
  @click.command(cli_util.override('db.external_database_connector_group.command_name', 'external-database-connector'), cls=CommandGroupWithAlias, help="""An Oracle Cloud Infrastructure resource used to connect to an external Oracle Database. This resource stores the database connection string, user credentials, and related details that allow you to manage your external database using the Oracle Cloud Infrastructure Console and API interfaces.""")
312
318
  @cli_util.help_option_group
313
319
  def external_database_connector_group():
@@ -574,6 +580,7 @@ db_root_group.add_command(system_version_collection_group)
574
580
  db_root_group.add_command(backup_destination_summary_group)
575
581
  db_root_group.add_command(db_node_group)
576
582
  db_root_group.add_command(console_connection_group)
583
+ db_root_group.add_command(dbnode_snapshot_group)
577
584
  db_root_group.add_command(external_database_connector_group)
578
585
  db_root_group.add_command(console_history_group)
579
586
  db_root_group.add_command(db_server_group)
@@ -664,6 +671,49 @@ def activate_exadata_infrastructure(ctx, from_json, wait_for_state, max_wait_sec
664
671
  cli_util.render_response(result, ctx)
665
672
 
666
673
 
674
+ @exadb_vm_cluster_group.command(name=cli_util.override('db.add_dbnode_snapshots_for_exadb_vm_cluster.command_name', 'add'), help=u"""Add a database node snapshots to the Exadb VM cluster.. \n[Command Reference](addDbnodeSnapshotsForExadbVmCluster)""")
675
+ @cli_util.option('--name', required=True, help=u"""The user-friendly name for the Database Node Snapshot. The name should be unique.""")
676
+ @cli_util.option('--source-dbnode-ids', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""The [OCID] of the Exadata Database Node.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
677
+ @cli_util.option('--exadb-vm-cluster-id', required=True, help=u"""The Exadata VM cluster [OCID] on Exascale Infrastructure.""")
678
+ @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags].
679
+
680
+ Example: `{\"Department\": \"Finance\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
681
+ @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags].""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
682
+ @cli_util.option('--if-match', help=u"""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.""")
683
+ @json_skeleton_utils.get_cli_json_input_option({'source-dbnode-ids': {'module': 'database', 'class': 'list[string]'}, 'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}})
684
+ @cli_util.help_option
685
+ @click.pass_context
686
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'source-dbnode-ids': {'module': 'database', 'class': 'list[string]'}, 'freeform-tags': {'module': 'database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'database', 'class': 'DbnodeSnapshots'})
687
+ @cli_util.wrap_exceptions
688
+ def add_dbnode_snapshots_for_exadb_vm_cluster(ctx, from_json, name, source_dbnode_ids, exadb_vm_cluster_id, freeform_tags, defined_tags, if_match):
689
+
690
+ if isinstance(exadb_vm_cluster_id, six.string_types) and len(exadb_vm_cluster_id.strip()) == 0:
691
+ raise click.UsageError('Parameter --exadb-vm-cluster-id cannot be whitespace or empty string')
692
+
693
+ kwargs = {}
694
+ if if_match is not None:
695
+ kwargs['if_match'] = if_match
696
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
697
+
698
+ _details = {}
699
+ _details['name'] = name
700
+ _details['sourceDbnodeIds'] = cli_util.parse_json_parameter("source_dbnode_ids", source_dbnode_ids)
701
+
702
+ if freeform_tags is not None:
703
+ _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags)
704
+
705
+ if defined_tags is not None:
706
+ _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags)
707
+
708
+ client = cli_util.build_client('database', 'database', ctx)
709
+ result = client.add_dbnode_snapshots_for_exadb_vm_cluster(
710
+ exadb_vm_cluster_id=exadb_vm_cluster_id,
711
+ add_dbnode_snapshots_for_exadb_vm_cluster_details=_details,
712
+ **kwargs
713
+ )
714
+ cli_util.render_response(result, ctx)
715
+
716
+
667
717
  @autonomous_container_database_group.command(name=cli_util.override('db.add_standby_autonomous_container_database.command_name', 'add'), help=u"""Add a standby Autonomous Container Database. For more information about Autonomous Data Guard,see [Protect Critical Databases from Failures and Disasters Using Autonomous Data Guard]. \n[Command Reference](addStandbyAutonomousContainerDatabase)""")
668
718
  @cli_util.option('--autonomous-container-database-id', required=True, help=u"""The Autonomous Container Database [OCID].""")
669
719
  @cli_util.option('--fast-start-fail-over-lag-limit-in-seconds', type=click.INT, help=u"""The lag time for my preference based on data loss tolerance in seconds.""")
@@ -16539,6 +16589,63 @@ def delete_db_home(ctx, from_json, wait_for_state, max_wait_seconds, wait_interv
16539
16589
  cli_util.render_response(result, ctx)
16540
16590
 
16541
16591
 
16592
+ @dbnode_snapshot_group.command(name=cli_util.override('db.delete_dbnode_snapshot.command_name', 'delete'), help=u"""Deletes the specified Exadata Database Node Snapshot. \n[Command Reference](deleteDbnodeSnapshot)""")
16593
+ @cli_util.option('--dbnode-snapshot-id', required=True, help=u"""The Exadata Database Node Snapshot [OCID].""")
16594
+ @cli_util.option('--if-match', help=u"""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.""")
16595
+ @cli_util.confirm_delete_option
16596
+ @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "FAILED", "SUCCEEDED"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
16597
+ @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the work request to reach the state defined by --wait-for-state. Defaults to 1200 seconds.""")
16598
+ @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the work request has reached the state defined by --wait-for-state. Defaults to 30 seconds.""")
16599
+ @json_skeleton_utils.get_cli_json_input_option({})
16600
+ @cli_util.help_option
16601
+ @click.pass_context
16602
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={})
16603
+ @cli_util.wrap_exceptions
16604
+ def delete_dbnode_snapshot(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, dbnode_snapshot_id, if_match):
16605
+
16606
+ if isinstance(dbnode_snapshot_id, six.string_types) and len(dbnode_snapshot_id.strip()) == 0:
16607
+ raise click.UsageError('Parameter --dbnode-snapshot-id cannot be whitespace or empty string')
16608
+
16609
+ kwargs = {}
16610
+ if if_match is not None:
16611
+ kwargs['if_match'] = if_match
16612
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
16613
+ client = cli_util.build_client('database', 'database', ctx)
16614
+ result = client.delete_dbnode_snapshot(
16615
+ dbnode_snapshot_id=dbnode_snapshot_id,
16616
+ **kwargs
16617
+ )
16618
+ work_request_client = cli_util.build_client('work_requests', 'work_request', ctx)
16619
+ if wait_for_state:
16620
+
16621
+ if hasattr(work_request_client, 'get_work_request') and callable(getattr(work_request_client, 'get_work_request')):
16622
+ try:
16623
+ wait_period_kwargs = {}
16624
+ if max_wait_seconds is not None:
16625
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
16626
+ if wait_interval_seconds is not None:
16627
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
16628
+ if 'opc-work-request-id' not in result.headers:
16629
+ click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state')
16630
+ cli_util.render_response(result, ctx)
16631
+ return
16632
+
16633
+ click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr)
16634
+ result = oci.wait_until(work_request_client, work_request_client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs)
16635
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
16636
+ # If we fail, we should show an error, but we should still provide the information to the customer
16637
+ click.echo('Failed to wait until the work request entered the specified state. Please retrieve the work request to find its current state', file=sys.stderr)
16638
+ cli_util.render_response(result, ctx)
16639
+ sys.exit(2)
16640
+ except Exception:
16641
+ click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr)
16642
+ cli_util.render_response(result, ctx)
16643
+ raise
16644
+ else:
16645
+ click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr)
16646
+ cli_util.render_response(result, ctx)
16647
+
16648
+
16542
16649
  @exadata_infrastructure_group.command(name=cli_util.override('db.delete_exadata_infrastructure.command_name', 'delete'), help=u"""Deletes the Exadata Cloud@Customer infrastructure. \n[Command Reference](deleteExadataInfrastructure)""")
16543
16650
  @cli_util.option('--exadata-infrastructure-id', required=True, help=u"""The Exadata infrastructure [OCID].""")
16544
16651
  @cli_util.option('--if-match', help=u"""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.""")
@@ -20906,6 +21013,28 @@ def get_db_system_upgrade_history_entry(ctx, from_json, db_system_id, upgrade_hi
20906
21013
  cli_util.render_response(result, ctx)
20907
21014
 
20908
21015
 
21016
+ @dbnode_snapshot_group.command(name=cli_util.override('db.get_dbnode_snapshot.command_name', 'get'), help=u"""Gets information about the specified Exadata Database Node Snapshot in the specified compartment. \n[Command Reference](getDbnodeSnapshot)""")
21017
+ @cli_util.option('--dbnode-snapshot-id', required=True, help=u"""The Exadata Database Node Snapshot [OCID].""")
21018
+ @json_skeleton_utils.get_cli_json_input_option({})
21019
+ @cli_util.help_option
21020
+ @click.pass_context
21021
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'database', 'class': 'DbnodeSnapshot'})
21022
+ @cli_util.wrap_exceptions
21023
+ def get_dbnode_snapshot(ctx, from_json, dbnode_snapshot_id):
21024
+
21025
+ if isinstance(dbnode_snapshot_id, six.string_types) and len(dbnode_snapshot_id.strip()) == 0:
21026
+ raise click.UsageError('Parameter --dbnode-snapshot-id cannot be whitespace or empty string')
21027
+
21028
+ kwargs = {}
21029
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
21030
+ client = cli_util.build_client('database', 'database', ctx)
21031
+ result = client.get_dbnode_snapshot(
21032
+ dbnode_snapshot_id=dbnode_snapshot_id,
21033
+ **kwargs
21034
+ )
21035
+ cli_util.render_response(result, ctx)
21036
+
21037
+
20909
21038
  @exadata_infrastructure_group.command(name=cli_util.override('db.get_exadata_infrastructure.command_name', 'get'), help=u"""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 [GetCloudExadataInfrastructure] operation. \n[Command Reference](getExadataInfrastructure)""")
20910
21039
  @cli_util.option('--exadata-infrastructure-id', required=True, help=u"""The Exadata infrastructure [OCID].""")
20911
21040
  @cli_util.option('--excluded-fields', type=custom_types.CliCaseInsensitiveChoice(["multiRackConfigurationFile"]), multiple=True, help=u"""If provided, the specified fields will be excluded in the response.""")
@@ -25679,6 +25808,72 @@ def list_db_versions(ctx, from_json, all_pages, page_size, compartment_id, limit
25679
25808
  cli_util.render_response(result, ctx)
25680
25809
 
25681
25810
 
25811
+ @dbnode_snapshot_group.command(name=cli_util.override('db.list_dbnode_snapshots.command_name', 'list'), help=u"""Gets a list of the Exadata Database Node Snapshots in the specified compartment. \n[Command Reference](listDbnodeSnapshots)""")
25812
+ @cli_util.option('--compartment-id', required=True, help=u"""The compartment [OCID].""")
25813
+ @cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return per page.""")
25814
+ @cli_util.option('--page', help=u"""The pagination token to continue listing from.""")
25815
+ @cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["TIMECREATED", "NAME"]), help=u"""The field to sort by. You can provide one sort order (`sortOrder`). Default order for TIMECREATED is descending. Default order for NAME is ascending. The NAME sort order is case sensitive.""")
25816
+ @cli_util.option('--name', help=u"""A filter to return only resources that match the entire name given. The match is not case sensitive.""")
25817
+ @cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either ascending (`ASC`) or descending (`DESC`).""")
25818
+ @cli_util.option('--lifecycle-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "AVAILABLE", "TERMINATING", "TERMINATED", "FAILED", "MOUNTED", "MOUNTING", "UNMOUNTING"]), help=u"""A filter to return only Exadata Database Snapshots that match the given lifecycle state exactly.""")
25819
+ @cli_util.option('--cluster-id', help=u"""A filter to return only Exadata Database Node Snapshots that match the given VM cluster.""")
25820
+ @cli_util.option('--source-dbnode-id', help=u"""A filter to return only Exadata Database Snapshots that match the given database node.""")
25821
+ @cli_util.option('--all', 'all_pages', is_flag=True, help="""Fetches all pages of results. If you provide this option, then you cannot provide the --limit option.""")
25822
+ @cli_util.option('--page-size', type=click.INT, help="""When fetching results, the number of results to fetch per call. Only valid when used with --all or --limit, and ignored otherwise.""")
25823
+ @json_skeleton_utils.get_cli_json_input_option({})
25824
+ @cli_util.help_option
25825
+ @click.pass_context
25826
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'database', 'class': 'list[DbnodeSnapshotSummary]'})
25827
+ @cli_util.wrap_exceptions
25828
+ def list_dbnode_snapshots(ctx, from_json, all_pages, page_size, compartment_id, limit, page, sort_by, name, sort_order, lifecycle_state, cluster_id, source_dbnode_id):
25829
+
25830
+ if all_pages and limit:
25831
+ raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
25832
+
25833
+ kwargs = {}
25834
+ if limit is not None:
25835
+ kwargs['limit'] = limit
25836
+ if page is not None:
25837
+ kwargs['page'] = page
25838
+ if sort_by is not None:
25839
+ kwargs['sort_by'] = sort_by
25840
+ if name is not None:
25841
+ kwargs['name'] = name
25842
+ if sort_order is not None:
25843
+ kwargs['sort_order'] = sort_order
25844
+ if lifecycle_state is not None:
25845
+ kwargs['lifecycle_state'] = lifecycle_state
25846
+ if cluster_id is not None:
25847
+ kwargs['cluster_id'] = cluster_id
25848
+ if source_dbnode_id is not None:
25849
+ kwargs['source_dbnode_id'] = source_dbnode_id
25850
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
25851
+ client = cli_util.build_client('database', 'database', ctx)
25852
+ if all_pages:
25853
+ if page_size:
25854
+ kwargs['limit'] = page_size
25855
+
25856
+ result = cli_util.list_call_get_all_results(
25857
+ client.list_dbnode_snapshots,
25858
+ compartment_id=compartment_id,
25859
+ **kwargs
25860
+ )
25861
+ elif limit is not None:
25862
+ result = cli_util.list_call_get_up_to_limit(
25863
+ client.list_dbnode_snapshots,
25864
+ limit,
25865
+ page_size,
25866
+ compartment_id=compartment_id,
25867
+ **kwargs
25868
+ )
25869
+ else:
25870
+ result = client.list_dbnode_snapshots(
25871
+ compartment_id=compartment_id,
25872
+ **kwargs
25873
+ )
25874
+ cli_util.render_response(result, ctx)
25875
+
25876
+
25682
25877
  @exadata_infrastructure_group.command(name=cli_util.override('db.list_exadata_infrastructures.command_name', 'list'), help=u"""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 [ListCloudExadataInfrastructures] operation. \n[Command Reference](listExadataInfrastructures)""")
25683
25878
  @cli_util.option('--compartment-id', required=True, help=u"""The compartment [OCID].""")
25684
25879
  @cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return per page.""")
@@ -28370,6 +28565,63 @@ def modify_pluggable_database_management(ctx, from_json, wait_for_state, max_wai
28370
28565
  cli_util.render_response(result, ctx)
28371
28566
 
28372
28567
 
28568
+ @dbnode_snapshot_group.command(name=cli_util.override('db.mount_dbnode_snapshot.command_name', 'mount'), help=u"""Mounts the snapshot for the provided dbNode. \n[Command Reference](mountDbnodeSnapshot)""")
28569
+ @cli_util.option('--db-node-id', required=True, help=u"""The [OCID] of the Exadata Database Node where snapshot needs to be mounted.""")
28570
+ @cli_util.option('--dbnode-snapshot-id', required=True, help=u"""The Exadata Database Node Snapshot [OCID].""")
28571
+ @cli_util.option('--if-match', help=u"""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.""")
28572
+ @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "AVAILABLE", "TERMINATING", "TERMINATED", "FAILED", "MOUNTED", "MOUNTING", "UNMOUNTING"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
28573
+ @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""")
28574
+ @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""")
28575
+ @json_skeleton_utils.get_cli_json_input_option({})
28576
+ @cli_util.help_option
28577
+ @click.pass_context
28578
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'database', 'class': 'DbnodeSnapshot'})
28579
+ @cli_util.wrap_exceptions
28580
+ def mount_dbnode_snapshot(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, db_node_id, dbnode_snapshot_id, if_match):
28581
+
28582
+ if isinstance(dbnode_snapshot_id, six.string_types) and len(dbnode_snapshot_id.strip()) == 0:
28583
+ raise click.UsageError('Parameter --dbnode-snapshot-id cannot be whitespace or empty string')
28584
+
28585
+ kwargs = {}
28586
+ if if_match is not None:
28587
+ kwargs['if_match'] = if_match
28588
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
28589
+
28590
+ _details = {}
28591
+ _details['dbNodeId'] = db_node_id
28592
+
28593
+ client = cli_util.build_client('database', 'database', ctx)
28594
+ result = client.mount_dbnode_snapshot(
28595
+ dbnode_snapshot_id=dbnode_snapshot_id,
28596
+ mount_dbnode_snapshot_details=_details,
28597
+ **kwargs
28598
+ )
28599
+ if wait_for_state:
28600
+
28601
+ if hasattr(client, 'get_dbnode_snapshot') and callable(getattr(client, 'get_dbnode_snapshot')):
28602
+ try:
28603
+ wait_period_kwargs = {}
28604
+ if max_wait_seconds is not None:
28605
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
28606
+ if wait_interval_seconds is not None:
28607
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
28608
+
28609
+ click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr)
28610
+ result = oci.wait_until(client, client.get_dbnode_snapshot(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs)
28611
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
28612
+ # If we fail, we should show an error, but we should still provide the information to the customer
28613
+ click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr)
28614
+ cli_util.render_response(result, ctx)
28615
+ sys.exit(2)
28616
+ except Exception:
28617
+ click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr)
28618
+ cli_util.render_response(result, ctx)
28619
+ raise
28620
+ else:
28621
+ click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
28622
+ cli_util.render_response(result, ctx)
28623
+
28624
+
28373
28625
  @execution_action_group.command(name=cli_util.override('db.move_execution_action_member.command_name', 'move-execution-action-member'), help=u"""Moves an execution action member to this execution action resource from another. \n[Command Reference](moveExecutionActionMember)""")
28374
28626
  @cli_util.option('--execution-action-id', required=True, help=u"""The execution action [OCID].""")
28375
28627
  @cli_util.option('--source-execution-action-id', help=u"""The [OCID] of the source execution action resource.""")
@@ -31296,6 +31548,63 @@ def terminate_db_system(ctx, from_json, wait_for_state, max_wait_seconds, wait_i
31296
31548
  cli_util.render_response(result, ctx)
31297
31549
 
31298
31550
 
31551
+ @dbnode_snapshot_group.command(name=cli_util.override('db.unmount_dbnode_snapshot.command_name', 'unmount'), help=u"""Unmounts the snapshot for the provided dbNode. \n[Command Reference](unmountDbnodeSnapshot)""")
31552
+ @cli_util.option('--db-node-id', required=True, help=u"""The [OCID] of the Exadata Database Node where snapshot needs to be unmounted.""")
31553
+ @cli_util.option('--dbnode-snapshot-id', required=True, help=u"""The Exadata Database Node Snapshot [OCID].""")
31554
+ @cli_util.option('--if-match', help=u"""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.""")
31555
+ @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "AVAILABLE", "TERMINATING", "TERMINATED", "FAILED", "MOUNTED", "MOUNTING", "UNMOUNTING"]), multiple=True, help="""This operation creates, modifies or deletes a resource that has a defined lifecycle state. Specify this option to perform the action and then wait until the resource reaches a given lifecycle state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
31556
+ @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the resource to reach the lifecycle state defined by --wait-for-state. Defaults to 1200 seconds.""")
31557
+ @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the resource has reached the lifecycle state defined by --wait-for-state. Defaults to 30 seconds.""")
31558
+ @json_skeleton_utils.get_cli_json_input_option({})
31559
+ @cli_util.help_option
31560
+ @click.pass_context
31561
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'database', 'class': 'DbnodeSnapshot'})
31562
+ @cli_util.wrap_exceptions
31563
+ def unmount_dbnode_snapshot(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, db_node_id, dbnode_snapshot_id, if_match):
31564
+
31565
+ if isinstance(dbnode_snapshot_id, six.string_types) and len(dbnode_snapshot_id.strip()) == 0:
31566
+ raise click.UsageError('Parameter --dbnode-snapshot-id cannot be whitespace or empty string')
31567
+
31568
+ kwargs = {}
31569
+ if if_match is not None:
31570
+ kwargs['if_match'] = if_match
31571
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
31572
+
31573
+ _details = {}
31574
+ _details['dbNodeId'] = db_node_id
31575
+
31576
+ client = cli_util.build_client('database', 'database', ctx)
31577
+ result = client.unmount_dbnode_snapshot(
31578
+ dbnode_snapshot_id=dbnode_snapshot_id,
31579
+ unmount_dbnode_snapshot_details=_details,
31580
+ **kwargs
31581
+ )
31582
+ if wait_for_state:
31583
+
31584
+ if hasattr(client, 'get_dbnode_snapshot') and callable(getattr(client, 'get_dbnode_snapshot')):
31585
+ try:
31586
+ wait_period_kwargs = {}
31587
+ if max_wait_seconds is not None:
31588
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
31589
+ if wait_interval_seconds is not None:
31590
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
31591
+
31592
+ click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr)
31593
+ result = oci.wait_until(client, client.get_dbnode_snapshot(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs)
31594
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
31595
+ # If we fail, we should show an error, but we should still provide the information to the customer
31596
+ click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr)
31597
+ cli_util.render_response(result, ctx)
31598
+ sys.exit(2)
31599
+ except Exception:
31600
+ click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr)
31601
+ cli_util.render_response(result, ctx)
31602
+ raise
31603
+ else:
31604
+ click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
31605
+ cli_util.render_response(result, ctx)
31606
+
31607
+
31299
31608
  @cloud_vm_cluster_group.command(name=cli_util.override('db.unregister_cloud_vm_cluster_pkcs.command_name', 'unregister-cloud-vm-cluster-pkcs'), help=u"""Uninstall the PKCS11 driver for given keystore type \n[Command Reference](unregisterCloudVmClusterPkcs)""")
31300
31609
  @cli_util.option('--cloud-vm-cluster-id', required=True, help=u"""The cloud VM cluster [OCID].""")
31301
31610
  @cli_util.option('--tde-key-store-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["AZURE", "OCI", "GCP"]), help=u"""TDE keystore type""")
@@ -165,6 +165,67 @@ def change_distributed_autonomous_database_compartment(ctx, from_json, wait_for_
165
165
  cli_util.render_response(result, ctx)
166
166
 
167
167
 
168
+ @distributed_autonomous_database_group.command(name=cli_util.override('distributed_autonomous_db_service.change_distributed_autonomous_db_backup_config.command_name', 'change-distributed-autonomous-db-backup-config'), help=u"""Change the DbBackupConfig for the Globally distributed autonomous database. \n[Command Reference](changeDistributedAutonomousDbBackupConfig)""")
169
+ @cli_util.option('--distributed-autonomous-database-id', required=True, help=u"""Globally distributed autonomous database identifier""")
170
+ @cli_util.option('--db-backup-config', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
171
+ @cli_util.option('--if-match', help=u"""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.""")
172
+ @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED", "NEEDS_ATTENTION"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
173
+ @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the work request to reach the state defined by --wait-for-state. Defaults to 1200 seconds.""")
174
+ @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the work request has reached the state defined by --wait-for-state. Defaults to 30 seconds.""")
175
+ @json_skeleton_utils.get_cli_json_input_option({'db-backup-config': {'module': 'distributed_database', 'class': 'DistributedAutonomousDbBackupConfig'}})
176
+ @cli_util.help_option
177
+ @click.pass_context
178
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'db-backup-config': {'module': 'distributed_database', 'class': 'DistributedAutonomousDbBackupConfig'}})
179
+ @cli_util.wrap_exceptions
180
+ def change_distributed_autonomous_db_backup_config(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, distributed_autonomous_database_id, db_backup_config, if_match):
181
+
182
+ if isinstance(distributed_autonomous_database_id, six.string_types) and len(distributed_autonomous_database_id.strip()) == 0:
183
+ raise click.UsageError('Parameter --distributed-autonomous-database-id cannot be whitespace or empty string')
184
+
185
+ kwargs = {}
186
+ if if_match is not None:
187
+ kwargs['if_match'] = if_match
188
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
189
+
190
+ _details = {}
191
+ _details['dbBackupConfig'] = cli_util.parse_json_parameter("db_backup_config", db_backup_config)
192
+
193
+ client = cli_util.build_client('distributed_database', 'distributed_autonomous_db_service', ctx)
194
+ result = client.change_distributed_autonomous_db_backup_config(
195
+ distributed_autonomous_database_id=distributed_autonomous_database_id,
196
+ change_distributed_autonomous_db_backup_config_details=_details,
197
+ **kwargs
198
+ )
199
+ if wait_for_state:
200
+
201
+ if hasattr(client, 'get_work_request') and callable(getattr(client, 'get_work_request')):
202
+ try:
203
+ wait_period_kwargs = {}
204
+ if max_wait_seconds is not None:
205
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
206
+ if wait_interval_seconds is not None:
207
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
208
+ if 'opc-work-request-id' not in result.headers:
209
+ click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state')
210
+ cli_util.render_response(result, ctx)
211
+ return
212
+
213
+ click.echo('Action completed. Waiting until the work request has entered state: {}'.format(wait_for_state), file=sys.stderr)
214
+ result = oci.wait_until(client, client.get_work_request(result.headers['opc-work-request-id']), 'status', wait_for_state, **wait_period_kwargs)
215
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
216
+ # If we fail, we should show an error, but we should still provide the information to the customer
217
+ click.echo('Failed to wait until the work request entered the specified state. Outputting last known resource state', file=sys.stderr)
218
+ cli_util.render_response(result, ctx)
219
+ sys.exit(2)
220
+ except Exception:
221
+ click.echo('Encountered error while waiting for work request to enter the specified state. Outputting last known resource state', file=sys.stderr)
222
+ cli_util.render_response(result, ctx)
223
+ raise
224
+ else:
225
+ click.echo('Unable to wait for the work request to enter the specified state', file=sys.stderr)
226
+ cli_util.render_response(result, ctx)
227
+
228
+
168
229
  @distributed_autonomous_database_group.command(name=cli_util.override('distributed_autonomous_db_service.configure_distributed_autonomous_database_gsms.command_name', 'configure-distributed-autonomous-database-gsms'), help=u"""Configure new Global Service Manager(GSM aka shard manager) instances for the Globally distributed autonomous database. \n[Command Reference](configureDistributedAutonomousDatabaseGsms)""")
169
230
  @cli_util.option('--old-gsm-names', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""Names of old global service manager(GSM) instances corresponding to which new GSM instances need to be configured.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
170
231
  @cli_util.option('--is-latest-gsm-image', required=True, type=click.BOOL, help=u"""Flag to indicate if new global service manager(GSM) instances shall use latest image or re-use image used by existing GSM instances.""")
@@ -293,31 +354,32 @@ def configure_distributed_autonomous_database_sharding(ctx, from_json, wait_for_
293
354
  @cli_util.option('--prefix', required=True, help=u"""Unique name prefix for the Globally distributed autonomous databases. Only alpha-numeric values are allowed. First character has to be a letter followed by any combination of letter and number.""")
294
355
  @cli_util.option('--private-endpoint-ids', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""The collection of [OCID] of the private endpoint associated with Globally distributed autonomous database.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
295
356
  @cli_util.option('--sharding-method', required=True, type=custom_types.CliCaseInsensitiveChoice(["USER", "SYSTEM"]), help=u"""Sharding Methods for the Globally distributed autonomous database.""")
296
- @cli_util.option('--db-workload', required=True, type=custom_types.CliCaseInsensitiveChoice(["OLTP", "DW"]), help=u"""Possible workload types.""")
357
+ @cli_util.option('--db-workload', required=True, type=custom_types.CliCaseInsensitiveChoice(["OLTP", "DW"]), help=u"""Possible workload types. Currently only OLTP workload type is supported.""")
297
358
  @cli_util.option('--character-set', required=True, help=u"""The character set for the database.""")
298
359
  @cli_util.option('--ncharacter-set', required=True, help=u"""The national character set for the database.""")
299
- @cli_util.option('--listener-port', required=True, type=click.INT, help=u"""The listener port number for the Globally distributed autonomous database.""")
300
- @cli_util.option('--ons-port-local', required=True, type=click.INT, help=u"""Ons local port number.""")
301
- @cli_util.option('--ons-port-remote', required=True, type=click.INT, help=u"""Ons remote port number.""")
360
+ @cli_util.option('--listener-port', required=True, type=click.INT, help=u"""The listener port number for the Globally distributed autonomous database. The listener port number has to be unique for a customer tenancy across all distributed autonomous databases. Same port number should not be re-used for any other distributed autonomous database.""")
361
+ @cli_util.option('--ons-port-local', required=True, type=click.INT, help=u"""Ons local port number for Globally distributed autonomous database. The onsPortLocal has to be unique for a customer tenancy across all distributed autonomous databases. Same port number should not be re-used for any other distributed autonomous database.""")
362
+ @cli_util.option('--ons-port-remote', required=True, type=click.INT, help=u"""Ons remote port number for Globally distributed autonomous database. The onsPortRemote has to be unique for a customer tenancy across all distributed autonomous databases. Same port number should not be re-used for any other distributed autonomous database.""")
302
363
  @cli_util.option('--db-deployment-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["ADB_D"]), help=u"""The distributed autonomous database deployment type.""")
303
364
  @cli_util.option('--shard-details', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""Collection of shards for the Globally distributed autonomous database.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
304
365
  @cli_util.option('--catalog-details', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""Collection of catalog for the Globally distributed autonomous database.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
305
- @cli_util.option('--chunks', type=click.INT, help=u"""The default number of unique chunks in a shardspace. The value of chunks must be greater than 2 times the size of the largest shardgroup in any shardspace.""")
306
- @cli_util.option('--listener-port-tls', type=click.INT, help=u"""The TLS listener port number for Globally distributed autonomous database.""")
307
- @cli_util.option('--replication-method', type=custom_types.CliCaseInsensitiveChoice(["RAFT", "DG"]), help=u"""The Replication method for Globally distributed autonomous database. Use RAFT for Raft replication, and DG for DataGuard. If replicationMethod is not provided, it defaults to DG.""")
366
+ @cli_util.option('--chunks', type=click.INT, help=u"""Number of chunks in a shardspace. The value of chunks must be greater than 2 times the size of the largest shardgroup in any shardspace. Chunks is required to be provided for distributed autonomous databases being created with SYSTEM shardingMethod. For USER shardingMethod, chunks should not be set in create payload.""")
367
+ @cli_util.option('--listener-port-tls', type=click.INT, help=u"""The TLS listener port number for Globally distributed autonomous database. The TLS listener port number has to be unique for a customer tenancy across all distributed autonomous databases. Same port number should not be re-used for any other distributed autonomous database. The listenerPortTls is mandatory for dedicated infrastructure based distributed autonomous databases.""")
368
+ @cli_util.option('--replication-method', type=custom_types.CliCaseInsensitiveChoice(["RAFT", "DG"]), help=u"""The Replication method for Globally distributed autonomous database. Use RAFT for Raft based replication. With RAFT replication, shards cannot have peers details set on them. In case shards need to have peers, please do not set RAFT replicationMethod. For all non RAFT replication cases (with or without peers), please set replicationMethod as DG or do not set any value for replicationMethod.""")
308
369
  @cli_util.option('--replication-factor', type=click.INT, help=u"""The Replication factor for RAFT replication based Globally distributed autonomous database. Currently supported values are 3, 5 and 7.""")
309
- @cli_util.option('--replication-unit', type=click.INT, help=u"""For RAFT replication based Globally distributed autonomous database, the value should be atleast twice the number of shards.""")
370
+ @cli_util.option('--replication-unit', type=click.INT, help=u"""The replication unit count for RAFT based distributed autonomous database. For RAFT replication based Globally distributed autonomous database, the value should be at least twice the number of shards.""")
371
+ @cli_util.option('--db-backup-config', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
310
372
  @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
311
373
  @cli_util.option('--defined-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{\"foo-namespace\": {\"bar-key\": \"value\"}}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
312
374
  @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED", "NEEDS_ATTENTION"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
313
375
  @cli_util.option('--max-wait-seconds', type=click.INT, help="""The maximum time to wait for the work request to reach the state defined by --wait-for-state. Defaults to 1200 seconds.""")
314
376
  @cli_util.option('--wait-interval-seconds', type=click.INT, help="""Check every --wait-interval-seconds to see whether the work request has reached the state defined by --wait-for-state. Defaults to 30 seconds.""")
315
- @json_skeleton_utils.get_cli_json_input_option({'private-endpoint-ids': {'module': 'distributed_database', 'class': 'list[string]'}, 'shard-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseShardDetails]'}, 'catalog-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseCatalogDetails]'}, 'freeform-tags': {'module': 'distributed_database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'distributed_database', 'class': 'dict(str, dict(str, object))'}})
377
+ @json_skeleton_utils.get_cli_json_input_option({'private-endpoint-ids': {'module': 'distributed_database', 'class': 'list[string]'}, 'shard-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseShardDetails]'}, 'catalog-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseCatalogDetails]'}, 'db-backup-config': {'module': 'distributed_database', 'class': 'DistributedAutonomousDbBackupConfig'}, 'freeform-tags': {'module': 'distributed_database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'distributed_database', 'class': 'dict(str, dict(str, object))'}})
316
378
  @cli_util.help_option
317
379
  @click.pass_context
318
- @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'private-endpoint-ids': {'module': 'distributed_database', 'class': 'list[string]'}, 'shard-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseShardDetails]'}, 'catalog-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseCatalogDetails]'}, 'freeform-tags': {'module': 'distributed_database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'distributed_database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'distributed_database', 'class': 'DistributedAutonomousDatabase'})
380
+ @json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'private-endpoint-ids': {'module': 'distributed_database', 'class': 'list[string]'}, 'shard-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseShardDetails]'}, 'catalog-details': {'module': 'distributed_database', 'class': 'list[CreateDistributedAutonomousDatabaseCatalogDetails]'}, 'db-backup-config': {'module': 'distributed_database', 'class': 'DistributedAutonomousDbBackupConfig'}, 'freeform-tags': {'module': 'distributed_database', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'distributed_database', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'distributed_database', 'class': 'DistributedAutonomousDatabase'})
319
381
  @cli_util.wrap_exceptions
320
- def create_distributed_autonomous_database(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, database_version, prefix, private_endpoint_ids, sharding_method, db_workload, character_set, ncharacter_set, listener_port, ons_port_local, ons_port_remote, db_deployment_type, shard_details, catalog_details, chunks, listener_port_tls, replication_method, replication_factor, replication_unit, freeform_tags, defined_tags):
382
+ def create_distributed_autonomous_database(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, database_version, prefix, private_endpoint_ids, sharding_method, db_workload, character_set, ncharacter_set, listener_port, ons_port_local, ons_port_remote, db_deployment_type, shard_details, catalog_details, chunks, listener_port_tls, replication_method, replication_factor, replication_unit, db_backup_config, freeform_tags, defined_tags):
321
383
 
322
384
  kwargs = {}
323
385
  kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
@@ -354,6 +416,9 @@ def create_distributed_autonomous_database(ctx, from_json, wait_for_state, max_w
354
416
  if replication_unit is not None:
355
417
  _details['replicationUnit'] = replication_unit
356
418
 
419
+ if db_backup_config is not None:
420
+ _details['dbBackupConfig'] = cli_util.parse_json_parameter("db_backup_config", db_backup_config)
421
+
357
422
  if freeform_tags is not None:
358
423
  _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags)
359
424
 
@@ -769,7 +834,7 @@ def patch_distributed_autonomous_database(ctx, from_json, wait_for_state, max_wa
769
834
  cli_util.render_response(result, ctx)
770
835
 
771
836
 
772
- @distributed_autonomous_database_group.command(name=cli_util.override('distributed_autonomous_db_service.rotate_distributed_autonomous_database_passwords.command_name', 'rotate-distributed-autonomous-database-passwords'), help=u"""Rotate passwords for different components of the Globally distributed autonomous database. \n[Command Reference](rotateDistributedAutonomousDatabasePasswords)""")
837
+ @distributed_autonomous_database_group.command(name=cli_util.override('distributed_autonomous_db_service.rotate_distributed_autonomous_database_passwords.command_name', 'rotate-distributed-autonomous-database-passwords'), help=u"""Rotate the gsmuser and gsmcatuser passwords for shards and catalog of the Globally distributed autonomous database. This operation will also remove GdsCtlNodes if present. \n[Command Reference](rotateDistributedAutonomousDatabasePasswords)""")
773
838
  @cli_util.option('--distributed-autonomous-database-id', required=True, help=u"""Globally distributed autonomous database identifier""")
774
839
  @cli_util.option('--if-match', help=u"""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.""")
775
840
  @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED", "NEEDS_ATTENTION"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
@@ -356,17 +356,17 @@ def configure_distributed_database_sharding(ctx, from_json, wait_for_state, max_
356
356
  @cli_util.option('--sharding-method', required=True, type=custom_types.CliCaseInsensitiveChoice(["USER", "SYSTEM"]), help=u"""Sharding Methods for the Globally distributed database.""")
357
357
  @cli_util.option('--character-set', required=True, help=u"""The character set for the database.""")
358
358
  @cli_util.option('--ncharacter-set', required=True, help=u"""The national character set for the database.""")
359
- @cli_util.option('--listener-port', required=True, type=click.INT, help=u"""The listener port number for the Globally distributed database.""")
360
- @cli_util.option('--ons-port-local', required=True, type=click.INT, help=u"""Ons local port number.""")
361
- @cli_util.option('--ons-port-remote', required=True, type=click.INT, help=u"""Ons remote port number.""")
359
+ @cli_util.option('--listener-port', required=True, type=click.INT, help=u"""The listener port number for the Globally distributed database. The listener port number has to be unique for a customer tenancy across all distributed databases. Same port number should not be re-used for any other distributed database.""")
360
+ @cli_util.option('--ons-port-local', required=True, type=click.INT, help=u"""The ons local port number for the Globally distributed database. The onsPortLocal has to be unique for a customer tenancy across all distributed databases. Same port number should not be re-used for any other distributed database.""")
361
+ @cli_util.option('--ons-port-remote', required=True, type=click.INT, help=u"""The ons remote port number for the Globally distributed database. The onsPortRemote has to be unique for a customer tenancy across all distributed databases. Same port number should not be re-used for any other distributed database.""")
362
362
  @cli_util.option('--db-deployment-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["EXADB_XS"]), help=u"""The distributed database deployment type.""")
363
363
  @cli_util.option('--shard-details', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""Collection of shards for the Globally distributed database.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
364
364
  @cli_util.option('--catalog-details', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""Collection of catalog for the Globally distributed database.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
365
- @cli_util.option('--chunks', type=click.INT, help=u"""The default number of unique chunks in a shardspace. The value of chunks must be greater than 2 times the size of the largest shardgroup in any shardspace.""")
366
- @cli_util.option('--listener-port-tls', type=click.INT, help=u"""The TLS listener port number for Globally distributed database.""")
367
- @cli_util.option('--replication-method', type=custom_types.CliCaseInsensitiveChoice(["RAFT", "DG"]), help=u"""The Replication method for Globally distributed database. Use RAFT for Raft replication, and DG for DataGuard. If replicationMethod is not provided, it defaults to DG.""")
365
+ @cli_util.option('--chunks', type=click.INT, help=u"""Number of chunks in a shardspace. The value of chunks must be greater than 2 times the size of the largest shardgroup in any shardspace. Chunks is required to be provided for distributed databases being created with SYSTEM shardingMethod. For USER shardingMethod, chunks should not be set in create payload.""")
366
+ @cli_util.option('--listener-port-tls', type=click.INT, help=u"""The TLS listener port number for the Globally distributed database. The TLS listener port number has to be unique for a customer tenancy across all distributed databases. Same port number should not be re-used for any other distributed database. For BASE_DB and EXADB_XS based distributed databases, tls is not supported hence the listenerPortTls is not needed to be provided in create payload.""")
367
+ @cli_util.option('--replication-method', type=custom_types.CliCaseInsensitiveChoice(["RAFT", "DG"]), help=u"""The Replication method for Globally distributed database. Use RAFT for Raft based replication. With RAFT replication, shards cannot have peers details set on them. In case shards need to have peers, please do not set RAFT replicationMethod. For all non RAFT replication cases (with or without peers), please set replicationMethod as DG or do not set any value for replicationMethod.""")
368
368
  @cli_util.option('--replication-factor', type=click.INT, help=u"""The Replication factor for RAFT replication based Globally distributed database. Currently supported values are 3, 5 and 7.""")
369
- @cli_util.option('--replication-unit', type=click.INT, help=u"""For RAFT replication based Globally distributed database, the value should be atleast twice the number of shards.""")
369
+ @cli_util.option('--replication-unit', type=click.INT, help=u"""The replication unit count for RAFT based distributed database. For RAFT replication based Globally distributed database, the value should be at least twice the number of shards.""")
370
370
  @cli_util.option('--gsm-ssh-public-key', help=u"""The SSH public key for Global service manager instances.""")
371
371
  @cli_util.option('--db-backup-config', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
372
372
  @cli_util.option('--freeform-tags', type=custom_types.CLI_COMPLEX_TYPE, help=u"""Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{\"bar-key\": \"value\"}`""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@@ -836,7 +836,7 @@ def patch_distributed_database(ctx, from_json, wait_for_state, max_wait_seconds,
836
836
  cli_util.render_response(result, ctx)
837
837
 
838
838
 
839
- @distributed_database_group.command(name=cli_util.override('distributed_db_service.rotate_distributed_database_passwords.command_name', 'rotate-distributed-database-passwords'), help=u"""Rotate passwords for different components of the Globally distributed database. \n[Command Reference](rotateDistributedDatabasePasswords)""")
839
+ @distributed_database_group.command(name=cli_util.override('distributed_db_service.rotate_distributed_database_passwords.command_name', 'rotate-distributed-database-passwords'), help=u"""Rotate the gsmuser and gsmcatuser passwords for shards and catalog of the Globally distributed database. This operation will also remove GdsCtlNodes if present. \n[Command Reference](rotateDistributedDatabasePasswords)""")
840
840
  @cli_util.option('--distributed-database-id', required=True, help=u"""Globally distributed database identifier""")
841
841
  @cli_util.option('--if-match', help=u"""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.""")
842
842
  @cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED", "NEEDS_ATTENTION"]), multiple=True, help="""This operation asynchronously creates, modifies or deletes a resource and uses a work request to track the progress of the operation. Specify this option to perform the action and then wait until the work request reaches a certain state. Multiple states can be specified, returning on the first state. For example, --wait-for-state SUCCEEDED --wait-for-state FAILED would return on whichever lifecycle state is reached first. If timeout is reached, a return code of 2 is returned. For any other error, a return code of 1 is returned.""")
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+ # Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3
+ # 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.
4
+ # NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20240301
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+ # Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3
+ # 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.
4
+ # NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20240301
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+ # Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3
+ # 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.
4
+ # NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20240301
@@ -0,0 +1,4 @@
1
+ # coding: utf-8
2
+ # Copyright (c) 2016, 2025, Oracle and/or its affiliates. All rights reserved.
3
+ # 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.
4
+ # NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20240301