diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index d13ea4ee..b14b6a7c 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -6,6 +6,49 @@ All notable changes to this project will be documented in this file.
The format is based on `Keep a Changelog `__.
+3.48.0 - 2024-09-17
+--------------------
+Added
+~~~~~
+* Support Dedicated AI Cluster Unit Shape LARGE_GENERIC_4 in the Generative AI Service Management
+
+ * ``oci generative-ai dedicated-ai-cluster``
+
+* Support for allowing the operator to provide a ticket number when creating access request in the Lockbox service
+
+ * ``oci oma access-request create --ticket-number``
+
+* Support for release 3.1 of Capacity Management Service
+
+ * ``oci capacity-management occ-handover-resource-block-collection``
+ * ``oci capacity-management occ-customer``
+ * ``oci capacity-management occ-customer-group``
+
+* Support for Text to Speech in Speech service
+
+ * ``oci speech synthesize-speech``
+ * ``oci speech voice list``
+
+* Fleet Software Update service
+
+ * Support to create DB and GI Collections major version 23.
+
+ * ``oci fleet-software-update fsu-collection create-db --source-major-version DB_23``
+ * ``oci fleet-software-update fsu-collection create-gi --source-major-version GI_23``
+
+ * Support to create DB and GI Collections major version 23.
+
+ * ``oci fleet-software-update fsu-cycle create-patch --goal-version-details { "version" : "23.4.0.0" }``
+
+Changed
+~~~~~~~
+* Capacity Management Service
+
+ * [BREAKING] Optional parameter ``--occ-customer-group-id`` has now been made required in the following commands
+
+ * ``oci capacity-management occ-overview-collection list-internal-namespace-occ-overviews``
+ * ``oci capacity-management occ-availability-catalog-collection list-internal``
+
3.47.0 - 2024-08-27
--------------------
diff --git a/requirements.txt b/requirements.txt
index 62617f60..c7e20f27 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -15,7 +15,7 @@ Jinja2>=3.1.4; python_version >= '3.7'
jmespath==0.10.0
ndg-httpsclient==0.4.2
mock==2.0.0
-oci==2.133.0
+oci==2.134.0
packaging==20.2
pluggy==0.13.0
py==1.11.0
diff --git a/services/ai_speech/src/oci_cli_ai_service_speech/aiservicespeech_cli_extended.py b/services/ai_speech/src/oci_cli_ai_service_speech/aiservicespeech_cli_extended.py
index d90f0ba5..63c819b0 100644
--- a/services/ai_speech/src/oci_cli_ai_service_speech/aiservicespeech_cli_extended.py
+++ b/services/ai_speech/src/oci_cli_ai_service_speech/aiservicespeech_cli_extended.py
@@ -7,3 +7,16 @@
aiservicespeech_cli.transcription_job_group.commands.pop(aiservicespeech_cli.create_transcription_job_object_list_file_input_location.name)
aiservicespeech_cli.transcription_job_group.commands.pop(aiservicespeech_cli.create_transcription_job_object_list_inline_input_location.name)
+
+
+# Remove synthesize-speech-tts-base-audio-config from oci speech synthesize-speech
+aiservicespeech_cli.synthesize_speech_group.commands.pop(aiservicespeech_cli.synthesize_speech_tts_base_audio_config.name)
+
+
+# Remove synthesize-speech-tts-oracle-configuration from oci speech synthesize-speech
+aiservicespeech_cli.synthesize_speech_group.commands.pop(aiservicespeech_cli.synthesize_speech_tts_oracle_configuration.name)
+
+
+# Move oci speech synthesize-speech synthesize-speech -> oci speech synthesize-speech
+aiservicespeech_cli.synthesize_speech_group.commands.pop(aiservicespeech_cli.synthesize_speech.name)
+aiservicespeech_cli.speech_root_group.add_command(aiservicespeech_cli.synthesize_speech)
diff --git a/services/ai_speech/src/oci_cli_ai_service_speech/generated/aiservicespeech_cli.py b/services/ai_speech/src/oci_cli_ai_service_speech/generated/aiservicespeech_cli.py
index 9d2dc718..9fbe52d1 100644
--- a/services/ai_speech/src/oci_cli_ai_service_speech/generated/aiservicespeech_cli.py
+++ b/services/ai_speech/src/oci_cli_ai_service_speech/generated/aiservicespeech_cli.py
@@ -46,10 +46,24 @@ def transcription_job_group():
pass
+@click.command(cli_util.override('speech.voice_group.command_name', 'voice'), cls=CommandGroupWithAlias, help="""""")
+@cli_util.help_option_group
+def voice_group():
+ pass
+
+
+@click.command(cli_util.override('speech.synthesize_speech_group.command_name', 'synthesize-speech'), cls=CommandGroupWithAlias, help="""""")
+@cli_util.help_option_group
+def synthesize_speech_group():
+ pass
+
+
speech_root_group.add_command(customization_group)
speech_root_group.add_command(realtime_session_token_group)
speech_root_group.add_command(transcription_task_group)
speech_root_group.add_command(transcription_job_group)
+speech_root_group.add_command(voice_group)
+speech_root_group.add_command(synthesize_speech_group)
@transcription_job_group.command(name=cli_util.override('speech.cancel_transcription_job.command_name', 'cancel'), help=u"""Canceling the job cancels all the tasks under it. \n[Command Reference](cancelTranscriptionJob)""")
@@ -1075,6 +1089,227 @@ def list_transcription_tasks(ctx, from_json, all_pages, page_size, transcription
cli_util.render_response(result, ctx)
+@voice_group.command(name=cli_util.override('speech.list_voices.command_name', 'list'), help=u"""Returns a list of speakers available to the user to choose from based on language code and voice type provided. \n[Command Reference](listVoices)""")
+@cli_util.option('--compartment-id', help=u"""The ID of the compartment in which to list resources.""")
+@cli_util.option('--model-name', type=custom_types.CliCaseInsensitiveChoice(["TTS_1_STANDARD", "TTS_2_NATURAL"]), help=u"""The model the user wants to run the inference on.""")
+@cli_util.option('--display-name', help=u"""The name of the speaker voice in which the user wants tts inference to be.""")
+@cli_util.option('--all', 'all_pages', is_flag=True, help="""Fetches all pages of results.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'ai_speech', 'class': 'VoiceCollection'})
+@cli_util.wrap_exceptions
+def list_voices(ctx, from_json, all_pages, compartment_id, model_name, display_name):
+
+ kwargs = {}
+ if compartment_id is not None:
+ kwargs['compartment_id'] = compartment_id
+ if model_name is not None:
+ kwargs['model_name'] = model_name
+ if display_name is not None:
+ kwargs['display_name'] = display_name
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('ai_speech', 'ai_service_speech', ctx)
+ result = client.list_voices(
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@synthesize_speech_group.command(name=cli_util.override('speech.synthesize_speech.command_name', 'synthesize-speech'), help=u"""Creates an audio for the given input text based on other input parameters like language, voice type, etc. \n[Command Reference](synthesizeSpeech)""")
+@cli_util.option('--text', required=True, help=u"""The text input to get the inference audio from TTS Service.""")
+@cli_util.option('--file', type=click.File(mode='wb'), required=True, help="The name of the file that will receive the response data, or '-' to write to STDOUT.")
+@cli_util.option('--is-stream-enabled', type=click.BOOL, help=u"""If set to true, response will be sent in the chunked transfer-encoding and audio chunks are sent back as and when they are ready. If set to false, response will be sent only once the entire audio is generated.""")
+@cli_util.option('--compartment-id', help=u"""The [OCID] of the compartment where the user has access to call `SpeechSynthesize` api. But default user access will be checked at tenancy level.""")
+@cli_util.option('--configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@cli_util.option('--audio-config', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@json_skeleton_utils.get_cli_json_input_option({'configuration': {'module': 'ai_speech', 'class': 'TtsConfiguration'}, 'audio-config': {'module': 'ai_speech', 'class': 'TtsAudioConfig'}})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'configuration': {'module': 'ai_speech', 'class': 'TtsConfiguration'}, 'audio-config': {'module': 'ai_speech', 'class': 'TtsAudioConfig'}})
+@cli_util.wrap_exceptions
+def synthesize_speech(ctx, from_json, file, text, is_stream_enabled, compartment_id, configuration, audio_config):
+
+ kwargs = {}
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+ _details['text'] = text
+
+ if is_stream_enabled is not None:
+ _details['isStreamEnabled'] = is_stream_enabled
+
+ if compartment_id is not None:
+ _details['compartmentId'] = compartment_id
+
+ if configuration is not None:
+ _details['configuration'] = cli_util.parse_json_parameter("configuration", configuration)
+
+ if audio_config is not None:
+ _details['audioConfig'] = cli_util.parse_json_parameter("audio_config", audio_config)
+
+ client = cli_util.build_client('ai_speech', 'ai_service_speech', ctx)
+ result = client.synthesize_speech(
+ synthesize_speech_details=_details,
+ **kwargs
+ )
+
+ # If outputting to stdout we don't want to print a progress bar because it will get mixed up with the output
+ # Also we need a non-zero Content-Length in order to display a meaningful progress bar
+ bar = None
+ if hasattr(file, 'name') and file.name != '' and 'Content-Length' in result.headers:
+ content_length = int(result.headers['Content-Length'])
+ if content_length > 0:
+ bar = click.progressbar(length=content_length, label='Downloading file')
+
+ try:
+ if bar:
+ bar.__enter__()
+
+ # TODO: Make the download size a configurable option
+ # use decode_content=True to automatically unzip service responses (this should be overridden for object storage)
+ for chunk in result.data.raw.stream(cli_constants.MEBIBYTE, decode_content=True):
+ if bar:
+ bar.update(len(chunk))
+ file.write(chunk)
+ finally:
+ if bar:
+ bar.render_finish()
+ file.close()
+
+
+@synthesize_speech_group.command(name=cli_util.override('speech.synthesize_speech_tts_oracle_configuration.command_name', 'synthesize-speech-tts-oracle-configuration'), help=u"""Creates an audio for the given input text based on other input parameters like language, voice type, etc. \n[Command Reference](synthesizeSpeech)""")
+@cli_util.option('--text', required=True, help=u"""The text input to get the inference audio from TTS Service.""")
+@cli_util.option('--file', type=click.File(mode='wb'), required=True, help="The name of the file that will receive the response data, or '-' to write to STDOUT.")
+@cli_util.option('--is-stream-enabled', type=click.BOOL, help=u"""If set to true, response will be sent in the chunked transfer-encoding and audio chunks are sent back as and when they are ready. If set to false, response will be sent only once the entire audio is generated.""")
+@cli_util.option('--compartment-id', help=u"""The [OCID] of the compartment where the user has access to call `SpeechSynthesize` api. But default user access will be checked at tenancy level.""")
+@cli_util.option('--audio-config', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@cli_util.option('--configuration-model-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@cli_util.option('--configuration-speech-settings', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@json_skeleton_utils.get_cli_json_input_option({'audio-config': {'module': 'ai_speech', 'class': 'TtsAudioConfig'}, 'configuration-model-details': {'module': 'ai_speech', 'class': 'TtsOracleModelDetails'}, 'configuration-speech-settings': {'module': 'ai_speech', 'class': 'TtsOracleSpeechSettings'}})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'audio-config': {'module': 'ai_speech', 'class': 'TtsAudioConfig'}, 'configuration-model-details': {'module': 'ai_speech', 'class': 'TtsOracleModelDetails'}, 'configuration-speech-settings': {'module': 'ai_speech', 'class': 'TtsOracleSpeechSettings'}})
+@cli_util.wrap_exceptions
+def synthesize_speech_tts_oracle_configuration(ctx, from_json, file, text, is_stream_enabled, compartment_id, audio_config, configuration_model_details, configuration_speech_settings):
+
+ kwargs = {}
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+ _details['configuration'] = {}
+ _details['text'] = text
+
+ if is_stream_enabled is not None:
+ _details['isStreamEnabled'] = is_stream_enabled
+
+ if compartment_id is not None:
+ _details['compartmentId'] = compartment_id
+
+ if audio_config is not None:
+ _details['audioConfig'] = cli_util.parse_json_parameter("audio_config", audio_config)
+
+ if configuration_model_details is not None:
+ _details['configuration']['modelDetails'] = cli_util.parse_json_parameter("configuration_model_details", configuration_model_details)
+
+ if configuration_speech_settings is not None:
+ _details['configuration']['speechSettings'] = cli_util.parse_json_parameter("configuration_speech_settings", configuration_speech_settings)
+
+ _details['configuration']['modelFamily'] = 'ORACLE'
+
+ client = cli_util.build_client('ai_speech', 'ai_service_speech', ctx)
+ result = client.synthesize_speech(
+ synthesize_speech_details=_details,
+ **kwargs
+ )
+
+ # If outputting to stdout we don't want to print a progress bar because it will get mixed up with the output
+ # Also we need a non-zero Content-Length in order to display a meaningful progress bar
+ bar = None
+ if hasattr(file, 'name') and file.name != '' and 'Content-Length' in result.headers:
+ content_length = int(result.headers['Content-Length'])
+ if content_length > 0:
+ bar = click.progressbar(length=content_length, label='Downloading file')
+
+ try:
+ if bar:
+ bar.__enter__()
+
+ # TODO: Make the download size a configurable option
+ # use decode_content=True to automatically unzip service responses (this should be overridden for object storage)
+ for chunk in result.data.raw.stream(cli_constants.MEBIBYTE, decode_content=True):
+ if bar:
+ bar.update(len(chunk))
+ file.write(chunk)
+ finally:
+ if bar:
+ bar.render_finish()
+ file.close()
+
+
+@synthesize_speech_group.command(name=cli_util.override('speech.synthesize_speech_tts_base_audio_config.command_name', 'synthesize-speech-tts-base-audio-config'), help=u"""Creates an audio for the given input text based on other input parameters like language, voice type, etc. \n[Command Reference](synthesizeSpeech)""")
+@cli_util.option('--text', required=True, help=u"""The text input to get the inference audio from TTS Service.""")
+@cli_util.option('--audio-config-save-path', required=True, help=u"""Specify the path where you want to save the audio response.""")
+@cli_util.option('--file', type=click.File(mode='wb'), required=True, help="The name of the file that will receive the response data, or '-' to write to STDOUT.")
+@cli_util.option('--is-stream-enabled', type=click.BOOL, help=u"""If set to true, response will be sent in the chunked transfer-encoding and audio chunks are sent back as and when they are ready. If set to false, response will be sent only once the entire audio is generated.""")
+@cli_util.option('--compartment-id', help=u"""The [OCID] of the compartment where the user has access to call `SpeechSynthesize` api. But default user access will be checked at tenancy level.""")
+@cli_util.option('--configuration', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@json_skeleton_utils.get_cli_json_input_option({'configuration': {'module': 'ai_speech', 'class': 'TtsConfiguration'}})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'configuration': {'module': 'ai_speech', 'class': 'TtsConfiguration'}})
+@cli_util.wrap_exceptions
+def synthesize_speech_tts_base_audio_config(ctx, from_json, file, text, audio_config_save_path, is_stream_enabled, compartment_id, configuration):
+
+ kwargs = {}
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+ _details['audioConfig'] = {}
+ _details['text'] = text
+ _details['audioConfig']['savePath'] = audio_config_save_path
+
+ if is_stream_enabled is not None:
+ _details['isStreamEnabled'] = is_stream_enabled
+
+ if compartment_id is not None:
+ _details['compartmentId'] = compartment_id
+
+ if configuration is not None:
+ _details['configuration'] = cli_util.parse_json_parameter("configuration", configuration)
+
+ _details['audioConfig']['configType'] = 'BASE_AUDIO_CONFIG'
+
+ client = cli_util.build_client('ai_speech', 'ai_service_speech', ctx)
+ result = client.synthesize_speech(
+ synthesize_speech_details=_details,
+ **kwargs
+ )
+
+ # If outputting to stdout we don't want to print a progress bar because it will get mixed up with the output
+ # Also we need a non-zero Content-Length in order to display a meaningful progress bar
+ bar = None
+ if hasattr(file, 'name') and file.name != '' and 'Content-Length' in result.headers:
+ content_length = int(result.headers['Content-Length'])
+ if content_length > 0:
+ bar = click.progressbar(length=content_length, label='Downloading file')
+
+ try:
+ if bar:
+ bar.__enter__()
+
+ # TODO: Make the download size a configurable option
+ # use decode_content=True to automatically unzip service responses (this should be overridden for object storage)
+ for chunk in result.data.raw.stream(cli_constants.MEBIBYTE, decode_content=True):
+ if bar:
+ bar.update(len(chunk))
+ file.write(chunk)
+ finally:
+ if bar:
+ bar.render_finish()
+ file.close()
+
+
@customization_group.command(name=cli_util.override('speech.update_customization.command_name', 'update'), help=u"""Updates a Customization by identifier \n[Command Reference](updateCustomization)""")
@cli_util.option('--customization-id', required=True, help=u"""Unique Customization training Job identifier.""")
@cli_util.option('--alias', help=u"""Customization Details Alias""")
diff --git a/services/ai_speech/tests/util/generated/command_to_api.py b/services/ai_speech/tests/util/generated/command_to_api.py
index 185bc3f5..fa13faac 100644
--- a/services/ai_speech/tests/util/generated/command_to_api.py
+++ b/services/ai_speech/tests/util/generated/command_to_api.py
@@ -17,6 +17,8 @@
"speech.list_customizations": "oci.ai_speech.AIServiceSpeechClient.list_customizations",
"speech.list_transcription_jobs": "oci.ai_speech.AIServiceSpeechClient.list_transcription_jobs",
"speech.list_transcription_tasks": "oci.ai_speech.AIServiceSpeechClient.list_transcription_tasks",
+ "speech.list_voices": "oci.ai_speech.AIServiceSpeechClient.list_voices",
+ "speech.synthesize_speech": "oci.ai_speech.AIServiceSpeechClient.synthesize_speech",
"speech.update_customization": "oci.ai_speech.AIServiceSpeechClient.update_customization",
"speech.update_transcription_job": "oci.ai_speech.AIServiceSpeechClient.update_transcription_job",
}
diff --git a/services/capacity_management/src/oci_cli_capacity_management/generated/capacitymanagement_cli.py b/services/capacity_management/src/oci_cli_capacity_management/generated/capacitymanagement_cli.py
index e4c29a66..b8468033 100644
--- a/services/capacity_management/src/oci_cli_capacity_management/generated/capacitymanagement_cli.py
+++ b/services/capacity_management/src/oci_cli_capacity_management/generated/capacitymanagement_cli.py
@@ -46,18 +46,36 @@ def occ_capacity_request_collection_group():
pass
+@click.command(cli_util.override('capacity_management.occ_handover_resource_block_collection_group.command_name', 'occ-handover-resource-block-collection'), cls=CommandGroupWithAlias, help="""A list of occ handover resource blocks.""")
+@cli_util.help_option_group
+def occ_handover_resource_block_collection_group():
+ pass
+
+
@click.command(cli_util.override('capacity_management.occ_availability_catalog_collection_group.command_name', 'occ-availability-catalog-collection'), cls=CommandGroupWithAlias, help="""A list of availability catalogs.""")
@cli_util.help_option_group
def occ_availability_catalog_collection_group():
pass
+@click.command(cli_util.override('capacity_management.occ_customer_group.command_name', 'occ-customer'), cls=CommandGroupWithAlias, help="""The details about the customer.""")
+@cli_util.help_option_group
+def occ_customer_group():
+ pass
+
+
@click.command(cli_util.override('capacity_management.occ_customer_group_group.command_name', 'occ-customer-group'), cls=CommandGroupWithAlias, help="""Details of the customer group resource.""")
@cli_util.help_option_group
def occ_customer_group_group():
pass
+@click.command(cli_util.override('capacity_management.occ_handover_resource_block_detail_collection_group.command_name', 'occ-handover-resource-block-detail-collection'), cls=CommandGroupWithAlias, help="""A list of occResourceHandoverDetails.""")
+@cli_util.help_option_group
+def occ_handover_resource_block_detail_collection_group():
+ pass
+
+
@click.command(cli_util.override('capacity_management.occ_overview_collection_group.command_name', 'occ-overview-collection'), cls=CommandGroupWithAlias, help="""A list representing response of overview API.""")
@cli_util.help_option_group
def occ_overview_collection_group():
@@ -74,8 +92,11 @@ def occ_availability_collection_group():
capacity_management_root_group.add_command(occ_capacity_request_group)
capacity_management_root_group.add_command(occ_availability_catalog_group)
capacity_management_root_group.add_command(occ_capacity_request_collection_group)
+capacity_management_root_group.add_command(occ_handover_resource_block_collection_group)
capacity_management_root_group.add_command(occ_availability_catalog_collection_group)
+capacity_management_root_group.add_command(occ_customer_group)
capacity_management_root_group.add_command(occ_customer_group_group)
+capacity_management_root_group.add_command(occ_handover_resource_block_detail_collection_group)
capacity_management_root_group.add_command(occ_overview_collection_group)
capacity_management_root_group.add_command(occ_availability_collection_group)
@@ -158,7 +179,6 @@ def create_occ_availability_catalog(ctx, from_json, wait_for_state, max_wait_sec
@cli_util.option('--namespace', required=True, type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The name of the OCI service in consideration. For example, Compute, Exadata, and so on.""")
@cli_util.option('--region-parameterconflict', required=True, help=u"""The name of the region for which the capacity request is made.""")
@cli_util.option('--display-name', required=True, help=u"""An user-friendly name for the capacity request. Does not have to be unique, and it's changeable. Avoid entering confidential information.""")
-@cli_util.option('--availability-domain', required=True, help=u"""The availability domain (AD) for which the capacity request is made. If this is specified then the capacity will be validated and fulfilled within the scope of this AD.""")
@cli_util.option('--date-expected-capacity-handover', required=True, type=custom_types.CLI_DATETIME, help=u"""The date by which the capacity requested by customers before dateFinalCustomerOrder needs to be fulfilled.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
@cli_util.option('--details', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""A list of different resources requested by the user.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--occ-availability-catalog-id', help=u"""The OCID of the availability catalog against which capacity request is made.""")
@@ -167,6 +187,7 @@ def create_occ_availability_catalog(ctx, from_json, wait_for_state, max_wait_sec
@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)
@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)
@cli_util.option('--lifecycle-details', help=u"""A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed State.""")
+@cli_util.option('--availability-domain', help=u"""The availability domain (AD) in which the new resource is to be placed. If this is specified then the capacity will be validated and fulfilled within the scope of this AD. Note that this field is NOT required for Capacity request Transfer requests.""")
@cli_util.option('--request-state', type=custom_types.CliCaseInsensitiveChoice(["CREATED", "SUBMITTED"]), help=u"""The subset of request states available for creating the capacity request.""")
@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "UPDATING", "ACTIVE", "DELETING", "DELETED", "FAILED"]), 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.""")
@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.""")
@@ -176,7 +197,7 @@ def create_occ_availability_catalog(ctx, from_json, wait_for_state, max_wait_sec
@click.pass_context
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'capacity_management', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'capacity_management', 'class': 'dict(str, dict(str, object))'}, 'details': {'module': 'capacity_management', 'class': 'list[OccCapacityRequestBaseDetails]'}}, output_type={'module': 'capacity_management', 'class': 'OccCapacityRequest'})
@cli_util.wrap_exceptions
-def create_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, namespace, region_parameterconflict, display_name, availability_domain, date_expected_capacity_handover, details, occ_availability_catalog_id, request_type, description, freeform_tags, defined_tags, lifecycle_details, request_state):
+def create_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, namespace, region_parameterconflict, display_name, date_expected_capacity_handover, details, occ_availability_catalog_id, request_type, description, freeform_tags, defined_tags, lifecycle_details, availability_domain, request_state):
kwargs = {}
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
@@ -186,7 +207,6 @@ def create_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds
_details['namespace'] = namespace
_details['region'] = region_parameterconflict
_details['displayName'] = display_name
- _details['availabilityDomain'] = availability_domain
_details['dateExpectedCapacityHandover'] = date_expected_capacity_handover
_details['details'] = cli_util.parse_json_parameter("details", details)
@@ -208,6 +228,9 @@ def create_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds
if lifecycle_details is not None:
_details['lifecycleDetails'] = lifecycle_details
+ if availability_domain is not None:
+ _details['availabilityDomain'] = availability_domain
+
if request_state is not None:
_details['requestState'] = request_state
@@ -242,6 +265,121 @@ def create_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds
cli_util.render_response(result, ctx)
+@occ_customer_group.command(name=cli_util.override('capacity_management.create_occ_customer.command_name', 'create'), help=u"""Create customer. \n[Command Reference](createOccCustomer)""")
+@cli_util.option('--tenancy-id', required=True, help=u"""The OCID of the tenancy belonging to the customer.""")
+@cli_util.option('--display-name', required=True, help=u"""The display name for the customer.""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The OCID of the customer group.""")
+@cli_util.option('--description', help=u"""The description about the customer group.""")
+@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ENABLED", "DISABLED"]), help=u"""To determine whether the customer is enabled/disabled.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccCustomer'})
+@cli_util.wrap_exceptions
+def create_occ_customer(ctx, from_json, tenancy_id, display_name, occ_customer_group_id, description, status):
+
+ if isinstance(occ_customer_group_id, six.string_types) and len(occ_customer_group_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-group-id cannot be whitespace or empty string')
+
+ kwargs = {}
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+ _details['tenancyId'] = tenancy_id
+ _details['displayName'] = display_name
+
+ if description is not None:
+ _details['description'] = description
+
+ if status is not None:
+ _details['status'] = status
+
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.create_occ_customer(
+ occ_customer_group_id=occ_customer_group_id,
+ create_occ_customer_details=_details,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_customer_group_group.command(name=cli_util.override('capacity_management.create_occ_customer_group.command_name', 'create'), help=u"""Create customer group. \n[Command Reference](createOccCustomerGroup)""")
+@cli_util.option('--compartment-id', required=True, help=u"""Since all resources are at tenancy level hence this will be the ocid of the tenancy where operation is to be performed.""")
+@cli_util.option('--display-name', required=True, help=u"""The name of the customer group.""")
+@cli_util.option('--description', help=u"""A description about the customer group.""")
+@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)
+@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)
+@cli_util.option('--lifecycle-details', help=u"""A message describing the current state in more detail. For example, can be used to provide actionable information for a resource in a Failed State.""")
+@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ENABLED", "DISABLED"]), help=u"""To determine whether the customer group is enabled/disabled.""")
+@cli_util.option('--customers-list', type=custom_types.CLI_COMPLEX_TYPE, help=u"""A list containing all the customers that belong to this customer group.
+
+This option is a JSON list with items of type CreateOccCustomerDetails. For documentation on CreateOccCustomerDetails please see our API reference: https://docs.cloud.oracle.com/api/#/en/capacitymanagement/20231107/datatypes/CreateOccCustomerDetails.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "UPDATING", "ACTIVE", "DELETING", "DELETED", "FAILED"]), 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.""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'capacity_management', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'capacity_management', 'class': 'dict(str, dict(str, object))'}, 'customers-list': {'module': 'capacity_management', 'class': 'list[CreateOccCustomerDetails]'}})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'capacity_management', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'capacity_management', 'class': 'dict(str, dict(str, object))'}, 'customers-list': {'module': 'capacity_management', 'class': 'list[CreateOccCustomerDetails]'}}, output_type={'module': 'capacity_management', 'class': 'OccCustomerGroup'})
+@cli_util.wrap_exceptions
+def create_occ_customer_group(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, compartment_id, display_name, description, freeform_tags, defined_tags, lifecycle_details, status, customers_list):
+
+ kwargs = {}
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+ _details['compartmentId'] = compartment_id
+ _details['displayName'] = display_name
+
+ if description is not None:
+ _details['description'] = description
+
+ if freeform_tags is not None:
+ _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags)
+
+ if defined_tags is not None:
+ _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags)
+
+ if lifecycle_details is not None:
+ _details['lifecycleDetails'] = lifecycle_details
+
+ if status is not None:
+ _details['status'] = status
+
+ if customers_list is not None:
+ _details['customersList'] = cli_util.parse_json_parameter("customers_list", customers_list)
+
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.create_occ_customer_group(
+ create_occ_customer_group_details=_details,
+ **kwargs
+ )
+ if wait_for_state:
+
+ if hasattr(client, 'get_occ_customer_group') and callable(getattr(client, 'get_occ_customer_group')):
+ try:
+ wait_period_kwargs = {}
+ if max_wait_seconds is not None:
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
+ if wait_interval_seconds is not None:
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
+
+ click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr)
+ result = oci.wait_until(client, client.get_occ_customer_group(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs)
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
+ # If we fail, we should show an error, but we should still provide the information to the customer
+ click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ sys.exit(2)
+ except Exception:
+ click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ raise
+ else:
+ click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+
+
@occ_availability_catalog_group.command(name=cli_util.override('capacity_management.delete_occ_availability_catalog.command_name', 'delete'), help=u"""Deletes the availability catalog resource. \n[Command Reference](deleteOccAvailabilityCatalog)""")
@cli_util.option('--occ-availability-catalog-id', required=True, help=u"""The OCID of the availability catalog.""")
@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.""")
@@ -370,6 +508,101 @@ def delete_occ_capacity_request(ctx, from_json, wait_for_state, max_wait_seconds
cli_util.render_response(result, ctx)
+@occ_customer_group.command(name=cli_util.override('capacity_management.delete_occ_customer.command_name', 'delete'), help=u"""Deletes the customer resource. \n[Command Reference](deleteOccCustomer)""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The OCID of the customer group.""")
+@cli_util.option('--occ-customer-id', required=True, help=u"""The tenancy id of the customer.""")
+@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.""")
+@cli_util.confirm_delete_option
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={})
+@cli_util.wrap_exceptions
+def delete_occ_customer(ctx, from_json, occ_customer_group_id, occ_customer_id, if_match):
+
+ if isinstance(occ_customer_group_id, six.string_types) and len(occ_customer_group_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-group-id cannot be whitespace or empty string')
+
+ if isinstance(occ_customer_id, six.string_types) and len(occ_customer_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-id cannot be whitespace or empty string')
+
+ kwargs = {}
+ if if_match is not None:
+ kwargs['if_match'] = if_match
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.delete_occ_customer(
+ occ_customer_group_id=occ_customer_group_id,
+ occ_customer_id=occ_customer_id,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_customer_group_group.command(name=cli_util.override('capacity_management.delete_occ_customer_group.command_name', 'delete'), help=u"""Deletes the customer group resource. \n[Command Reference](deleteOccCustomerGroup)""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The OCID of the customer group.""")
+@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.""")
+@cli_util.confirm_delete_option
+@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "UPDATING", "ACTIVE", "DELETING", "DELETED", "FAILED"]), 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.""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={})
+@cli_util.wrap_exceptions
+def delete_occ_customer_group(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, occ_customer_group_id, if_match):
+
+ if isinstance(occ_customer_group_id, six.string_types) and len(occ_customer_group_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-group-id cannot be whitespace or empty string')
+
+ kwargs = {}
+ if if_match is not None:
+ kwargs['if_match'] = if_match
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.delete_occ_customer_group(
+ occ_customer_group_id=occ_customer_group_id,
+ **kwargs
+ )
+ if wait_for_state:
+
+ if hasattr(client, 'get_occ_customer_group') and callable(getattr(client, 'get_occ_customer_group')):
+ try:
+ wait_period_kwargs = {}
+ if max_wait_seconds is not None:
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
+ if wait_interval_seconds is not None:
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
+
+ click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr)
+ oci.wait_until(client, client.get_occ_customer_group(occ_customer_group_id), 'lifecycle_state', wait_for_state, succeed_on_not_found=True, **wait_period_kwargs)
+ except oci.exceptions.ServiceError as e:
+ # We make an initial service call so we can pass the result to oci.wait_until(), however if we are waiting on the
+ # outcome of a delete operation it is possible that the resource is already gone and so the initial service call
+ # will result in an exception that reflects a HTTP 404. In this case, we can exit with success (rather than raising
+ # the exception) since this would have been the behaviour in the waiter anyway (as for delete we provide the argument
+ # succeed_on_not_found=True to the waiter).
+ #
+ # Any non-404 should still result in the exception being thrown.
+ if e.status == 404:
+ pass
+ else:
+ raise
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
+ # If we fail, we should show an error, but we should still provide the information to the customer
+ click.echo('Failed to wait until the resource entered the specified state. Please retrieve the resource to find its current state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ sys.exit(2)
+ except Exception:
+ click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ raise
+ else:
+ click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+
+
@occ_availability_catalog_group.command(name=cli_util.override('capacity_management.get_occ_availability_catalog.command_name', 'get'), help=u"""Get details about availability catalog. \n[Command Reference](getOccAvailabilityCatalog)""")
@cli_util.option('--occ-availability-catalog-id', required=True, help=u"""The OCID of the availability catalog.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -487,7 +720,7 @@ def get_occ_customer_group(ctx, from_json, occ_customer_group_id):
@occ_overview_collection_group.command(name=cli_util.override('capacity_management.list_internal_namespace_occ_overviews.command_name', 'list-internal-namespace-occ-overviews'), help=u"""Lists an overview of all resources in that namespace in a given time interval. \n[Command Reference](listInternalNamespaceOccOverviews)""")
@cli_util.option('--namespace', required=True, type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace by which we would filter the list.""")
@cli_util.option('--compartment-id', required=True, help=u"""The ocid of the compartment or tenancy in which resources are to be listed. This will also be used for authorization purposes.""")
-@cli_util.option('--occ-customer-group-id', help=u"""The customer group ocid by which we would filter the list.""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The customer group ocid by which we would filter the list.""")
@cli_util.option('--workload-type', help=u"""Workload type using the resources in an availability catalog can be filtered.""")
@cli_util.option('---from', type=custom_types.CLI_DATETIME, help=u"""The month corresponding to this date would be considered as the starting point of the time period against which we would like to perform an aggregation.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
@cli_util.option('--to', type=custom_types.CLI_DATETIME, help=u"""The month corresponding to this date would be considered as the ending point of the time period against which we would like to perform an aggregation.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
@@ -511,8 +744,6 @@ def list_internal_namespace_occ_overviews(ctx, from_json, all_pages, page_size,
raise click.UsageError('Parameter --namespace cannot be whitespace or empty string')
kwargs = {}
- if occ_customer_group_id is not None:
- kwargs['occ_customer_group_id'] = occ_customer_group_id
if workload_type is not None:
kwargs['workload_type'] = workload_type
if _from is not None:
@@ -537,6 +768,7 @@ def list_internal_namespace_occ_overviews(ctx, from_json, all_pages, page_size,
client.list_internal_namespace_occ_overviews,
namespace=namespace,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
elif limit is not None:
@@ -546,12 +778,145 @@ def list_internal_namespace_occ_overviews(ctx, from_json, all_pages, page_size,
page_size,
namespace=namespace,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
else:
result = client.list_internal_namespace_occ_overviews(
namespace=namespace,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_handover_resource_block_detail_collection_group.command(name=cli_util.override('capacity_management.list_internal_occ_handover_resource_block_details.command_name', 'list-internal'), help=u"""List details about a given occHandoverResourceBlock. \n[Command Reference](listInternalOccHandoverResourceBlockDetails)""")
+@cli_util.option('--occ-handover-resource-block-id', required=True, help=u"""The OCID of the OccHandoverResource which is a required query parameter for listing OccHandoverResourceDetails.""")
+@cli_util.option('--host-id', help=u"""This fiter is applicable only for COMPUTE namespace. It helps in fetching of all resource block details for which the hostId is equal to the one provided in this query param.""")
+@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
+@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from `opc-next-page` header field of a previous response.""")
+@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'ASC' or 'DESC'.""")
+@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["handoverDate"]), help=u"""The field to sort by. Only one sort order may be provided. The default order for handoverDate is chronological order(latest date item at the end).""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccHandoverResourceBlockDetailCollection'})
+@cli_util.wrap_exceptions
+def list_internal_occ_handover_resource_block_details(ctx, from_json, all_pages, page_size, occ_handover_resource_block_id, host_id, limit, page, sort_order, sort_by):
+
+ if all_pages and limit:
+ raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
+
+ kwargs = {}
+ if host_id is not None:
+ kwargs['host_id'] = host_id
+ if limit is not None:
+ kwargs['limit'] = limit
+ if page is not None:
+ kwargs['page'] = page
+ if sort_order is not None:
+ kwargs['sort_order'] = sort_order
+ if sort_by is not None:
+ kwargs['sort_by'] = sort_by
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ if all_pages:
+ if page_size:
+ kwargs['limit'] = page_size
+
+ result = cli_util.list_call_get_all_results(
+ client.list_internal_occ_handover_resource_block_details,
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ elif limit is not None:
+ result = cli_util.list_call_get_up_to_limit(
+ client.list_internal_occ_handover_resource_block_details,
+ limit,
+ page_size,
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ else:
+ result = client.list_internal_occ_handover_resource_block_details(
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_handover_resource_block_collection_group.command(name=cli_util.override('capacity_management.list_internal_occ_handover_resource_blocks.command_name', 'list-internal'), help=u"""List Occ Handover Resource blocks. \n[Command Reference](listInternalOccHandoverResourceBlocks)""")
+@cli_util.option('--namespace', required=True, type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace enum value that needs to be passed as a required query parameter.""")
+@cli_util.option('--compartment-id', required=True, help=u"""The ocid of the compartment or tenancy in which resources are to be listed. This will also be used for authorization purposes.""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The customer group ocid by which we would filter the list.""")
+@cli_util.option('--handover-resource-name', help=u"""A filter to return only the list of resources that match the name provided in this filter.""")
+@cli_util.option('--handover-date-greater-than-or-equal-to', type=custom_types.CLI_DATETIME, help=u"""This filter helps in fetching all handed over resources for which the recordDate is greater than or equal to the startDate.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
+@cli_util.option('--handover-date-less-than-or-equal-to', type=custom_types.CLI_DATETIME, help=u"""This filter helps in fetching all handed over resources for which the recordDate is less than or equal to the endDate.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
+@cli_util.option('--occ-handover-resource-block-id', help=u"""This filter helps in fetching the handed over resource for which the occHandoverResourceId is equal to the one provided here.""")
+@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
+@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from `opc-next-page` header field of a previous response.""")
+@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'ASC' or 'DESC'.""")
+@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["handoverDate"]), help=u"""The field to sort by. Only one sort order may be provided. The default order for handoverDate is chronological order(latest date item at the end).""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccHandoverResourceBlockCollection'})
+@cli_util.wrap_exceptions
+def list_internal_occ_handover_resource_blocks(ctx, from_json, all_pages, page_size, namespace, compartment_id, occ_customer_group_id, handover_resource_name, handover_date_greater_than_or_equal_to, handover_date_less_than_or_equal_to, occ_handover_resource_block_id, limit, page, sort_order, sort_by):
+
+ if all_pages and limit:
+ raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
+
+ kwargs = {}
+ if handover_resource_name is not None:
+ kwargs['handover_resource_name'] = handover_resource_name
+ if handover_date_greater_than_or_equal_to is not None:
+ kwargs['handover_date_greater_than_or_equal_to'] = handover_date_greater_than_or_equal_to
+ if handover_date_less_than_or_equal_to is not None:
+ kwargs['handover_date_less_than_or_equal_to'] = handover_date_less_than_or_equal_to
+ if occ_handover_resource_block_id is not None:
+ kwargs['occ_handover_resource_block_id'] = occ_handover_resource_block_id
+ if limit is not None:
+ kwargs['limit'] = limit
+ if page is not None:
+ kwargs['page'] = page
+ if sort_order is not None:
+ kwargs['sort_order'] = sort_order
+ if sort_by is not None:
+ kwargs['sort_by'] = sort_by
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ if all_pages:
+ if page_size:
+ kwargs['limit'] = page_size
+
+ result = cli_util.list_call_get_all_results(
+ client.list_internal_occ_handover_resource_blocks,
+ namespace=namespace,
+ compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
+ **kwargs
+ )
+ elif limit is not None:
+ result = cli_util.list_call_get_up_to_limit(
+ client.list_internal_occ_handover_resource_blocks,
+ limit,
+ page_size,
+ namespace=namespace,
+ compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
+ **kwargs
+ )
+ else:
+ result = client.list_internal_occ_handover_resource_blocks(
+ namespace=namespace,
+ compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
cli_util.render_response(result, ctx)
@@ -694,11 +1059,11 @@ def list_occ_availability_catalogs(ctx, from_json, all_pages, page_size, compart
@occ_availability_catalog_collection_group.command(name=cli_util.override('capacity_management.list_occ_availability_catalogs_internal.command_name', 'list-occ-availability-catalogs-internal'), help=u"""An internal api to list availability catalogs. \n[Command Reference](listOccAvailabilityCatalogsInternal)""")
@cli_util.option('--compartment-id', required=True, help=u"""The ocid of the compartment or tenancy in which resources are to be listed. This will also be used for authorization purposes.""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The customer group ocid by which we would filter the list.""")
@cli_util.option('--namespace', type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace by which we would filter the list.""")
@cli_util.option('--id', help=u"""The OCID of the availability catalog to filter the list of availability catalogs.""")
@cli_util.option('--display-name', help=u"""A filter to return only the resources that match the entire display name. The match is not case sensitive.""")
@cli_util.option('--catalog-state', type=custom_types.CliCaseInsensitiveChoice(["NOT_UPLOADED", "UPLOAD_FAILED", "STAGED", "PUBLISHED", "OUTDATED", "DELETED"]), help=u"""Filter the list of availability catalogs based on the catalog state.""")
-@cli_util.option('--occ-customer-group-id', help=u"""The customer group ocid by which we would filter the list.""")
@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from `opc-next-page` header field of a previous response.""")
@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'ASC' or 'DESC'.""")
@@ -710,7 +1075,7 @@ def list_occ_availability_catalogs(ctx, from_json, all_pages, page_size, compart
@click.pass_context
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccAvailabilityCatalogCollection'})
@cli_util.wrap_exceptions
-def list_occ_availability_catalogs_internal(ctx, from_json, all_pages, page_size, compartment_id, namespace, id, display_name, catalog_state, occ_customer_group_id, limit, page, sort_order, sort_by):
+def list_occ_availability_catalogs_internal(ctx, from_json, all_pages, page_size, compartment_id, occ_customer_group_id, namespace, id, display_name, catalog_state, limit, page, sort_order, sort_by):
if all_pages and limit:
raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
@@ -724,8 +1089,6 @@ def list_occ_availability_catalogs_internal(ctx, from_json, all_pages, page_size
kwargs['display_name'] = display_name
if catalog_state is not None:
kwargs['catalog_state'] = catalog_state
- if occ_customer_group_id is not None:
- kwargs['occ_customer_group_id'] = occ_customer_group_id
if limit is not None:
kwargs['limit'] = limit
if page is not None:
@@ -743,6 +1106,7 @@ def list_occ_availability_catalogs_internal(ctx, from_json, all_pages, page_size
result = cli_util.list_call_get_all_results(
client.list_occ_availability_catalogs_internal,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
elif limit is not None:
@@ -751,11 +1115,13 @@ def list_occ_availability_catalogs_internal(ctx, from_json, all_pages, page_size
limit,
page_size,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
else:
result = client.list_occ_availability_catalogs_internal(
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
cli_util.render_response(result, ctx)
@@ -832,7 +1198,7 @@ def list_occ_capacity_requests(ctx, from_json, all_pages, page_size, compartment
@occ_capacity_request_collection_group.command(name=cli_util.override('capacity_management.list_occ_capacity_requests_internal.command_name', 'list-occ-capacity-requests-internal'), help=u"""An internal api to list all capacity requests. \n[Command Reference](listOccCapacityRequestsInternal)""")
@cli_util.option('--compartment-id', required=True, help=u"""The ocid of the compartment or tenancy in which resources are to be listed. This will also be used for authorization purposes.""")
-@cli_util.option('--occ-customer-group-id', help=u"""The customer group ocid by which we would filter the list.""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The customer group ocid by which we would filter the list.""")
@cli_util.option('--occ-availability-catalog-id', help=u"""A filter to return the list of capacity requests based on the OCID of the availability catalog against which they were created.""")
@cli_util.option('--namespace', type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace by which we would filter the list.""")
@cli_util.option('--display-name', help=u"""A filter to return only the resources that match the entire display name. The match is not case sensitive.""")
@@ -855,8 +1221,6 @@ def list_occ_capacity_requests_internal(ctx, from_json, all_pages, page_size, co
raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
kwargs = {}
- if occ_customer_group_id is not None:
- kwargs['occ_customer_group_id'] = occ_customer_group_id
if occ_availability_catalog_id is not None:
kwargs['occ_availability_catalog_id'] = occ_availability_catalog_id
if namespace is not None:
@@ -884,6 +1248,7 @@ def list_occ_capacity_requests_internal(ctx, from_json, all_pages, page_size, co
result = cli_util.list_call_get_all_results(
client.list_occ_capacity_requests_internal,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
elif limit is not None:
@@ -892,11 +1257,13 @@ def list_occ_capacity_requests_internal(ctx, from_json, all_pages, page_size, co
limit,
page_size,
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
else:
result = client.list_occ_capacity_requests_internal(
compartment_id=compartment_id,
+ occ_customer_group_id=occ_customer_group_id,
**kwargs
)
cli_util.render_response(result, ctx)
@@ -965,6 +1332,131 @@ def list_occ_customer_groups(ctx, from_json, all_pages, page_size, compartment_i
cli_util.render_response(result, ctx)
+@occ_handover_resource_block_detail_collection_group.command(name=cli_util.override('capacity_management.list_occ_handover_resource_block_details.command_name', 'list'), help=u"""List details about a given occHandoverResourceBlock. \n[Command Reference](listOccHandoverResourceBlockDetails)""")
+@cli_util.option('--occ-handover-resource-block-id', required=True, help=u"""The OCID of the OccHandoverResource which is a required query parameter for listing OccHandoverResourceDetails.""")
+@cli_util.option('--host-id', help=u"""This fiter is applicable only for COMPUTE namespace. It helps in fetching of all resource block details for which the hostId is equal to the one provided in this query param.""")
+@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
+@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from `opc-next-page` header field of a previous response.""")
+@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'ASC' or 'DESC'.""")
+@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["handoverDate"]), help=u"""The field to sort by. Only one sort order may be provided. The default order for handoverDate is chronological order(latest date item at the end).""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccHandoverResourceBlockDetailCollection'})
+@cli_util.wrap_exceptions
+def list_occ_handover_resource_block_details(ctx, from_json, all_pages, page_size, occ_handover_resource_block_id, host_id, limit, page, sort_order, sort_by):
+
+ if all_pages and limit:
+ raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
+
+ kwargs = {}
+ if host_id is not None:
+ kwargs['host_id'] = host_id
+ if limit is not None:
+ kwargs['limit'] = limit
+ if page is not None:
+ kwargs['page'] = page
+ if sort_order is not None:
+ kwargs['sort_order'] = sort_order
+ if sort_by is not None:
+ kwargs['sort_by'] = sort_by
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ if all_pages:
+ if page_size:
+ kwargs['limit'] = page_size
+
+ result = cli_util.list_call_get_all_results(
+ client.list_occ_handover_resource_block_details,
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ elif limit is not None:
+ result = cli_util.list_call_get_up_to_limit(
+ client.list_occ_handover_resource_block_details,
+ limit,
+ page_size,
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ else:
+ result = client.list_occ_handover_resource_block_details(
+ occ_handover_resource_block_id=occ_handover_resource_block_id,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_handover_resource_block_collection_group.command(name=cli_util.override('capacity_management.list_occ_handover_resource_blocks.command_name', 'list'), help=u"""List Occ Handover Resource blocks. \n[Command Reference](listOccHandoverResourceBlocks)""")
+@cli_util.option('--namespace', type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace by which we would filter the list.""")
+@cli_util.option('--compartment-id', help=u"""The OCID of the compartment or tenancy in which resources are to be listed.""")
+@cli_util.option('--handover-resource-name', help=u"""A filter to return only the list of resources that match the name provided in this filter.""")
+@cli_util.option('--handover-date-greater-than-or-equal-to', type=custom_types.CLI_DATETIME, help=u"""This filter helps in fetching all handed over resources for which the recordDate is greater than or equal to the startDate.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
+@cli_util.option('--handover-date-less-than-or-equal-to', type=custom_types.CLI_DATETIME, help=u"""This filter helps in fetching all handed over resources for which the recordDate is less than or equal to the endDate.""" + custom_types.CLI_DATETIME.VALID_DATETIME_CLI_HELP_MESSAGE)
+@cli_util.option('--occ-handover-resource-block-id', help=u"""This filter helps in fetching the handed over resource for which the occHandoverResourceId is equal to the one provided here.""")
+@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
+@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from `opc-next-page` header field of a previous response.""")
+@cli_util.option('--sort-order', type=custom_types.CliCaseInsensitiveChoice(["ASC", "DESC"]), help=u"""The sort order to use, either 'ASC' or 'DESC'.""")
+@cli_util.option('--sort-by', type=custom_types.CliCaseInsensitiveChoice(["handoverDate"]), help=u"""The field to sort by. Only one sort order may be provided. The default order for handoverDate is chronological order(latest date item at the end).""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccHandoverResourceBlockCollection'})
+@cli_util.wrap_exceptions
+def list_occ_handover_resource_blocks(ctx, from_json, all_pages, page_size, namespace, compartment_id, handover_resource_name, handover_date_greater_than_or_equal_to, handover_date_less_than_or_equal_to, occ_handover_resource_block_id, limit, page, sort_order, sort_by):
+
+ if all_pages and limit:
+ raise click.UsageError('If you provide the --all option you cannot provide the --limit option')
+
+ kwargs = {}
+ if namespace is not None:
+ kwargs['namespace'] = namespace
+ if compartment_id is not None:
+ kwargs['compartment_id'] = compartment_id
+ if handover_resource_name is not None:
+ kwargs['handover_resource_name'] = handover_resource_name
+ if handover_date_greater_than_or_equal_to is not None:
+ kwargs['handover_date_greater_than_or_equal_to'] = handover_date_greater_than_or_equal_to
+ if handover_date_less_than_or_equal_to is not None:
+ kwargs['handover_date_less_than_or_equal_to'] = handover_date_less_than_or_equal_to
+ if occ_handover_resource_block_id is not None:
+ kwargs['occ_handover_resource_block_id'] = occ_handover_resource_block_id
+ if limit is not None:
+ kwargs['limit'] = limit
+ if page is not None:
+ kwargs['page'] = page
+ if sort_order is not None:
+ kwargs['sort_order'] = sort_order
+ if sort_by is not None:
+ kwargs['sort_by'] = sort_by
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ if all_pages:
+ if page_size:
+ kwargs['limit'] = page_size
+
+ result = cli_util.list_call_get_all_results(
+ client.list_occ_handover_resource_blocks,
+ **kwargs
+ )
+ elif limit is not None:
+ result = cli_util.list_call_get_up_to_limit(
+ client.list_occ_handover_resource_blocks,
+ limit,
+ page_size,
+ **kwargs
+ )
+ else:
+ result = client.list_occ_handover_resource_blocks(
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
@occ_overview_collection_group.command(name=cli_util.override('capacity_management.list_occ_overviews.command_name', 'list-occ-overviews'), help=u"""Lists an overview of all resources in that namespace in a given time interval. \n[Command Reference](listOccOverviews)""")
@cli_util.option('--namespace', required=True, type=custom_types.CliCaseInsensitiveChoice(["COMPUTE"]), help=u"""The namespace by which we would filter the list.""")
@cli_util.option('--compartment-id', required=True, help=u"""The ocid of the compartment or tenancy in which resources are to be listed. This will also be used for authorization purposes.""")
@@ -1317,3 +1809,129 @@ def update_occ_capacity_request(ctx, from_json, force, wait_for_state, max_wait_
else:
click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
cli_util.render_response(result, ctx)
+
+
+@occ_customer_group.command(name=cli_util.override('capacity_management.update_occ_customer.command_name', 'update'), help=u"""The request to update the customer. \n[Command Reference](updateOccCustomer)""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The OCID of the customer group.""")
+@cli_util.option('--occ-customer-id', required=True, help=u"""The tenancy id of the customer.""")
+@cli_util.option('--display-name', help=u"""The display name of the customer.""")
+@cli_util.option('--description', help=u"""Additional information about the customer.""")
+@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ENABLED", "DISABLED"]), help=u"""To determine whether the customer group is enabled/disabled.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={}, output_type={'module': 'capacity_management', 'class': 'OccCustomer'})
+@cli_util.wrap_exceptions
+def update_occ_customer(ctx, from_json, occ_customer_group_id, occ_customer_id, display_name, description, status, if_match):
+
+ if isinstance(occ_customer_group_id, six.string_types) and len(occ_customer_group_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-group-id cannot be whitespace or empty string')
+
+ if isinstance(occ_customer_id, six.string_types) and len(occ_customer_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-id cannot be whitespace or empty string')
+
+ kwargs = {}
+ if if_match is not None:
+ kwargs['if_match'] = if_match
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+
+ if display_name is not None:
+ _details['displayName'] = display_name
+
+ if description is not None:
+ _details['description'] = description
+
+ if status is not None:
+ _details['status'] = status
+
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.update_occ_customer(
+ occ_customer_group_id=occ_customer_group_id,
+ occ_customer_id=occ_customer_id,
+ update_occ_customer_details=_details,
+ **kwargs
+ )
+ cli_util.render_response(result, ctx)
+
+
+@occ_customer_group_group.command(name=cli_util.override('capacity_management.update_occ_customer_group.command_name', 'update'), help=u"""The request to update the customer group. \n[Command Reference](updateOccCustomerGroup)""")
+@cli_util.option('--occ-customer-group-id', required=True, help=u"""The OCID of the customer group.""")
+@cli_util.option('--display-name', help=u"""The display name of the customer group.""")
+@cli_util.option('--description', help=u"""Additional information about the customer group.""")
+@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)
+@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)
+@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ENABLED", "DISABLED"]), help=u"""To determine whether the customer group is enabled/disabled.""")
+@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.""")
+@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
+@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["CREATING", "UPDATING", "ACTIVE", "DELETING", "DELETED", "FAILED"]), 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.""")
+@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.""")
+@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.""")
+@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'capacity_management', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'capacity_management', 'class': 'dict(str, dict(str, object))'}})
+@cli_util.help_option
+@click.pass_context
+@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'freeform-tags': {'module': 'capacity_management', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'capacity_management', 'class': 'dict(str, dict(str, object))'}}, output_type={'module': 'capacity_management', 'class': 'OccCustomerGroup'})
+@cli_util.wrap_exceptions
+def update_occ_customer_group(ctx, from_json, force, wait_for_state, max_wait_seconds, wait_interval_seconds, occ_customer_group_id, display_name, description, freeform_tags, defined_tags, status, if_match):
+
+ if isinstance(occ_customer_group_id, six.string_types) and len(occ_customer_group_id.strip()) == 0:
+ raise click.UsageError('Parameter --occ-customer-group-id cannot be whitespace or empty string')
+ if not force:
+ if freeform_tags or defined_tags:
+ if not click.confirm("WARNING: Updates to freeform-tags and defined-tags will replace any existing values. Are you sure you want to continue?"):
+ ctx.abort()
+
+ kwargs = {}
+ if if_match is not None:
+ kwargs['if_match'] = if_match
+ kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
+
+ _details = {}
+
+ if display_name is not None:
+ _details['displayName'] = display_name
+
+ if description is not None:
+ _details['description'] = description
+
+ if freeform_tags is not None:
+ _details['freeformTags'] = cli_util.parse_json_parameter("freeform_tags", freeform_tags)
+
+ if defined_tags is not None:
+ _details['definedTags'] = cli_util.parse_json_parameter("defined_tags", defined_tags)
+
+ if status is not None:
+ _details['status'] = status
+
+ client = cli_util.build_client('capacity_management', 'capacity_management', ctx)
+ result = client.update_occ_customer_group(
+ occ_customer_group_id=occ_customer_group_id,
+ update_occ_customer_group_details=_details,
+ **kwargs
+ )
+ if wait_for_state:
+
+ if hasattr(client, 'get_occ_customer_group') and callable(getattr(client, 'get_occ_customer_group')):
+ try:
+ wait_period_kwargs = {}
+ if max_wait_seconds is not None:
+ wait_period_kwargs['max_wait_seconds'] = max_wait_seconds
+ if wait_interval_seconds is not None:
+ wait_period_kwargs['max_interval_seconds'] = wait_interval_seconds
+
+ click.echo('Action completed. Waiting until the resource has entered state: {}'.format(wait_for_state), file=sys.stderr)
+ result = oci.wait_until(client, client.get_occ_customer_group(result.data.id), 'lifecycle_state', wait_for_state, **wait_period_kwargs)
+ except oci.exceptions.MaximumWaitTimeExceeded as e:
+ # If we fail, we should show an error, but we should still provide the information to the customer
+ click.echo('Failed to wait until the resource entered the specified state. Outputting last known resource state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ sys.exit(2)
+ except Exception:
+ click.echo('Encountered error while waiting for resource to enter the specified state. Outputting last known resource state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
+ raise
+ else:
+ click.echo('Unable to wait for the resource to enter the specified state', file=sys.stderr)
+ cli_util.render_response(result, ctx)
diff --git a/services/capacity_management/tests/util/generated/command_to_api.py b/services/capacity_management/tests/util/generated/command_to_api.py
index aa7e048f..b5a43f23 100644
--- a/services/capacity_management/tests/util/generated/command_to_api.py
+++ b/services/capacity_management/tests/util/generated/command_to_api.py
@@ -4,19 +4,27 @@
SDK_client_map = {
"capacity_management.create_occ_availability_catalog": "oci.capacity_management.CapacityManagementClient.create_occ_availability_catalog",
"capacity_management.create_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.create_occ_capacity_request",
+ "capacity_management.create_occ_customer": "oci.capacity_management.CapacityManagementClient.create_occ_customer",
+ "capacity_management.create_occ_customer_group": "oci.capacity_management.CapacityManagementClient.create_occ_customer_group",
"capacity_management.delete_occ_availability_catalog": "oci.capacity_management.CapacityManagementClient.delete_occ_availability_catalog",
"capacity_management.delete_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.delete_occ_capacity_request",
+ "capacity_management.delete_occ_customer": "oci.capacity_management.CapacityManagementClient.delete_occ_customer",
+ "capacity_management.delete_occ_customer_group": "oci.capacity_management.CapacityManagementClient.delete_occ_customer_group",
"capacity_management.get_occ_availability_catalog": "oci.capacity_management.CapacityManagementClient.get_occ_availability_catalog",
"capacity_management.get_occ_availability_catalog_content": "oci.capacity_management.CapacityManagementClient.get_occ_availability_catalog_content",
"capacity_management.get_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.get_occ_capacity_request",
"capacity_management.get_occ_customer_group": "oci.capacity_management.CapacityManagementClient.get_occ_customer_group",
"capacity_management.list_internal_namespace_occ_overviews": "oci.capacity_management.CapacityManagementClient.list_internal_namespace_occ_overviews",
+ "capacity_management.list_internal_occ_handover_resource_block_details": "oci.capacity_management.CapacityManagementClient.list_internal_occ_handover_resource_block_details",
+ "capacity_management.list_internal_occ_handover_resource_blocks": "oci.capacity_management.CapacityManagementClient.list_internal_occ_handover_resource_blocks",
"capacity_management.list_occ_availabilities": "oci.capacity_management.CapacityManagementClient.list_occ_availabilities",
"capacity_management.list_occ_availability_catalogs": "oci.capacity_management.CapacityManagementClient.list_occ_availability_catalogs",
"capacity_management.list_occ_availability_catalogs_internal": "oci.capacity_management.CapacityManagementClient.list_occ_availability_catalogs_internal",
"capacity_management.list_occ_capacity_requests": "oci.capacity_management.CapacityManagementClient.list_occ_capacity_requests",
"capacity_management.list_occ_capacity_requests_internal": "oci.capacity_management.CapacityManagementClient.list_occ_capacity_requests_internal",
"capacity_management.list_occ_customer_groups": "oci.capacity_management.CapacityManagementClient.list_occ_customer_groups",
+ "capacity_management.list_occ_handover_resource_block_details": "oci.capacity_management.CapacityManagementClient.list_occ_handover_resource_block_details",
+ "capacity_management.list_occ_handover_resource_blocks": "oci.capacity_management.CapacityManagementClient.list_occ_handover_resource_blocks",
"capacity_management.list_occ_overviews": "oci.capacity_management.CapacityManagementClient.list_occ_overviews",
"capacity_management.patch_internal_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.patch_internal_occ_capacity_request",
"capacity_management.patch_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.patch_occ_capacity_request",
@@ -24,4 +32,6 @@
"capacity_management.update_internal_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.update_internal_occ_capacity_request",
"capacity_management.update_occ_availability_catalog": "oci.capacity_management.CapacityManagementClient.update_occ_availability_catalog",
"capacity_management.update_occ_capacity_request": "oci.capacity_management.CapacityManagementClient.update_occ_capacity_request",
+ "capacity_management.update_occ_customer": "oci.capacity_management.CapacityManagementClient.update_occ_customer",
+ "capacity_management.update_occ_customer_group": "oci.capacity_management.CapacityManagementClient.update_occ_customer_group",
}
diff --git a/services/fleet_software_update/src/oci_cli_fleet_software_update/generated/fleetsoftwareupdate_cli.py b/services/fleet_software_update/src/oci_cli_fleet_software_update/generated/fleetsoftwareupdate_cli.py
index d98726a8..02e8e1c8 100644
--- a/services/fleet_software_update/src/oci_cli_fleet_software_update/generated/fleetsoftwareupdate_cli.py
+++ b/services/fleet_software_update/src/oci_cli_fleet_software_update/generated/fleetsoftwareupdate_cli.py
@@ -166,7 +166,7 @@ def abort_fsu_discovery(ctx, from_json, fsu_discovery_id, if_match):
@cli_util.option('--fsu-collection-id', required=True, help=u"""Unique Exadata Fleet Update Collection identifier.""")
@cli_util.option('--targets', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""List of Targets to add into the Exadata Fleet Update Collection.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'targets': {'module': 'fleet_software_update', 'class': 'list[TargetEntry]'}})
@@ -252,7 +252,7 @@ def cancel_fsu_action(ctx, from_json, fsu_action_id, if_match):
@cli_util.option('--fsu-action-id', required=True, help=u"""Unique Exadata Fleet Update Action identifier.""")
@cli_util.option('--compartment-id', required=True, help=u"""The [OCID] of the compartment into which the resource should be moved.""")
@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.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -313,7 +313,7 @@ def change_fsu_action_compartment(ctx, from_json, wait_for_state, max_wait_secon
@cli_util.option('--fsu-collection-id', required=True, help=u"""Unique Exadata Fleet Update Collection identifier.""")
@cli_util.option('--compartment-id', required=True, help=u"""The [OCID] of the compartment into which the resource should be moved.""")
@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.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -374,7 +374,7 @@ def change_fsu_collection_compartment(ctx, from_json, wait_for_state, max_wait_s
@cli_util.option('--fsu-cycle-id', required=True, help=u"""Unique Exadata Fleet Update Cycle identifier.""")
@cli_util.option('--compartment-id', required=True, help=u"""The [OCID] of the compartment into which the resource should be moved.""")
@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.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -471,7 +471,7 @@ def change_fsu_discovery_compartment(ctx, from_json, fsu_discovery_id, compartme
@cli_util.option('--batching-strategy', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--stage-action-schedule', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--apply-action-schedule', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'batching-strategy': {'module': 'fleet_software_update', 'class': 'CreateBatchingStrategyDetails'}, 'stage-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}, 'apply-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -550,7 +550,7 @@ def clone_fsu_cycle(ctx, from_json, wait_for_state, max_wait_seconds, wait_inter
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Action display name.""")
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -618,7 +618,7 @@ def create_fsu_action(ctx, from_json, wait_for_state, max_wait_seconds, wait_int
@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)
@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)
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -691,7 +691,7 @@ def create_fsu_action_create_apply_action_details(ctx, from_json, wait_for_state
@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)
@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)
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -765,7 +765,7 @@ def create_fsu_action_create_stage_action_details(ctx, from_json, wait_for_state
@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)
@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)
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'details': {'module': 'fleet_software_update', 'class': 'RollbackDetails'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -839,7 +839,7 @@ def create_fsu_action_create_rollback_action_details(ctx, from_json, wait_for_st
@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)
@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)
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -912,7 +912,7 @@ def create_fsu_action_create_cleanup_action_details(ctx, from_json, wait_for_sta
@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)
@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)
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}})
@@ -985,7 +985,7 @@ def create_fsu_action_create_precheck_action_details(ctx, from_json, wait_for_st
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection Identifier.""")
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -1050,12 +1050,12 @@ def create_fsu_collection(ctx, from_json, wait_for_state, max_wait_seconds, wait
@fsu_collection_group.command(name=cli_util.override('fleet_software_update.create_fsu_collection_create_db_fsu_collection_details.command_name', 'create-fsu-collection-create-db-fsu-collection-details'), help=u"""Creates a new Exadata Fleet Update Collection. \n[Command Reference](createFsuCollection)""")
@cli_util.option('--service-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["EXACS", "EXACC"]), help=u"""Exadata service type for the target resource members.""")
@cli_util.option('--compartment-id', required=True, help=u"""Compartment Identifier""")
-@cli_util.option('--source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["DB_11204", "DB_121", "DB_122", "DB_18", "DB_19"]), help=u"""Database Major Version of targets to be included in the Exadata Fleet Update Collection. https://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/DbVersionSummary/ListDbVersions Only Database targets that match the version specified in this value would be added to the Exadata Fleet Update Collection.""")
+@cli_util.option('--source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["DB_11204", "DB_121", "DB_122", "DB_18", "DB_19", "DB_23"]), help=u"""Database Major Version of targets to be included in the Exadata Fleet Update Collection. https://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/DbVersionSummary/ListDbVersions Only Database targets that match the version specified in this value would be added to the Exadata Fleet Update Collection.""")
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection Identifier.""")
@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)
@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)
@cli_util.option('--fleet-discovery', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'fleet-discovery': {'module': 'fleet_software_update', 'class': 'DbFleetDiscoveryDetails'}})
@@ -1125,12 +1125,12 @@ def create_fsu_collection_create_db_fsu_collection_details(ctx, from_json, wait_
@fsu_collection_group.command(name=cli_util.override('fleet_software_update.create_fsu_collection_create_gi_fsu_collection_details.command_name', 'create-fsu-collection-create-gi-fsu-collection-details'), help=u"""Creates a new Exadata Fleet Update Collection. \n[Command Reference](createFsuCollection)""")
@cli_util.option('--service-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["EXACS", "EXACC"]), help=u"""Exadata service type for the target resource members.""")
@cli_util.option('--compartment-id', required=True, help=u"""Compartment Identifier""")
-@cli_util.option('--source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["GI_18", "GI_19"]), help=u"""Grid Infrastructure Major Version of targets to be included in the Exadata Fleet Update Collection. Only GI targets that match the version specified in this value would be added to the Exadata Fleet Update Collection.""")
+@cli_util.option('--source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["GI_18", "GI_19", "GI_23"]), help=u"""Grid Infrastructure Major Version of targets to be included in the Exadata Fleet Update Collection. Only GI targets that match the version specified in this value would be added to the Exadata Fleet Update Collection.""")
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection Identifier.""")
@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)
@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)
@cli_util.option('--fleet-discovery', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'fleet-discovery': {'module': 'fleet_software_update', 'class': 'GiFleetDiscoveryDetails'}})
@@ -1209,7 +1209,7 @@ def create_fsu_collection_create_gi_fsu_collection_details(ctx, from_json, wait_
@cli_util.option('--diagnostics-collection', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'batching-strategy': {'module': 'fleet_software_update', 'class': 'CreateBatchingStrategyDetails'}, 'stage-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}, 'apply-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -1299,7 +1299,7 @@ def create_fsu_cycle(ctx, from_json, wait_for_state, max_wait_seconds, wait_inte
@cli_util.option('--is-ignore-missing-patches', type=custom_types.CLI_COMPLEX_TYPE, help=u"""List of patch IDs to ignore.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--max-drain-timeout-in-seconds', type=click.INT, help=u"""Service drain timeout specified in seconds.""")
@cli_util.option('--is-keep-placement', type=click.BOOL, help=u"""Ensure that services of administrator-managed Oracle RAC or Oracle RAC One databases are running on the same instances before and after the move operation.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'batching-strategy': {'module': 'fleet_software_update', 'class': 'CreateBatchingStrategyDetails'}, 'stage-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}, 'apply-action-schedule': {'module': 'fleet_software_update', 'class': 'CreateScheduleDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'is-ignore-missing-patches': {'module': 'fleet_software_update', 'class': 'list[string]'}})
@@ -1393,7 +1393,7 @@ def create_fsu_cycle_create_patch_fsu_cycle(ctx, from_json, wait_for_state, max_
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection display name.""")
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'details': {'module': 'fleet_software_update', 'class': 'DiscoveryDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -1457,12 +1457,12 @@ def create_fsu_discovery(ctx, from_json, wait_for_state, max_wait_seconds, wait_
@fsu_discovery_group.command(name=cli_util.override('fleet_software_update.create_fsu_discovery_gi_discovery_details.command_name', 'create-fsu-discovery-gi-discovery-details'), help=u"""Creates a new Exadata Fleet Update Discovery. \n[Command Reference](createFsuDiscovery)""")
@cli_util.option('--compartment-id', required=True, help=u"""Compartment Identifier.""")
@cli_util.option('--details-service-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["EXACS", "EXACC"]), help=u"""Exadata service type for the target resource members.""")
-@cli_util.option('--details-source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["GI_18", "GI_19"]), help=u"""Grid Infrastructure Major Version of targets to be included in the Exadata Fleet Update Discovery results. Only GI targets that match the version specified in this value would be added to the Exadata Fleet Update Discovery results.""")
+@cli_util.option('--details-source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["GI_18", "GI_19", "GI_23"]), help=u"""Grid Infrastructure Major Version of targets to be included in the Exadata Fleet Update Discovery results. Only GI targets that match the version specified in this value would be added to the Exadata Fleet Update Discovery results.""")
@cli_util.option('--details-criteria', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection display name.""")
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'details-criteria': {'module': 'fleet_software_update', 'class': 'GiFleetDiscoveryDetails'}})
@@ -1531,12 +1531,12 @@ def create_fsu_discovery_gi_discovery_details(ctx, from_json, wait_for_state, ma
@fsu_discovery_group.command(name=cli_util.override('fleet_software_update.create_fsu_discovery_db_discovery_details.command_name', 'create-fsu-discovery-db-discovery-details'), help=u"""Creates a new Exadata Fleet Update Discovery. \n[Command Reference](createFsuDiscovery)""")
@cli_util.option('--compartment-id', required=True, help=u"""Compartment Identifier.""")
@cli_util.option('--details-service-type', required=True, type=custom_types.CliCaseInsensitiveChoice(["EXACS", "EXACC"]), help=u"""Exadata service type for the target resource members.""")
-@cli_util.option('--details-source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["DB_11204", "DB_121", "DB_122", "DB_18", "DB_19"]), help=u"""Database Major Version of targets to be included in the Exadata Fleet Update Discovery results. https://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/DbVersionSummary/ListDbVersions Only Database targets that match the version specified in this value would be added to the Exadata Fleet Update Discovery results.""")
+@cli_util.option('--details-source-major-version', required=True, type=custom_types.CliCaseInsensitiveChoice(["DB_11204", "DB_121", "DB_122", "DB_18", "DB_19", "DB_23"]), help=u"""Database Major Version of targets to be included in the Exadata Fleet Update Discovery results. https://docs.oracle.com/en-us/iaas/api/#/en/database/20160918/DbVersionSummary/ListDbVersions Only Database targets that match the version specified in this value would be added to the Exadata Fleet Update Discovery results.""")
@cli_util.option('--details-criteria', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@cli_util.option('--display-name', help=u"""Exadata Fleet Update Collection display name.""")
@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)
@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)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'details-criteria': {'module': 'fleet_software_update', 'class': 'DbFleetDiscoveryDetails'}})
@@ -1606,7 +1606,7 @@ def create_fsu_discovery_db_discovery_details(ctx, from_json, wait_for_state, ma
@cli_util.option('--fsu-action-id', required=True, help=u"""Unique Exadata Fleet Update Action identifier.""")
@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.""")
@cli_util.confirm_delete_option
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -1662,7 +1662,7 @@ def delete_fsu_action(ctx, from_json, wait_for_state, max_wait_seconds, wait_int
@cli_util.option('--fsu-collection-id', required=True, help=u"""Unique Exadata Fleet Update Collection identifier.""")
@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.""")
@cli_util.confirm_delete_option
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -1719,7 +1719,7 @@ def delete_fsu_collection(ctx, from_json, wait_for_state, max_wait_seconds, wait
@cli_util.option('--target-id', required=True, help=u"""Target resource OCID.""")
@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.""")
@cli_util.confirm_delete_option
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -1779,7 +1779,7 @@ def delete_fsu_collection_target(ctx, from_json, wait_for_state, max_wait_second
@cli_util.option('--fsu-cycle-id', required=True, help=u"""Unique Exadata Fleet Update Cycle identifier.""")
@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.""")
@cli_util.confirm_delete_option
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -1835,7 +1835,7 @@ def delete_fsu_cycle(ctx, from_json, wait_for_state, max_wait_seconds, wait_inte
@cli_util.option('--fsu-discovery-id', required=True, help=u"""Unique Exadata Fleet Update Discovery identifier.""")
@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.""")
@cli_util.confirm_delete_option
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -2818,7 +2818,7 @@ def list_work_request_logs(ctx, from_json, all_pages, page_size, work_request_id
@work_request_group.command(name=cli_util.override('fleet_software_update.list_work_requests.command_name', 'list'), help=u"""Lists the work requests in a compartment. \n[Command Reference](listWorkRequests)""")
@cli_util.option('--compartment-id', required=True, help=u"""The ID of the compartment in which to list resources.""")
@cli_util.option('--work-request-id', help=u"""The ID of the asynchronous work request.""")
-@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), help=u"""A filter to return only resources whose lifecycleState matches the given OperationStatus.""")
+@cli_util.option('--status', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED", "NEEDS_ATTENTION"]), help=u"""A filter to return only resources whose lifecycleState matches the given OperationStatus.""")
@cli_util.option('--resource-id', help=u"""The ID of the resource affected by the work request.""")
@cli_util.option('--page', help=u"""A token representing the position at which to start retrieving results. This must come from the `opc-next-page` header field of a previous response.""")
@cli_util.option('--limit', type=click.INT, help=u"""The maximum number of items to return.""")
@@ -2882,7 +2882,7 @@ def list_work_requests(ctx, from_json, all_pages, page_size, compartment_id, wor
@cli_util.option('--fsu-collection-id', required=True, help=u"""Unique Exadata Fleet Update Collection identifier.""")
@cli_util.option('--removal-strategy', required=True, type=custom_types.CliCaseInsensitiveChoice(["TARGET_IDS"]), help=u"""Strategy to follow for removal of targets: TARGET_IDS: Remove a list of targets""")
@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.""")
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({})
@@ -2944,7 +2944,7 @@ def remove_fsu_collection_targets(ctx, from_json, wait_for_state, max_wait_secon
@cli_util.option('--targets', required=True, type=custom_types.CLI_COMPLEX_TYPE, help=u"""List of target entries to remove from the Exadata Fleet Update Collection.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'targets': {'module': 'fleet_software_update', 'class': 'list[TargetEntry]'}})
@@ -3065,7 +3065,7 @@ def retry_fsu_job(ctx, from_json, fsu_job_id, if_match):
@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)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -3143,7 +3143,7 @@ def update_fsu_action(ctx, from_json, force, wait_for_state, max_wait_seconds, w
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'UpdateScheduleDetails'}})
@@ -3225,7 +3225,7 @@ def update_fsu_action_update_stage_action_details(ctx, from_json, force, wait_fo
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'UpdateScheduleDetails'}})
@@ -3307,7 +3307,7 @@ def update_fsu_action_update_apply_action_details(ctx, from_json, force, wait_fo
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'UpdateScheduleDetails'}})
@@ -3389,7 +3389,7 @@ def update_fsu_action_update_rollback_action_details(ctx, from_json, force, wait
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'UpdateScheduleDetails'}})
@@ -3471,7 +3471,7 @@ def update_fsu_action_update_precheck_action_details(ctx, from_json, force, wait
@cli_util.option('--schedule-details', type=custom_types.CLI_COMPLEX_TYPE, help=u"""""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'schedule-details': {'module': 'fleet_software_update', 'class': 'UpdateScheduleDetails'}})
@@ -3552,7 +3552,7 @@ def update_fsu_action_update_cleanup_action_details(ctx, from_json, force, wait_
@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)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -3632,7 +3632,7 @@ def update_fsu_collection(ctx, from_json, force, wait_for_state, max_wait_second
@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)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'batching-strategy': {'module': 'fleet_software_update', 'class': 'UpdateBatchingStrategyDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -3725,7 +3725,7 @@ def update_fsu_cycle(ctx, from_json, force, wait_for_state, max_wait_seconds, wa
@cli_util.option('--is-keep-placement', type=click.BOOL, help=u"""Ensure that services of administrator-managed Oracle RAC or Oracle RAC One databases are running on the same instances before and after the move operation.""")
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'batching-strategy': {'module': 'fleet_software_update', 'class': 'UpdateBatchingStrategyDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}, 'is-ignore-missing-patches': {'module': 'fleet_software_update', 'class': 'list[string]'}})
@@ -3829,7 +3829,7 @@ def update_fsu_cycle_update_patch_fsu_cycle(ctx, from_json, force, wait_for_stat
@cli_util.option('--goal-version-details-home-policy', type=custom_types.CliCaseInsensitiveChoice(["CREATE_NEW", "USE_EXISTING"]), help=u"""Goal home policy to use when Staging the Goal Version during patching. CREATE_NEW: Create a new DBHome (for Database Collections) for the specified image or version. USE_EXISTING: All database targets in the same VMCluster or CloudVmCluster will be moved to a shared database home. If an existing home for the selected image or version is not found in the VM Cluster for a target database, then a new home will be created. If more than one existing home for the selected image is found, then the home with the least number of databases will be used. If multiple homes have the least number of databases, then a home will be selected at random.""")
@cli_util.option('--goal-version-details-new-home-prefix', help=u"""Prefix name used for new DB home resources created as part of the Stage Action. Format: _ If not specified, a default OCI DB home resource will be generated for the new DB home resources created.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'batching-strategy': {'module': 'fleet_software_update', 'class': 'UpdateBatchingStrategyDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -3926,7 +3926,7 @@ def update_fsu_cycle_version_fsu_target_details(ctx, from_json, force, wait_for_
@cli_util.option('--goal-version-details-home-policy', type=custom_types.CliCaseInsensitiveChoice(["CREATE_NEW", "USE_EXISTING"]), help=u"""Goal home policy to use when Staging the Goal Version during patching. CREATE_NEW: Create a new DBHome (for Database Collections) for the specified image or version. USE_EXISTING: All database targets in the same VMCluster or CloudVmCluster will be moved to a shared database home. If an existing home for the selected image or version is not found in the VM Cluster for a target database, then a new home will be created. If more than one existing home for the selected image is found, then the home with the least number of databases will be used. If multiple homes have the least number of databases, then a home will be selected at random.""")
@cli_util.option('--goal-version-details-new-home-prefix', help=u"""Prefix name used for new DB home resources created as part of the Stage Action. Format: _ If not specified, a default OCI DB home resource will be generated for the new DB home resources created.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'batching-strategy': {'module': 'fleet_software_update', 'class': 'UpdateBatchingStrategyDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -4021,7 +4021,7 @@ def update_fsu_cycle_image_id_fsu_target_details(ctx, from_json, force, wait_for
@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.""")
@cli_util.option('--batching-strategy-is-force-rolling', type=click.BOOL, help=u"""True to force rolling patching.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -4111,7 +4111,7 @@ def update_fsu_cycle_update_sequential_batching_strategy_details(ctx, from_json,
@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)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -4200,7 +4200,7 @@ def update_fsu_cycle_update_non_rolling_batching_strategy_details(ctx, from_json
@cli_util.option('--batching-strategy-percentage', type=click.INT, help=u"""Percentage of availability in the service during the Patch operation.""")
@cli_util.option('--batching-strategy-is-force-rolling', type=click.BOOL, help=u"""True to force rolling patching.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -4295,7 +4295,7 @@ def update_fsu_cycle_update_service_availability_factor_batching_strategy_detail
@cli_util.option('--batching-strategy-is-wait-for-batch-resume', type=click.BOOL, help=u"""True to wait for customer to resume the Apply Action once the first half is done. False to automatically patch the second half.""")
@cli_util.option('--batching-strategy-is-force-rolling', type=click.BOOL, help=u"""True to force rolling patching.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
@@ -4388,7 +4388,7 @@ def update_fsu_cycle_update_fifty_fifty_batching_strategy_details(ctx, from_json
@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)
@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.""")
@cli_util.option('--force', help="""Perform update without prompting for confirmation.""", is_flag=True)
-@cli_util.option('--wait-for-state', type=custom_types.CliCaseInsensitiveChoice(["ACCEPTED", "IN_PROGRESS", "WAITING", "FAILED", "SUCCEEDED", "CANCELING", "CANCELED"]), 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.""")
+@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.""")
@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.""")
@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.""")
@json_skeleton_utils.get_cli_json_input_option({'goal-version-details': {'module': 'fleet_software_update', 'class': 'FsuGoalVersionDetails'}, 'diagnostics-collection': {'module': 'fleet_software_update', 'class': 'DiagnosticsCollectionDetails'}, 'freeform-tags': {'module': 'fleet_software_update', 'class': 'dict(str, string)'}, 'defined-tags': {'module': 'fleet_software_update', 'class': 'dict(str, dict(str, object))'}})
diff --git a/services/generative_ai/src/oci_cli_generative_ai/generated/generativeai_cli.py b/services/generative_ai/src/oci_cli_generative_ai/generated/generativeai_cli.py
index 81f331ec..a3b56e31 100644
--- a/services/generative_ai/src/oci_cli_generative_ai/generated/generativeai_cli.py
+++ b/services/generative_ai/src/oci_cli_generative_ai/generated/generativeai_cli.py
@@ -281,7 +281,7 @@ def create_dedicated_ai_cluster(ctx, from_json, wait_for_state, max_wait_seconds
The header contains an opc-work-request-id, which is the id for the WorkRequest that tracks the endpoint creation progress. \n[Command Reference](createEndpoint)""")
@cli_util.option('--compartment-id', required=True, help=u"""The compartment OCID to create the endpoint in.""")
-@cli_util.option('--model-id', required=True, help=u"""The ID of the model that's used to create this endpoint.""")
+@cli_util.option('--model-id', required=True, help=u"""The OCID of the model that's used to create this endpoint.""")
@cli_util.option('--dedicated-ai-cluster-id', required=True, help=u"""The OCID of the dedicated AI cluster on which a model will be deployed to.""")
@cli_util.option('--display-name', help=u"""A user-friendly name. Does not have to be unique, and it's changeable.""")
@cli_util.option('--description', help=u"""An optional description of the endpoint.""")
diff --git a/services/lockbox/src/oci_cli_lockbox/generated/lockbox_cli.py b/services/lockbox/src/oci_cli_lockbox/generated/lockbox_cli.py
index 9f20bb08..66a50d99 100644
--- a/services/lockbox/src/oci_cli_lockbox/generated/lockbox_cli.py
+++ b/services/lockbox/src/oci_cli_lockbox/generated/lockbox_cli.py
@@ -197,6 +197,7 @@ def change_lockbox_compartment(ctx, from_json, lockbox_id, compartment_id, if_ma
@cli_util.option('--access-duration', required=True, help=u"""The maximum amount of time operator has access to associated resources.""")
@cli_util.option('--display-name', help=u"""The name of the access request.""")
@cli_util.option('--context', type=custom_types.CLI_COMPLEX_TYPE, help=u"""The context object containing the access request specific details.""" + custom_types.cli_complex_type.COMPLEX_TYPE_HELP)
+@cli_util.option('--ticket-number', help=u"""The ticket number raised by external customers Example: `3-37509643121`""")
@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.""")
@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.""")
@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.""")
@@ -205,7 +206,7 @@ def change_lockbox_compartment(ctx, from_json, lockbox_id, compartment_id, if_ma
@click.pass_context
@json_skeleton_utils.json_skeleton_generation_handler(input_params_to_complex_types={'context': {'module': 'lockbox', 'class': 'dict(str, string)'}}, output_type={'module': 'lockbox', 'class': 'AccessRequest'})
@cli_util.wrap_exceptions
-def create_access_request(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, lockbox_id, description, access_duration, display_name, context):
+def create_access_request(ctx, from_json, wait_for_state, max_wait_seconds, wait_interval_seconds, lockbox_id, description, access_duration, display_name, context, ticket_number):
kwargs = {}
kwargs['opc_request_id'] = cli_util.use_or_generate_request_id(ctx.obj['request_id'])
@@ -221,6 +222,9 @@ def create_access_request(ctx, from_json, wait_for_state, max_wait_seconds, wait
if context is not None:
_details['context'] = cli_util.parse_json_parameter("context", context)
+ if ticket_number is not None:
+ _details['ticketNumber'] = ticket_number
+
client = cli_util.build_client('lockbox', 'lockbox', ctx)
result = client.create_access_request(
create_access_request_details=_details,
diff --git a/setup.py b/setup.py
index e132bd1a..290bd986 100644
--- a/setup.py
+++ b/setup.py
@@ -30,7 +30,7 @@ def open_relative(*path):
readme = f.read()
requires = [
- 'oci==2.133.0',
+ 'oci==2.134.0',
'arrow>=1.0.0',
'certifi',
'click==8.0.4',
diff --git a/src/oci_cli/version.py b/src/oci_cli/version.py
index 96a1f230..b43cf4ca 100644
--- a/src/oci_cli/version.py
+++ b/src/oci_cli/version.py
@@ -2,4 +2,4 @@
# Copyright (c) 2016, 2021, 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__ = '3.47.0'
+__version__ = '3.48.0'