From e404a2c2c7475c195ba51e6a7deaa4b9457d5597 Mon Sep 17 00:00:00 2001 From: OCI DEX Release Bot Automation Date: Tue, 10 Dec 2024 07:06:39 +0000 Subject: [PATCH] Releasing version 2.140.0 Co-authored-by: Harsh Kumar --- CHANGELOG.rst | 20 + SECURITY.md | 38 + docs/api/ai_language.rst | 3 + ..._language.models.HealthNluModelDetails.rst | 11 + .../oci.ai_language.models.MetaInfo.rst | 11 + ...dels.PreTrainedTranslationModelDetails.rst | 11 + docs/api/core.rst | 5 + ...e.models.LaunchInstanceLicensingConfig.rst | 11 + ...s.LaunchInstanceWindowsLicensingConfig.rst | 11 + .../oci.core.models.LicensingConfig.rst | 11 + ...e.models.UpdateInstanceLicensingConfig.rst | 11 + ...s.UpdateInstanceWindowsLicensingConfig.rst | 11 + docs/api/database.rst | 2 + ...sContainerDatabaseEncryptionKeyDetails.rst | 11 + ...AutonomousDatabaseEncryptionKeyDetails.rst | 11 + docs/api/disaster_recovery.rst | 4 + ...ery.models.RefreshDrPlanDefaultDetails.rst | 11 + ...r_recovery.models.RefreshDrPlanDetails.rst | 11 + ...very.models.VerifyDrPlanDefaultDetails.rst | 11 + ...er_recovery.models.VerifyDrPlanDetails.rst | 11 + docs/api/fleet_software_update.rst | 6 + ....CreateRollbackCycleApplyActionDetails.rst | 11 + ...ware_update.models.RollbackCycleAction.rst | 11 + ...date.models.RollbackCycleActionSummary.rst | 11 + ...ware_update.models.RollbackCycleFsuJob.rst | 11 + ...date.models.RollbackCycleFsuJobSummary.rst | 11 + ...odels.UpdateRollbackCycleActionDetails.rst | 11 + docs/api/visual_builder.rst | 6 +- ...builder.models.NetworkEndpointDetails.rst} | 6 +- ...builder.models.PrivateEndpointDetails.rst} | 6 +- ...er.models.UpdateNetworkEndpointDetails.rst | 11 + ...er.models.UpdatePrivateEndpointDetails.rst | 11 + examples/showoci/CHANGELOG.rst | 12 + examples/showoci/showoci.py | 2 +- examples/showoci/showoci_data.py | 159 ++-- examples/showoci/showoci_output.py | 777 +++++++++------- examples/showoci/showoci_service.py | 877 ++++++++++-------- src/oci/ai_language/models/__init__.py | 6 + .../batch_detect_dominant_language_details.py | 31 + .../batch_detect_health_entity_details.py | 31 + .../batch_detect_language_entities_details.py | 31 + ...tch_detect_language_key_phrases_details.py | 31 + ...ch_detect_language_pii_entities_details.py | 31 + ...atch_detect_language_sentiments_details.py | 31 + ...ct_language_text_classification_details.py | 31 + .../batch_language_translation_details.py | 93 ++ .../models/create_endpoint_details.py | 78 ++ src/oci/ai_language/models/endpoint.py | 78 ++ .../ai_language/models/endpoint_summary.py | 78 ++ .../models/health_nlu_model_details.py | 91 ++ .../ai_language/models/hierarchical_entity.py | 27 + src/oci/ai_language/models/meta_info.py | 196 ++++ src/oci/ai_language/models/model_details.py | 58 +- .../named_entity_recognition_model_details.py | 2 +- src/oci/ai_language/models/pii_entity_mask.py | 14 + .../ai_language/models/pii_entity_masking.py | 66 +- .../ai_language/models/pii_entity_remove.py | 18 +- .../ai_language/models/pii_entity_replace.py | 14 + .../ai_language/models/pii_model_details.py | 2 +- .../pre_trained_health_nlu_model_details.py | 2 +- ...ned_key_phrase_extraction_model_details.py | 2 +- ...rained_language_detection_model_details.py | 2 +- ..._named_entity_recognition_model_details.py | 2 +- .../models/pre_trained_pii_model_details.py | 2 +- ...rained_sentiment_analysis_model_details.py | 2 +- .../models/pre_trained_summarization.py | 2 +- ...ained_text_classification_model_details.py | 2 +- .../pre_trained_translation_model_details.py | 91 ++ .../models/pre_trained_universal_model.py | 2 +- .../text_classification_model_details.py | 2 +- .../models/update_endpoint_details.py | 31 + ...load_identity_resource_principal_signer.py | 17 +- src/oci/core/models/__init__.py | 10 + src/oci/core/models/instance.py | 35 +- ...e_configuration_launch_instance_details.py | 35 +- .../core/models/launch_instance_details.py | 35 +- .../launch_instance_licensing_config.py | 152 +++ ...aunch_instance_windows_licensing_config.py | 59 ++ src/oci/core/models/licensing_config.py | 166 ++++ .../core/models/update_instance_details.py | 35 +- .../update_instance_licensing_config.py | 152 +++ ...pdate_instance_windows_licensing_config.py | 59 ++ src/oci/data_flow/data_flow_client.py | 102 ++ .../data_flow_client_composite_operations.py | 39 + src/oci/data_flow/models/application.py | 10 +- .../data_flow/models/application_summary.py | 10 +- src/oci/database/database_client.py | 16 +- src/oci/database/models/__init__.py | 4 + ...ntainer_database_encryption_key_details.py | 76 ++ ...onomous_database_encryption_key_details.py | 76 ++ .../disaster_recovery_client.py | 262 +++++- ...er_recovery_client_composite_operations.py | 88 ++ src/oci/disaster_recovery/models/__init__.py | 8 + .../models/create_dr_plan_details.py | 35 + src/oci/disaster_recovery/models/dr_plan.py | 92 ++ .../disaster_recovery/models/dr_plan_group.py | 55 ++ .../disaster_recovery/models/dr_plan_step.py | 51 + .../models/dr_plan_summary.py | 59 ++ .../models/refresh_dr_plan_default_details.py | 51 + .../models/refresh_dr_plan_details.py | 101 ++ .../models/verify_dr_plan_default_details.py | 51 + .../models/verify_dr_plan_details.py | 101 ++ .../disaster_recovery/models/work_request.py | 14 +- .../models/work_request_summary.py | 14 +- .../fleet_software_update_client.py | 4 +- .../fleet_software_update/models/__init__.py | 12 + .../models/apply_action.py | 2 +- .../models/apply_action_summary.py | 2 +- .../models/apply_fsu_job.py | 2 +- .../models/apply_fsu_job_summary.py | 2 +- .../models/cleanup_action.py | 2 +- .../models/cleanup_action_summary.py | 2 +- .../models/cleanup_fsu_job.py | 2 +- .../models/cleanup_fsu_job_summary.py | 2 +- .../models/create_apply_action_details.py | 2 +- .../models/create_cleanup_action_details.py | 2 +- .../models/create_fsu_action_details.py | 14 +- .../models/create_precheck_action_details.py | 2 +- .../models/create_rollback_action_details.py | 2 +- ...ate_rollback_cycle_apply_action_details.py | 111 +++ .../models/create_stage_action_details.py | 2 +- .../models/db_collection.py | 7 + .../models/db_fsu_collection_summary.py | 7 + .../models/fsu_action.py | 14 +- .../models/fsu_action_summary.py | 14 +- .../models/fsu_collection.py | 35 + .../models/fsu_collection_summary.py | 35 + .../fleet_software_update/models/fsu_cycle.py | 108 ++- .../models/fsu_cycle_summary.py | 104 ++- .../fleet_software_update/models/fsu_job.py | 14 +- .../models/fsu_job_summary.py | 14 +- .../models/gi_collection.py | 7 + .../models/gi_fsu_collection_summary.py | 7 + .../models/next_action_to_execute_details.py | 10 +- .../models/patch_fsu_cycle.py | 17 +- .../models/precheck_action.py | 2 +- .../models/precheck_action_summary.py | 2 +- .../models/precheck_fsu_job.py | 2 +- .../models/precheck_fsu_job_summary.py | 2 +- .../models/rollback_action.py | 2 +- .../models/rollback_action_summary.py | 2 +- .../models/rollback_cycle_action.py | 226 +++++ .../models/rollback_cycle_action_summary.py | 225 +++++ .../models/rollback_cycle_fsu_job.py | 278 ++++++ .../models/rollback_cycle_fsu_job_summary.py | 251 +++++ .../models/rollback_fsu_job.py | 2 +- .../models/rollback_fsu_job_summary.py | 2 +- .../models/stage_action.py | 2 +- .../models/stage_action_summary.py | 2 +- .../models/stage_fsu_job.py | 2 +- .../models/stage_fsu_job_summary.py | 2 +- .../models/update_apply_action_details.py | 2 +- .../models/update_cleanup_action_details.py | 2 +- .../models/update_fsu_action_details.py | 14 +- .../models/update_precheck_action_details.py | 2 +- .../models/update_rollback_action_details.py | 2 +- .../update_rollback_cycle_action_details.py | 72 ++ .../models/update_stage_action_details.py | 2 +- .../models/work_request.py | 10 +- .../models/work_request_summary.py | 10 +- .../internal/multipart_object_assembler.py | 15 + src/oci/version.py | 2 +- src/oci/visual_builder/models/__init__.py | 12 +- .../models/attachment_details.py | 218 ----- .../models/create_vb_instance_details.py | 31 +- .../models/idcs_info_details.py | 198 ---- .../models/network_endpoint_details.py | 102 ++ .../models/private_endpoint_details.py | 144 +++ .../models/update_network_endpoint_details.py | 102 ++ .../models/update_private_endpoint_details.py | 113 +++ .../models/update_vb_instance_details.py | 31 +- src/oci/visual_builder/models/vb_instance.py | 89 +- .../models/vb_instance_summary.py | 31 +- src/oci/visual_builder/vb_instance_client.py | 116 +++ ...vb_instance_client_composite_operations.py | 39 + 175 files changed, 6888 insertions(+), 1450 deletions(-) create mode 100644 SECURITY.md create mode 100644 docs/api/ai_language/models/oci.ai_language.models.HealthNluModelDetails.rst create mode 100644 docs/api/ai_language/models/oci.ai_language.models.MetaInfo.rst create mode 100644 docs/api/ai_language/models/oci.ai_language.models.PreTrainedTranslationModelDetails.rst create mode 100644 docs/api/core/models/oci.core.models.LaunchInstanceLicensingConfig.rst create mode 100644 docs/api/core/models/oci.core.models.LaunchInstanceWindowsLicensingConfig.rst create mode 100644 docs/api/core/models/oci.core.models.LicensingConfig.rst create mode 100644 docs/api/core/models/oci.core.models.UpdateInstanceLicensingConfig.rst create mode 100644 docs/api/core/models/oci.core.models.UpdateInstanceWindowsLicensingConfig.rst create mode 100644 docs/api/database/models/oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails.rst create mode 100644 docs/api/database/models/oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails.rst create mode 100644 docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDefaultDetails.rst create mode 100644 docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDetails.rst create mode 100644 docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDefaultDetails.rst create mode 100644 docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDetails.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleAction.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleActionSummary.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJob.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJobSummary.rst create mode 100644 docs/api/fleet_software_update/models/oci.fleet_software_update.models.UpdateRollbackCycleActionDetails.rst rename docs/api/visual_builder/models/{oci.visual_builder.models.AttachmentDetails.rst => oci.visual_builder.models.NetworkEndpointDetails.rst} (65%) rename docs/api/visual_builder/models/{oci.visual_builder.models.IdcsInfoDetails.rst => oci.visual_builder.models.PrivateEndpointDetails.rst} (65%) create mode 100644 docs/api/visual_builder/models/oci.visual_builder.models.UpdateNetworkEndpointDetails.rst create mode 100644 docs/api/visual_builder/models/oci.visual_builder.models.UpdatePrivateEndpointDetails.rst create mode 100644 src/oci/ai_language/models/health_nlu_model_details.py create mode 100644 src/oci/ai_language/models/meta_info.py create mode 100644 src/oci/ai_language/models/pre_trained_translation_model_details.py create mode 100644 src/oci/core/models/launch_instance_licensing_config.py create mode 100644 src/oci/core/models/launch_instance_windows_licensing_config.py create mode 100644 src/oci/core/models/licensing_config.py create mode 100644 src/oci/core/models/update_instance_licensing_config.py create mode 100644 src/oci/core/models/update_instance_windows_licensing_config.py create mode 100644 src/oci/database/models/rotate_autonomous_container_database_encryption_key_details.py create mode 100644 src/oci/database/models/rotate_autonomous_database_encryption_key_details.py create mode 100644 src/oci/disaster_recovery/models/refresh_dr_plan_default_details.py create mode 100644 src/oci/disaster_recovery/models/refresh_dr_plan_details.py create mode 100644 src/oci/disaster_recovery/models/verify_dr_plan_default_details.py create mode 100644 src/oci/disaster_recovery/models/verify_dr_plan_details.py create mode 100644 src/oci/fleet_software_update/models/create_rollback_cycle_apply_action_details.py create mode 100644 src/oci/fleet_software_update/models/rollback_cycle_action.py create mode 100644 src/oci/fleet_software_update/models/rollback_cycle_action_summary.py create mode 100644 src/oci/fleet_software_update/models/rollback_cycle_fsu_job.py create mode 100644 src/oci/fleet_software_update/models/rollback_cycle_fsu_job_summary.py create mode 100644 src/oci/fleet_software_update/models/update_rollback_cycle_action_details.py delete mode 100644 src/oci/visual_builder/models/attachment_details.py delete mode 100644 src/oci/visual_builder/models/idcs_info_details.py create mode 100644 src/oci/visual_builder/models/network_endpoint_details.py create mode 100644 src/oci/visual_builder/models/private_endpoint_details.py create mode 100644 src/oci/visual_builder/models/update_network_endpoint_details.py create mode 100644 src/oci/visual_builder/models/update_private_endpoint_details.py diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 77a8825280..2f1470b087 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -3,6 +3,26 @@ Change Log All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +==================== +2.140.0 - 2024-12-10 +==================== + +Added +----- +* Support for Bring Your Own Key (BYOK) in the Database service +* Support for refreshing disaster recovery plans in the Disaster Recovery service +* Support for private access to service instances in the Visual Builder service +* Support for exadata fleet update and rollback maintenance cycle in the Fleet Application Management service +* Support for Bring Your Own License (BYOL) for windows virtual machines in the Compute service +* Support for cascading deletion of applications and runs in the Data Flow service +* Support for on-demand translation and auto language detection during file translation in the AI Language service +* Support for alias for endpoints in custom model flow and custom anonymization in the AI Language service + +Breaking +-------- +* Models `IdcsInfoDetails` and `AttachmentDetails` were removed from the Visual Builder service +* Parameters `idcs_info` and `attachments` were removed from the model `VbInstance` in the Visual Builder service + ==================== 2.139.0 - 2024-11-19 ==================== diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..2ca81027ff --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,38 @@ +# Reporting security vulnerabilities + +Oracle values the independent security research community and believes that +responsible disclosure of security vulnerabilities helps us ensure the security +and privacy of all our users. + +Please do NOT raise a GitHub Issue to report a security vulnerability. If you +believe you have found a security vulnerability, please submit a report to +[secalert_us@oracle.com][1] preferably with a proof of concept. Please review +some additional information on [how to report security vulnerabilities to Oracle][2]. +We encourage people who contact Oracle Security to use email encryption using +[our encryption key][3]. + +We ask that you do not use other channels or contact the project maintainers +directly. + +Non-vulnerability related security issues including ideas for new or improved +security features are welcome on GitHub Issues. + +## Security updates, alerts and bulletins + +Security updates will be released on a regular cadence. Many of our projects +will typically release security fixes in conjunction with the +Oracle Critical Patch Update program. Additional +information, including past advisories, is available on our [security alerts][4] +page. + +## Security-related information + +We will provide security related information such as a threat model, considerations +for secure use, or any known security issues in our documentation. Please note +that labs and sample code are intended to demonstrate a concept and may not be +sufficiently hardened for production use. + +[1]: mailto:secalert_us@oracle.com +[2]: https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html +[3]: https://www.oracle.com/security-alerts/encryptionkey.html +[4]: https://www.oracle.com/security-alerts/ diff --git a/docs/api/ai_language.rst b/docs/api/ai_language.rst index 5751106daa..69225cd40f 100644 --- a/docs/api/ai_language.rst +++ b/docs/api/ai_language.rst @@ -81,6 +81,7 @@ Ai Language oci.ai_language.models.EvaluationResults oci.ai_language.models.HealthEntity oci.ai_language.models.HealthEntityDocumentResult + oci.ai_language.models.HealthNluModelDetails oci.ai_language.models.HierarchicalEntity oci.ai_language.models.InputConfiguration oci.ai_language.models.InputLocation @@ -92,6 +93,7 @@ Ai Language oci.ai_language.models.LocationDetails oci.ai_language.models.MelConcept oci.ai_language.models.MelConceptDetails + oci.ai_language.models.MetaInfo oci.ai_language.models.Model oci.ai_language.models.ModelCollection oci.ai_language.models.ModelDetails @@ -123,6 +125,7 @@ Ai Language oci.ai_language.models.PreTrainedSentimentAnalysisModelDetails oci.ai_language.models.PreTrainedSummarization oci.ai_language.models.PreTrainedTextClassificationModelDetails + oci.ai_language.models.PreTrainedTranslationModelDetails oci.ai_language.models.PreTrainedUniversalModel oci.ai_language.models.Profile oci.ai_language.models.Project diff --git a/docs/api/ai_language/models/oci.ai_language.models.HealthNluModelDetails.rst b/docs/api/ai_language/models/oci.ai_language.models.HealthNluModelDetails.rst new file mode 100644 index 0000000000..491c5eacb0 --- /dev/null +++ b/docs/api/ai_language/models/oci.ai_language.models.HealthNluModelDetails.rst @@ -0,0 +1,11 @@ +HealthNluModelDetails +===================== + +.. currentmodule:: oci.ai_language.models + +.. autoclass:: HealthNluModelDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/ai_language/models/oci.ai_language.models.MetaInfo.rst b/docs/api/ai_language/models/oci.ai_language.models.MetaInfo.rst new file mode 100644 index 0000000000..bc9c2d87aa --- /dev/null +++ b/docs/api/ai_language/models/oci.ai_language.models.MetaInfo.rst @@ -0,0 +1,11 @@ +MetaInfo +======== + +.. currentmodule:: oci.ai_language.models + +.. autoclass:: MetaInfo + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/ai_language/models/oci.ai_language.models.PreTrainedTranslationModelDetails.rst b/docs/api/ai_language/models/oci.ai_language.models.PreTrainedTranslationModelDetails.rst new file mode 100644 index 0000000000..d087d17462 --- /dev/null +++ b/docs/api/ai_language/models/oci.ai_language.models.PreTrainedTranslationModelDetails.rst @@ -0,0 +1,11 @@ +PreTrainedTranslationModelDetails +================================= + +.. currentmodule:: oci.ai_language.models + +.. autoclass:: PreTrainedTranslationModelDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/core.rst b/docs/api/core.rst index c3b357c1af..e4b5016921 100644 --- a/docs/api/core.rst +++ b/docs/api/core.rst @@ -423,10 +423,13 @@ Core Services oci.core.models.LaunchInstanceAgentConfigDetails oci.core.models.LaunchInstanceAvailabilityConfigDetails oci.core.models.LaunchInstanceDetails + oci.core.models.LaunchInstanceLicensingConfig oci.core.models.LaunchInstancePlatformConfig oci.core.models.LaunchInstanceShapeConfigDetails + oci.core.models.LaunchInstanceWindowsLicensingConfig oci.core.models.LaunchOptions oci.core.models.LetterOfAuthority + oci.core.models.LicensingConfig oci.core.models.ListIpInventoryDetails oci.core.models.LocalPeeringGateway oci.core.models.LoopBackDrgAttachmentNetworkDetails @@ -550,6 +553,7 @@ Core Services oci.core.models.UpdateInstanceConfigurationDetails oci.core.models.UpdateInstanceConsoleConnectionDetails oci.core.models.UpdateInstanceDetails + oci.core.models.UpdateInstanceLicensingConfig oci.core.models.UpdateInstanceMaintenanceEventDetails oci.core.models.UpdateInstancePlatformConfig oci.core.models.UpdateInstancePoolDetails @@ -558,6 +562,7 @@ Core Services oci.core.models.UpdateInstanceSourceDetails oci.core.models.UpdateInstanceSourceViaBootVolumeDetails oci.core.models.UpdateInstanceSourceViaImageDetails + oci.core.models.UpdateInstanceWindowsLicensingConfig oci.core.models.UpdateInternetGatewayDetails oci.core.models.UpdateIpv6Details oci.core.models.UpdateLaunchOptions diff --git a/docs/api/core/models/oci.core.models.LaunchInstanceLicensingConfig.rst b/docs/api/core/models/oci.core.models.LaunchInstanceLicensingConfig.rst new file mode 100644 index 0000000000..eeb825f94f --- /dev/null +++ b/docs/api/core/models/oci.core.models.LaunchInstanceLicensingConfig.rst @@ -0,0 +1,11 @@ +LaunchInstanceLicensingConfig +============================= + +.. currentmodule:: oci.core.models + +.. autoclass:: LaunchInstanceLicensingConfig + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/core/models/oci.core.models.LaunchInstanceWindowsLicensingConfig.rst b/docs/api/core/models/oci.core.models.LaunchInstanceWindowsLicensingConfig.rst new file mode 100644 index 0000000000..b5fad3e4f9 --- /dev/null +++ b/docs/api/core/models/oci.core.models.LaunchInstanceWindowsLicensingConfig.rst @@ -0,0 +1,11 @@ +LaunchInstanceWindowsLicensingConfig +==================================== + +.. currentmodule:: oci.core.models + +.. autoclass:: LaunchInstanceWindowsLicensingConfig + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/core/models/oci.core.models.LicensingConfig.rst b/docs/api/core/models/oci.core.models.LicensingConfig.rst new file mode 100644 index 0000000000..49ac8c9593 --- /dev/null +++ b/docs/api/core/models/oci.core.models.LicensingConfig.rst @@ -0,0 +1,11 @@ +LicensingConfig +=============== + +.. currentmodule:: oci.core.models + +.. autoclass:: LicensingConfig + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/core/models/oci.core.models.UpdateInstanceLicensingConfig.rst b/docs/api/core/models/oci.core.models.UpdateInstanceLicensingConfig.rst new file mode 100644 index 0000000000..df9b1b84be --- /dev/null +++ b/docs/api/core/models/oci.core.models.UpdateInstanceLicensingConfig.rst @@ -0,0 +1,11 @@ +UpdateInstanceLicensingConfig +============================= + +.. currentmodule:: oci.core.models + +.. autoclass:: UpdateInstanceLicensingConfig + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/core/models/oci.core.models.UpdateInstanceWindowsLicensingConfig.rst b/docs/api/core/models/oci.core.models.UpdateInstanceWindowsLicensingConfig.rst new file mode 100644 index 0000000000..e7c47bf736 --- /dev/null +++ b/docs/api/core/models/oci.core.models.UpdateInstanceWindowsLicensingConfig.rst @@ -0,0 +1,11 @@ +UpdateInstanceWindowsLicensingConfig +==================================== + +.. currentmodule:: oci.core.models + +.. autoclass:: UpdateInstanceWindowsLicensingConfig + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/database.rst b/docs/api/database.rst index 0249828f4c..c14827d8e0 100644 --- a/docs/api/database.rst +++ b/docs/api/database.rst @@ -388,6 +388,8 @@ Database oci.database.models.ResourcePoolSummary oci.database.models.RestoreAutonomousDatabaseDetails oci.database.models.RestoreDatabaseDetails + oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails + oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails oci.database.models.RotateAutonomousVmClusterOrdsCertsDetails oci.database.models.RotateAutonomousVmClusterSslCertsDetails oci.database.models.RotateCloudAutonomousVmClusterOrdsCertsDetails diff --git a/docs/api/database/models/oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails.rst b/docs/api/database/models/oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails.rst new file mode 100644 index 0000000000..a1ca09d860 --- /dev/null +++ b/docs/api/database/models/oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails.rst @@ -0,0 +1,11 @@ +RotateAutonomousContainerDatabaseEncryptionKeyDetails +===================================================== + +.. currentmodule:: oci.database.models + +.. autoclass:: RotateAutonomousContainerDatabaseEncryptionKeyDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/database/models/oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails.rst b/docs/api/database/models/oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails.rst new file mode 100644 index 0000000000..922e314153 --- /dev/null +++ b/docs/api/database/models/oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails.rst @@ -0,0 +1,11 @@ +RotateAutonomousDatabaseEncryptionKeyDetails +============================================ + +.. currentmodule:: oci.database.models + +.. autoclass:: RotateAutonomousDatabaseEncryptionKeyDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/disaster_recovery.rst b/docs/api/disaster_recovery.rst index 3665b2021b..b271eaf8fb 100644 --- a/docs/api/disaster_recovery.rst +++ b/docs/api/disaster_recovery.rst @@ -104,6 +104,8 @@ Disaster Recovery oci.disaster_recovery.models.ObjectStorageScriptLocation oci.disaster_recovery.models.ObjectStoreScriptPrecheckStep oci.disaster_recovery.models.PauseDrPlanExecutionDetails + oci.disaster_recovery.models.RefreshDrPlanDefaultDetails + oci.disaster_recovery.models.RefreshDrPlanDetails oci.disaster_recovery.models.ResumeDrPlanExecutionDetails oci.disaster_recovery.models.RetryDrPlanExecutionDetails oci.disaster_recovery.models.RunLocalScriptUserDefinedStep @@ -154,6 +156,8 @@ Disaster Recovery oci.disaster_recovery.models.UpdateObjectStoreScriptPrecheckStepDetails oci.disaster_recovery.models.UpdateRunLocalScriptUserDefinedStepDetails oci.disaster_recovery.models.UpdateRunObjectStoreScriptUserDefinedStepDetails + oci.disaster_recovery.models.VerifyDrPlanDefaultDetails + oci.disaster_recovery.models.VerifyDrPlanDetails oci.disaster_recovery.models.WorkRequest oci.disaster_recovery.models.WorkRequestError oci.disaster_recovery.models.WorkRequestErrorCollection diff --git a/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDefaultDetails.rst b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDefaultDetails.rst new file mode 100644 index 0000000000..19cc2dd152 --- /dev/null +++ b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDefaultDetails.rst @@ -0,0 +1,11 @@ +RefreshDrPlanDefaultDetails +=========================== + +.. currentmodule:: oci.disaster_recovery.models + +.. autoclass:: RefreshDrPlanDefaultDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDetails.rst b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDetails.rst new file mode 100644 index 0000000000..89cbd60d2c --- /dev/null +++ b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.RefreshDrPlanDetails.rst @@ -0,0 +1,11 @@ +RefreshDrPlanDetails +==================== + +.. currentmodule:: oci.disaster_recovery.models + +.. autoclass:: RefreshDrPlanDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDefaultDetails.rst b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDefaultDetails.rst new file mode 100644 index 0000000000..b96ac81c7a --- /dev/null +++ b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDefaultDetails.rst @@ -0,0 +1,11 @@ +VerifyDrPlanDefaultDetails +========================== + +.. currentmodule:: oci.disaster_recovery.models + +.. autoclass:: VerifyDrPlanDefaultDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDetails.rst b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDetails.rst new file mode 100644 index 0000000000..ff42620848 --- /dev/null +++ b/docs/api/disaster_recovery/models/oci.disaster_recovery.models.VerifyDrPlanDetails.rst @@ -0,0 +1,11 @@ +VerifyDrPlanDetails +=================== + +.. currentmodule:: oci.disaster_recovery.models + +.. autoclass:: VerifyDrPlanDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update.rst b/docs/api/fleet_software_update.rst index da7c26a803..45c9a87753 100644 --- a/docs/api/fleet_software_update.rst +++ b/docs/api/fleet_software_update.rst @@ -49,6 +49,7 @@ Fleet Software Update oci.fleet_software_update.models.CreatePatchFsuCycle oci.fleet_software_update.models.CreatePrecheckActionDetails oci.fleet_software_update.models.CreateRollbackActionDetails + oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails oci.fleet_software_update.models.CreateScheduleDetails oci.fleet_software_update.models.CreateSequentialBatchingStrategyDetails oci.fleet_software_update.models.CreateServiceAvailabilityFactorBatchingStrategyDetails @@ -129,6 +130,10 @@ Fleet Software Update oci.fleet_software_update.models.RemoveFsuCollectionTargetsDetails oci.fleet_software_update.models.RollbackAction oci.fleet_software_update.models.RollbackActionSummary + oci.fleet_software_update.models.RollbackCycleAction + oci.fleet_software_update.models.RollbackCycleActionSummary + oci.fleet_software_update.models.RollbackCycleFsuJob + oci.fleet_software_update.models.RollbackCycleFsuJobSummary oci.fleet_software_update.models.RollbackDetails oci.fleet_software_update.models.RollbackFsuJob oci.fleet_software_update.models.RollbackFsuJobSummary @@ -159,6 +164,7 @@ Fleet Software Update oci.fleet_software_update.models.UpdatePatchFsuCycle oci.fleet_software_update.models.UpdatePrecheckActionDetails oci.fleet_software_update.models.UpdateRollbackActionDetails + oci.fleet_software_update.models.UpdateRollbackCycleActionDetails oci.fleet_software_update.models.UpdateScheduleDetails oci.fleet_software_update.models.UpdateSequentialBatchingStrategyDetails oci.fleet_software_update.models.UpdateServiceAvailabilityFactorBatchingStrategyDetails diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails.rst new file mode 100644 index 0000000000..5359898679 --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails.rst @@ -0,0 +1,11 @@ +CreateRollbackCycleApplyActionDetails +===================================== + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: CreateRollbackCycleApplyActionDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleAction.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleAction.rst new file mode 100644 index 0000000000..74ad9999da --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleAction.rst @@ -0,0 +1,11 @@ +RollbackCycleAction +=================== + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: RollbackCycleAction + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleActionSummary.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleActionSummary.rst new file mode 100644 index 0000000000..3d4e584ed6 --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleActionSummary.rst @@ -0,0 +1,11 @@ +RollbackCycleActionSummary +========================== + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: RollbackCycleActionSummary + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJob.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJob.rst new file mode 100644 index 0000000000..1ca5c9ae0b --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJob.rst @@ -0,0 +1,11 @@ +RollbackCycleFsuJob +=================== + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: RollbackCycleFsuJob + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJobSummary.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJobSummary.rst new file mode 100644 index 0000000000..f4944e4854 --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.RollbackCycleFsuJobSummary.rst @@ -0,0 +1,11 @@ +RollbackCycleFsuJobSummary +========================== + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: RollbackCycleFsuJobSummary + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/fleet_software_update/models/oci.fleet_software_update.models.UpdateRollbackCycleActionDetails.rst b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.UpdateRollbackCycleActionDetails.rst new file mode 100644 index 0000000000..9d6ba70f94 --- /dev/null +++ b/docs/api/fleet_software_update/models/oci.fleet_software_update.models.UpdateRollbackCycleActionDetails.rst @@ -0,0 +1,11 @@ +UpdateRollbackCycleActionDetails +================================ + +.. currentmodule:: oci.fleet_software_update.models + +.. autoclass:: UpdateRollbackCycleActionDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/visual_builder.rst b/docs/api/visual_builder.rst index 5c8792d371..0bd2da2677 100644 --- a/docs/api/visual_builder.rst +++ b/docs/api/visual_builder.rst @@ -20,14 +20,16 @@ Visual Builder oci.visual_builder.models.ApplicationSummary oci.visual_builder.models.ApplicationSummaryCollection - oci.visual_builder.models.AttachmentDetails oci.visual_builder.models.ChangeVbInstanceCompartmentDetails oci.visual_builder.models.CreateCustomEndpointDetails oci.visual_builder.models.CreateVbInstanceDetails oci.visual_builder.models.CustomEndpointDetails - oci.visual_builder.models.IdcsInfoDetails + oci.visual_builder.models.NetworkEndpointDetails + oci.visual_builder.models.PrivateEndpointDetails oci.visual_builder.models.RequestSummarizedApplicationsDetails oci.visual_builder.models.UpdateCustomEndpointDetails + oci.visual_builder.models.UpdateNetworkEndpointDetails + oci.visual_builder.models.UpdatePrivateEndpointDetails oci.visual_builder.models.UpdateVbInstanceDetails oci.visual_builder.models.VbInstance oci.visual_builder.models.VbInstanceSummary diff --git a/docs/api/visual_builder/models/oci.visual_builder.models.AttachmentDetails.rst b/docs/api/visual_builder/models/oci.visual_builder.models.NetworkEndpointDetails.rst similarity index 65% rename from docs/api/visual_builder/models/oci.visual_builder.models.AttachmentDetails.rst rename to docs/api/visual_builder/models/oci.visual_builder.models.NetworkEndpointDetails.rst index 5ac18b5d62..984e196597 100644 --- a/docs/api/visual_builder/models/oci.visual_builder.models.AttachmentDetails.rst +++ b/docs/api/visual_builder/models/oci.visual_builder.models.NetworkEndpointDetails.rst @@ -1,9 +1,9 @@ -AttachmentDetails -================= +NetworkEndpointDetails +====================== .. currentmodule:: oci.visual_builder.models -.. autoclass:: AttachmentDetails +.. autoclass:: NetworkEndpointDetails :show-inheritance: :special-members: __init__ :members: diff --git a/docs/api/visual_builder/models/oci.visual_builder.models.IdcsInfoDetails.rst b/docs/api/visual_builder/models/oci.visual_builder.models.PrivateEndpointDetails.rst similarity index 65% rename from docs/api/visual_builder/models/oci.visual_builder.models.IdcsInfoDetails.rst rename to docs/api/visual_builder/models/oci.visual_builder.models.PrivateEndpointDetails.rst index 92da89af2e..b5a1bfeca7 100644 --- a/docs/api/visual_builder/models/oci.visual_builder.models.IdcsInfoDetails.rst +++ b/docs/api/visual_builder/models/oci.visual_builder.models.PrivateEndpointDetails.rst @@ -1,9 +1,9 @@ -IdcsInfoDetails -=============== +PrivateEndpointDetails +====================== .. currentmodule:: oci.visual_builder.models -.. autoclass:: IdcsInfoDetails +.. autoclass:: PrivateEndpointDetails :show-inheritance: :special-members: __init__ :members: diff --git a/docs/api/visual_builder/models/oci.visual_builder.models.UpdateNetworkEndpointDetails.rst b/docs/api/visual_builder/models/oci.visual_builder.models.UpdateNetworkEndpointDetails.rst new file mode 100644 index 0000000000..ee79f1812b --- /dev/null +++ b/docs/api/visual_builder/models/oci.visual_builder.models.UpdateNetworkEndpointDetails.rst @@ -0,0 +1,11 @@ +UpdateNetworkEndpointDetails +============================ + +.. currentmodule:: oci.visual_builder.models + +.. autoclass:: UpdateNetworkEndpointDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/docs/api/visual_builder/models/oci.visual_builder.models.UpdatePrivateEndpointDetails.rst b/docs/api/visual_builder/models/oci.visual_builder.models.UpdatePrivateEndpointDetails.rst new file mode 100644 index 0000000000..ca527afd9a --- /dev/null +++ b/docs/api/visual_builder/models/oci.visual_builder.models.UpdatePrivateEndpointDetails.rst @@ -0,0 +1,11 @@ +UpdatePrivateEndpointDetails +============================ + +.. currentmodule:: oci.visual_builder.models + +.. autoclass:: UpdatePrivateEndpointDetails + :show-inheritance: + :special-members: __init__ + :members: + :undoc-members: + :inherited-members: \ No newline at end of file diff --git a/examples/showoci/CHANGELOG.rst b/examples/showoci/CHANGELOG.rst index fc8d09c791..3b97856ac4 100644 --- a/examples/showoci/CHANGELOG.rst +++ b/examples/showoci/CHANGELOG.rst @@ -4,6 +4,18 @@ All notable changes to this project will be documented in this file. The format is based on `Keep a Changelog `_. +===================== +24.12.10 - 24.12.10 +===================== +* Added Vnic information +* Added retry_strategy to vnic call +* Improve the code + +===================== +24.11.26 - 24.11.26 +===================== +* Added few more variables to databases and fixed the autobck flag + ===================== 24.11.12 - 24.11.12 ===================== diff --git a/examples/showoci/showoci.py b/examples/showoci/showoci.py index 62216b9003..29b1aac2e6 100644 --- a/examples/showoci/showoci.py +++ b/examples/showoci/showoci.py @@ -128,7 +128,7 @@ import os import time -version = "24.11.12" +version = "24.12.10" ########################################################################## # check OCI version diff --git a/examples/showoci/showoci_data.py b/examples/showoci/showoci_data.py index dc7844bdd8..a8c691e843 100644 --- a/examples/showoci/showoci_data.py +++ b/examples/showoci/showoci_data.py @@ -20,7 +20,7 @@ class ShowOCIData(object): - version = "24.11.12" + version = "24.12.10" ############################################ # ShowOCIService - Service object to query @@ -803,7 +803,6 @@ def __get_core_network_vcn_security_lists(self, vcn_id): ########################################################################## # Print Network vcn security groups ########################################################################## - def __get_core_network_vcn_security_groups(self, vcn_id): data = [] try: @@ -816,6 +815,7 @@ def __get_core_network_vcn_security_groups(self, vcn_id): 'compartment_path': nsg['compartment_path'], 'compartment_id': nsg['compartment_id'], 'sec_rules': [], + 'vnics': nsg['vnics'], 'time_created': nsg['time_created'], 'defined_tags': nsg['defined_tags'], 'freeform_tags': nsg['freeform_tags'] @@ -1238,6 +1238,19 @@ def __get_core_network_subnet_name(self, subnet_id): except Exception as e: self.__print_error(e) + ########################################################################## + # get Subnet Names + # 12/1/2024 - Keeping string to avoid breaking json + ########################################################################## + def __get_core_network_subnet_names(self, subnet_ids): + try: + ret_val = [] + for subnet in subnet_ids: + ret_val.append(self.__get_core_network_subnet_name(subnet)) + return ret_val + except Exception as e: + self.__print_error(e) + ########################################################################## # print network remote peering ########################################################################## @@ -1492,7 +1505,6 @@ def __get_core_block_volume_backup_policy(self, block_storage, volume_id): ########################################################################## # get Core Block boot volume ########################################################################## - def __get_core_block_volume_boot(self, bva, compartment_name): try: value = {} @@ -1889,6 +1901,7 @@ def __get_core_compute_instances(self, region_name, compartment): 'launch_remote_data_volume_type': instance['launch_remote_data_volume_type'], 'launch_is_pv_encryption_in_transit_enabled': instance['launch_is_pv_encryption_in_transit_enabled'], 'launch_is_consistent_volume_naming_enabled': instance['launch_is_consistent_volume_naming_enabled'], + 'are_legacy_imds_endpoints_disabled': instance['are_legacy_imds_endpoints_disabled'], 'platform_type': instance['platform_type'], 'platform_is_secure_boot_enabled': instance['platform_is_secure_boot_enabled'], 'platform_is_trusted_platform_module_enabled': instance['platform_is_trusted_platform_module_enabled'], @@ -1938,10 +1951,10 @@ def __get_core_compute_instances(self, region_name, compartment): comp_text = " (Compartment=" + vnic['compartment_name'] + ")" if 'vnic_details' in vnic: - if 'display_name' in vnic['vnic_details']: + if 'name' in vnic['vnic_details']: val = { 'id': vnic['vnic_id'], - 'desc': vnic['vnic_details']['display_name'] + str(comp_text), + 'desc': vnic['vnic_details']['name'] + str(comp_text), 'details': vnic['vnic_details'] } if vnic['vnic_details'] and 'internal_fqdn' in vnic['vnic_details']: @@ -1949,6 +1962,7 @@ def __get_core_compute_instances(self, region_name, compartment): fqdn = vnic['vnic_details']['internal_fqdn'] if 'ip_addresses' in vnic['vnic_details']: val['ip_addresses'] = vnic['vnic_details']['ip_addresses'] + vnicdata.append(val) inst['vnic'] = vnicdata @@ -2217,8 +2231,8 @@ def __get_database_db_nodes(self, db_nodes): 'software_storage_size_in_gb': db_node['software_storage_size_in_gb'], 'lifecycle_state': db_node['lifecycle_state'], 'hostname': db_node['hostname'], - 'nsg_names': nsg_names, 'nsg_ids': nsg_ids, + 'nsg_names': nsg_names, 'vnic_id': db_node['vnic_id'], 'backup_vnic_id': db_node['backup_vnic_id'], 'vnic_details': db_node['vnic_details'], @@ -2278,7 +2292,7 @@ def __get_database_db_nodes(self, db_nodes): return data ########################################################################## - # print database Databases + # __get_database_db_databases ########################################################################## def __get_database_db_databases(self, dbs): @@ -2287,36 +2301,46 @@ def __get_database_db_databases(self, dbs): for db in dbs: - backupstr = (" - AutoBck=N" if db['auto_backup_enabled'] else " - AutoBck=Y") + backupstr = (" - AutoBck=Y" if db['auto_backup_enabled'] else " - AutoBck=N") pdb_name = db['pdb_name'] + " - " if db['pdb_name'] else "" - value = {'name': (str(db['db_name']) + " - " + str(db['db_unique_name']) + " - " + - pdb_name + - str(db['db_workload']) + " - " + - str(db['character_set']) + " - " + - str(db['ncharacter_set']) + " - " + - str(db['lifecycle_state']) + backupstr), - 'backups': self.__get_database_db_backups(db['backups']) if 'backups' in db else [], - 'pdbs': self.__get_database_db_pdbs(db['pdbs']) if 'pdbs' in db else [], - 'time_created': db['time_created'], - 'defined_tags': db['defined_tags'], - 'dataguard': self.__get_database_db_dataguard(db['dataguard']), - 'freeform_tags': db['freeform_tags'], - 'db_name': db['db_name'], - 'pdb_name': pdb_name, - 'db_workload': db['db_workload'], - 'character_set': db['character_set'], - 'ncharacter_set': db['ncharacter_set'], - 'db_unique_name': db['db_unique_name'], - 'lifecycle_state': db['lifecycle_state'], - 'auto_backup_enabled': db['auto_backup_enabled'], - 'connection_strings_cdb': db['connection_strings_cdb'], - 'source_database_point_in_time_recovery_timestamp': db['source_database_point_in_time_recovery_timestamp'], - 'kms_key_id': db['kms_key_id'], - 'kms_key_name': self.__get_vault_key_name(db['kms_key_id']), - 'vault_id': db['vault_id'], - 'last_backup_timestamp': db['last_backup_timestamp'], - 'id': db['id'] - } + value = { + 'name': ( + str(db['db_name']) + " - " + str(db['db_unique_name']) + " - " + + pdb_name + + str(db['db_workload']) + " - " + + str(db['character_set']) + " - " + + str(db['ncharacter_set']) + " - " + + str(db['lifecycle_state']) + backupstr + ), + 'backups': self.__get_database_db_backups(db['backups']) if 'backups' in db else [], + 'pdbs': self.__get_database_db_pdbs(db['pdbs']) if 'pdbs' in db else [], + 'time_created': db['time_created'], + 'defined_tags': db['defined_tags'], + 'dataguard': self.__get_database_db_dataguard(db['dataguard']), + 'freeform_tags': db['freeform_tags'], + 'db_name': db['db_name'], + 'pdb_name': pdb_name, + 'db_workload': db['db_workload'], + 'character_set': db['character_set'], + 'ncharacter_set': db['ncharacter_set'], + 'db_unique_name': db['db_unique_name'], + 'lifecycle_state': db['lifecycle_state'], + 'auto_backup_enabled': db['auto_backup_enabled'], + 'connection_strings_cdb': db['connection_strings_cdb'], + 'source_database_point_in_time_recovery_timestamp': db['source_database_point_in_time_recovery_timestamp'], + 'kms_key_id': db['kms_key_id'], + 'kms_key_name': self.__get_vault_key_name(db['kms_key_id']), + 'vault_id': db['vault_id'], + 'last_backup_timestamp': db['last_backup_timestamp'], + 'id': db['id'], + # Added 11/15/2024 + 'kms_key_version_id': db['kms_key_version_id'], + 'key_store_id': db['key_store_id'], + 'key_store_wallet_name': db['key_store_wallet_name'], + 'last_failed_backup_timestamp': db['last_failed_backup_timestamp'], + 'last_backup_duration_in_seconds': db['last_backup_duration_in_seconds'], + 'db_backup_config': db['db_backup_config'] + } data.append(value) return data @@ -2570,7 +2594,9 @@ def __get_database_db_exadata(self, region_name, compartment): 'backup_subnet_name': vm['backup_subnet_name'], 'backup_vcn_name': vm['backup_vcn_name'], 'nsg_ids': vm['nsg_ids'], + 'nsg_names': vm['nsg_names'], 'backup_network_nsg_ids': vm['backup_network_nsg_ids'], + 'backup_network_nsg_names': vm['backup_network_nsg_names'], 'last_update_history_entry_id': vm['last_update_history_entry_id'], 'shape': vm['shape'], 'listener_port': vm['listener_port'], @@ -3207,6 +3233,7 @@ def __get_database_adb_dedicated(self, region_name, compartment, infra_id): 'subnet_name_full': vm['subnet_name_full'], 'vcn_name': vm['vcn_name'], 'nsg_ids': vm['nsg_ids'], + 'nsg_names': vm['nsg_names'], 'last_update_history_entry_id': vm['last_update_history_entry_id'], 'lifecycle_state': vm['lifecycle_state'], 'time_created': vm['time_created'], @@ -3844,30 +3871,32 @@ def __get_load_balancer_details(self, load_balance_obj): try: lb = load_balance_obj flexible = (str(lb['shape_min_mbps']) + "mbps:" + str(lb['shape_max_mbps']) + "mbps - ") if lb['shape_min_mbps'] else "" - data['id'] = str(lb['id']) - data['name'] = str(lb['display_name']) + " - " + str(lb['shape_name']) + " - " + flexible + ("(Private)" if lb['is_private'] else "(Public)") - data['status'] = lb['status'] - data['shape_name'] = lb['shape_name'] - data['shape_min_mbps'] = lb['shape_min_mbps'] - data['shape_max_mbps'] = lb['shape_max_mbps'] - data['display_name'] = lb['display_name'] - data['is_private'] = lb['is_private'] - data['ips'] = lb['ip_addresses'] - data['path_route'] = lb['path_route'] - data['nsg_ids'] = lb['nsg_ids'] - data['nsg_names'] = lb['nsg_names'] - data['hostnames'] = [x['desc'] for x in lb['hostnames']] - data['rule_sets'] = lb['rule_sets'] - data['compartment_name'] = lb['compartment_name'] - data['compartment_path'] = lb['compartment_path'] - data['compartment_id'] = lb['compartment_id'] - data['subnet_ids'] = lb['subnet_ids'] - data['time_created'] = lb['time_created'] - data['defined_tags'] = lb['defined_tags'] - data['freeform_tags'] = lb['freeform_tags'] - data['certificates'] = lb['certificates'] - data['ssl_cipher_suites'] = lb['ssl_cipher_suites'] - data['routing_policies'] = lb['routing_policies'] + data = { + 'id': str(lb['id']), + 'name': str(lb['display_name']) + " - " + str(lb['shape_name']) + " - " + flexible + ("(Private)" if lb['is_private'] else "(Public)"), + 'status': lb['status'], + 'shape_name': lb['shape_name'], + 'shape_min_mbps': lb['shape_min_mbps'], + 'shape_max_mbps': lb['shape_max_mbps'], + 'display_name': lb['display_name'], + 'is_private': lb['is_private'], + 'ips': lb['ip_addresses'], + 'path_route': lb['path_route'], + 'nsg_ids': lb['nsg_ids'], + 'nsg_names': lb['nsg_names'], + 'hostnames': [x['info'] for x in lb['hostnames']], + 'rule_sets': lb['rule_sets'], + 'compartment_name': lb['compartment_name'], + 'compartment_path': lb['compartment_path'], + 'compartment_id': lb['compartment_id'], + 'subnet_ids': lb['subnet_ids'], + 'time_created': lb['time_created'], + 'defined_tags': lb['defined_tags'], + 'freeform_tags': lb['freeform_tags'], + 'certificates': lb['certificates'], + 'ssl_cipher_suites': lb['ssl_cipher_suites'], + 'routing_policies': lb['routing_policies'] + } # subnets datasub = [] @@ -4165,12 +4194,10 @@ def __get_container_main(self, region_name, compartment): 'compartment_name': np['compartment_name'], 'compartment_path': np['compartment_path'], 'compartment_id': np['compartment_id'], - 'subnets': [], - 'subnet_ids': np['subnet_ids']} + 'subnet_ids': np['subnet_ids'], + 'subnets': self.__get_core_network_subnet_names(np['subnet_ids']) + } - # subnets - for sub in np['subnet_ids']: - nval['subnets'].append(self.__get_core_network_subnet_name(sub)) val['node_pools'].append(nval) data.append(val) @@ -4217,8 +4244,8 @@ def __get_functions_main(self, region_name, compartment): 'id': fn['id'], 'display_name': fn['display_name'], 'lifecycle_state': fn['lifecycle_state'], - 'subnets': [], 'subnet_ids': fn['subnet_ids'], + 'subnets': self.__get_core_network_subnet_names(fn['subnet_ids']), 'network_security_group_ids': fn['network_security_group_ids'], 'network_security_group_names': fn['network_security_group_names'], 'shape': fn['shape'], diff --git a/examples/showoci/showoci_output.py b/examples/showoci/showoci_output.py index 3f8e0d6cc2..3d29ef0f8b 100644 --- a/examples/showoci/showoci_output.py +++ b/examples/showoci/showoci_output.py @@ -22,7 +22,7 @@ class ShowOCIOutput(object): - version = "24.11.12" + version = "24.12.10" ########################################################################## # spaces for align @@ -52,6 +52,22 @@ def print_header(self, name, category, topBorder=True, bottomBorder=True, printT if bottomBorder: print('#' * chars) + ########################################################################## + # list_to_str + ########################################################################## + def list_to_str(self, v_list, attr=None): + try: + if not v_list or not isinstance(v_list, (list, tuple)): + return '' + + if attr: + return str(', '.join(x[attr] for x in v_list)) + else: + return str(', '.join(x for x in v_list)) + + except Exception as e: + self.__print_error("list_to_str" + (" ATTR='" + attr + "'" if attr else ""), e) + ########################################################################## # print_oci_main ########################################################################## @@ -170,11 +186,12 @@ def get_errors(self): ########################################################################## def __print_error(self, msg, e): classname = type(self).__name__ + caller_function = sys._getframe(2).f_code.co_name + ":" + sys._getframe(1).f_code.co_name if isinstance(e, KeyError): - print("\nError in " + classname + ":" + msg + ": KeyError " + str(e.args)) + print("\nError in " + classname + ":" + caller_function + ":" + msg + ": KeyError " + str(e.args)) else: - print("\nError in " + classname + ":" + msg + ": " + str(e)) + print("\nError in " + classname + ":" + caller_function + ":" + msg + ": " + str(e)) self.error += 1 @@ -1084,9 +1101,9 @@ def __print_load_balancer_details(self, load_balance_obj): if listener['path_route_set_name']: print(self.tabs + " : Paths: " + listener['path_route_set_name']) if listener['rule_set_names']: - print(self.tabs + " : Rules: " + str(', '.join(x for x in listener['rule_set_names']))) + print(self.tabs + " : Rules: " + self.list_to_str(listener['rule_set_names'])) if listener['hostname_names']: - print(self.tabs + " : Hosts: " + str(', '.join(x for x in listener['hostname_names']))) + print(self.tabs + " : Hosts: " + self.list_to_str(listener['hostname_names'])) print("") # Path route set @@ -1104,7 +1121,7 @@ def __print_load_balancer_details(self, load_balance_obj): if 'rule_sets' in lb: for rs in lb['rule_sets']: - print(self.tabs + "RuleSet : " + rs['name'] + ": " + str(', '.join(x['action'] for x in rs['items']))) + print(self.tabs + "RuleSet : " + rs['name'] + ": " + self.list_to_str(rs['items'], 'action')) except Exception as e: self.__print_error("__print_load_balancer_details", e) @@ -1357,7 +1374,7 @@ def __print_database_db_exadata_vmcluster(self, vmclusters): # databases for db in db_home['databases']: - pdbs = ", PDBS: " + str(', '.join(x['name'] for x in db['pdbs'])) if db['pdbs'] else "" + pdbs = ", PDBS: " + self.list_to_str(db['pdbs'], 'name') print(self.tabs + self.tabs + " DB : " + db['name'] + pdbs) # print data guard @@ -1585,7 +1602,7 @@ def __print_database_db_exacc_infra(self, list_exadata): # databases for db in db_home['databases']: - pdbs = ", PDBS: " + str(', '.join(x['name'] for x in db['pdbs'])) if db['pdbs'] else "" + pdbs = ", PDBS: " + self.list_to_str(db['pdbs'], 'name') print(self.tabs + self.tabs + " DB : " + db['name'] + pdbs) # print data guard @@ -1754,7 +1771,7 @@ def __print_database_db_system(self, list_db_systems): # databases for db in db_home['databases']: - pdbs = ", PDBS: " + str(', '.join(x['name'] for x in db['pdbs'])) if db['pdbs'] else "" + pdbs = ", PDBS: " + self.list_to_str(db['pdbs'], 'name') print(self.tabs + self.tabs + " DB : " + db['name'] + pdbs) # print data guard @@ -2926,7 +2943,7 @@ def __print_core_compute_instances(self, instances): if vnic['details']['internal_fqdn']: print(self.tabs2 + " : Int FQDN : " + vnic['details']['internal_fqdn']) if 'ip_addresses' in vnic: - print(self.tabs2 + " : IP Addresses : " + str(', '.join(x['ip_address'] for x in vnic['ip_addresses']))) + print(self.tabs2 + " : IP Addresses : " + self.list_to_str(vnic['ip_addresses'], 'ip_address')) if 'console' in instance: if instance['console']: @@ -4491,6 +4508,22 @@ def __add_to_error_array(self, classname, caller_function, compartment_name, err except Exception as e: print("\nError in __add_to_error_array " + str(e)) + ########################################################################## + # __csv_list_to_str + ########################################################################## + def __csv_list_to_str(self, v_list, attr=None): + try: + if not v_list or not isinstance(v_list, (list, tuple)): + return '' + + if attr: + return str(', '.join(x[attr] for x in v_list)) + else: + return str(', '.join(x for x in v_list)) + + except Exception as e: + self.__print_error("__csv_list_to_str" + (" ATTR='" + attr + "'" if attr else ""), e) + ########################################################################## # generate_csv ########################################################################## @@ -4802,9 +4835,7 @@ def __get_freeform_tags(self, freeform_tag): if not freeform_tag: return "" - ret_str = str(', '.join(key + "=" + freeform_tag[key] for key in freeform_tag.keys())) - - return ret_str + return str(', '.join(key + "=" + freeform_tag[key] for key in freeform_tag.keys())) except Exception as e: self.__print_error("__get_freeform_tags", e) @@ -5037,13 +5068,13 @@ def __csv_identity_domains_users(self, users, domain_name, domain_id): 'tags': str(','.join(x['key'] + "=" + x['value'] for x in var['tags'])), 'freeform_tags': self.__get_freeform_tags(var['freeform_tags']), 'defined_tags': self.__get_defined_tags(var['defined_tags']), - 'phone_numbers': str(','.join(x for x in var['phone_numbers'])), - 'ims': str(','.join(x for x in var['ims'])), - 'emails': str(','.join(x for x in var['emails'])), - 'entitlements': str(','.join(x for x in var['entitlements'])), - 'x509_certificates': str(','.join(x for x in var['x509_certificates'])), - 'groups': str(','.join(x['display'] for x in var['groups'])), - 'groups_ids': str(','.join(x['ocid'] for x in var['groups'])), + 'phone_numbers': self.__csv_list_to_str(var['phone_numbers']), + 'ims': self.__csv_list_to_str(var['ims']), + 'emails': self.__csv_list_to_str(var['emails']), + 'entitlements': self.__csv_list_to_str(var['entitlements']), + 'x509_certificates': self.__csv_list_to_str(var['x509_certificates']), + 'groups': self.__csv_list_to_str(var['groups'], 'display'), + 'groups_ids': self.__csv_list_to_str(var['groups'], 'ocid'), 'is_federated_user': var['ext_user']['is_federated_user'], 'is_authentication_delegated': var['ext_user']['is_authentication_delegated'], 'status': var['ext_user']['status'], @@ -5126,8 +5157,8 @@ def __csv_identity_domains_users(self, users, domain_name, domain_id): def __csv_identity_domains_groups(self, groups, domain_name, domain_id): try: for var in groups: - members = "Over 200 members" if len(var['members']) > 200 else str(','.join(x['name'] for x in var['members'])) - members_ids = "Over 200 members" if len(var['members']) > 200 else str(','.join(x['ocid'] for x in var['members'])) + members = "Over 200 members" if len(var['members']) > 200 else self.__csv_list_to_str(var['members'], 'name') + members_ids = "Over 200 members" if len(var['members']) > 200 else self.__csv_list_to_str(var['members'], 'ocid') data = { 'domain_id': domain_id, 'domain_name': domain_name, @@ -5201,8 +5232,8 @@ def __csv_identity_domains_dynamic_groups(self, groups, domain_name, domain_id): 'matching_rule': var['matching_rule'], 'description': var['description'], 'display_name': var['display_name'], - 'grants': str(','.join(x['value'] for x in var['grants'])), - 'dynamic_group_app_roles': str(','.join(x['value'] for x in var['dynamic_group_app_roles'])), + 'grants': self.__csv_list_to_str(var['grants'], 'value'), + 'dynamic_group_app_roles': self.__csv_list_to_str(var['dynamic_group_app_roles'], 'value'), 'freeform_tags': self.__get_freeform_tags(var['freeform_tags']), 'defined_tags': self.__get_defined_tags(var['defined_tags']) } @@ -5238,7 +5269,7 @@ def __csv_identity_domains_network_perimeters(self, network_perimeters, domain_n 'idcs_last_upgraded_in_release': str(var['idcs_last_upgraded_in_release']), 'tags': str(','.join(x['key'] + "=" + x['value'] for x in var['tags'])), 'compartment_ocid': var['compartment_ocid'], - 'ip_addresses': str(','.join(x['value'] for x in var['ip_addresses'])) + 'ip_addresses': self.__csv_list_to_str(var['ip_addresses'], 'value') } self.csv_identity_domains_network_perimeters.append(data) @@ -5319,8 +5350,8 @@ def __csv_identity_domains_idps(self, groups, domain_name, domain_id): 'social_authz_url': var['ext_social_idp']['authz_url'], 'social_access_token_url': var['ext_social_idp']['access_token_url'], 'social_profile_url': var['ext_social_idp']['profile_url'], - 'social_scope': str(','.join(x for x in var['ext_social_idp']['scope'])), - 'social_admin_scope': str(','.join(x for x in var['ext_social_idp']['admin_scope'])), + 'social_scope': self.__csv_list_to_str(var['ext_social_idp']['scope']), + 'social_admin_scope': self.__csv_list_to_str(var['ext_social_idp']['admin_scope']), 'social_consumer_key': var['ext_social_idp']['consumer_key'], 'social_consumer_secret': var['ext_social_idp']['consumer_secret'], 'social_service_provider_name': var['ext_social_idp']['service_provider_name'], @@ -5467,7 +5498,7 @@ def __csv_identity_domains_auth_factor(self, groups, domain_name, domain_id): 'totp_email_otp_validity_duration_in_mins': var['totp_settings']['email_otp_validity_duration_in_mins'], 'totp_email_passcode_length': var['totp_settings']['email_passcode_length'], 'third_party_duo_security_settings': var['third_party_duo_security_settings'], - 'compliance_policy': str(','.join(x['value']for x in var['compliance_policy'])), + 'compliance_policy': self.__csv_list_to_str(var['compliance_policy'], 'value'), 'fido_attestation': var['ext_fido_auth_factor']['attestation'], 'fido_authenticator_selection_attachment': var['ext_fido_auth_factor']['authenticator_selection_attachment'], 'fido_authenticator_selection_user_verification': var['ext_fido_auth_factor']['authenticator_selection_user_verification'], @@ -5635,9 +5666,9 @@ def __csv_identity_domains_rules(self, rules, domain_name, domain_id): 'locked': var['locked'], 'rule_groovy': var['rule_groovy'], 'rule_return': str(','.join(x['name'] + ':' + x['value'] for x in var['rule_return'])), - 'policy_ids': str(','.join(x for x in var['policy_ids'])), - 'policy_ids_position': str(','.join(x for x in var['policy_ids_position'])), - 'policy_names': str(','.join(x for x in var['policy_names'])), + 'policy_ids': self.__csv_list_to_str(var['policy_ids']), + 'policy_ids_position': self.__csv_list_to_str(var['policy_ids_position']), + 'policy_names': self.__csv_list_to_str(var['policy_names']), 'policy_type_ref': var['policy_type']['ref'] if var['policy_type'] else "", 'policy_type_value': var['policy_type']['value'] if var['policy_type'] else "", 'condition_value': "", @@ -5769,10 +5800,10 @@ def __csv_identity_network_sources(self, data): value = { 'description': ns['description'], - 'services': ",".join(ns['services']), - 'public_source_list': ",".join(ns['public_source_list']), - 'virtual_source_list': ",".join(x['ip_ranges'] for x in ns['virtual_source_list']), - 'vcn_ids': ",".join(x['vcn_id'] for x in ns['virtual_source_list']), + 'services': self.__csv_list_to_str(ns['services']), + 'public_source_list': self.__csv_list_to_str(ns['public_source_list']), + 'virtual_source_list': self.__csv_list_to_str(ns['virtual_source_list'], 'ip_ranges'), + 'vcn_ids': self.__csv_list_to_str(ns['virtual_source_list'], 'vcn_id'), 'freeform_tags': self.__get_freeform_tags(ns['freeform_tags']), 'defined_tags': self.__get_defined_tags(ns['defined_tags']), 'id': ns['id'] @@ -5890,61 +5921,64 @@ def __csv_error_data(self, data): def __csv_core_network_vcn_subnet(self, region_name, subnets, vcn, igw, sgw, nat, drg, lpg): try: for subnet in subnets: - data = {'region_name': region_name, + data = { + 'region_name': region_name, + 'vcn_name': vcn['display_name'], + 'vcn_cidr': "", + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), + 'vcn_compartment': vcn['compartment_name'], + 'vcn_compartment_path': vcn['compartment_path'], + 'internet_gateway': igw, + 'service_gateway': sgw, + 'nat': nat, + 'drg': drg, + 'local_peering': lpg, + 'subnet_name': subnet['name'], + 'subnet_cidr': subnet['cidr_block'], + 'availability_domain': subnet['availability_domain'], + 'subnet_compartment': subnet['compartment_name'], + 'subnet_compartment_path': subnet['compartment_path'], + 'public_private': subnet['public_private'], + 'dhcp_options': subnet['dhcp_options'], + 'route': subnet['route'], + 'security_list': self.__csv_list_to_str(subnet['security_list']), + 'dns': subnet['dns'], + 'logs': self.__csv_list_to_str(subnet['logs'], 'name'), + 'freeform_tags': self.__get_freeform_tags(subnet['freeform_tags']), + 'defined_tags': self.__get_defined_tags(subnet['defined_tags']), + 'vcn_id': vcn['id'], + 'subnet_id': subnet['id'] + } + self.csv_network_subnet.append(data) + + # private ips + for ip in subnet['private_ips']: + data = { + 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], - 'internet_gateway': igw, - 'service_gateway': sgw, - 'nat': nat, - 'drg': drg, - 'local_peering': lpg, 'subnet_name': subnet['name'], 'subnet_cidr': subnet['cidr_block'], - 'availability_domain': subnet['availability_domain'], 'subnet_compartment': subnet['compartment_name'], 'subnet_compartment_path': subnet['compartment_path'], - 'public_private': subnet['public_private'], - 'dhcp_options': subnet['dhcp_options'], - 'route': subnet['route'], - 'security_list': str(', '.join(x for x in subnet['security_list'])), - 'dns': subnet['dns'], - 'logs': str(', '.join(x['name'] for x in subnet['logs'])), - 'freeform_tags': self.__get_freeform_tags(subnet['freeform_tags']), - 'defined_tags': self.__get_defined_tags(subnet['defined_tags']), + 'ip_address': ip['ip_address'], + 'display_name': ip['display_name'], + 'hostname_label': ip['hostname_label'], + 'is_primary': ip['is_primary'], + 'time_created': ip['time_created'], + 'ip_compartment_name': ip['compartment_name'], + 'ip_compartment_path': ip['compartment_path'], + 'ip_compartment_id': ip['compartment_id'], + 'privateip_id': ip['id'], + 'vlan_id': ip['vlan_id'], 'vcn_id': vcn['id'], - 'subnet_id': subnet['id']} - self.csv_network_subnet.append(data) - - # private ips - for ip in subnet['private_ips']: - data = {'region_name': region_name, - 'vcn_name': vcn['display_name'], - 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), - 'vcn_compartment': vcn['compartment_name'], - 'vcn_compartment_path': vcn['compartment_path'], - 'subnet_name': subnet['name'], - 'subnet_cidr': subnet['cidr_block'], - 'subnet_compartment': subnet['compartment_name'], - 'subnet_compartment_path': subnet['compartment_path'], - 'ip_address': ip['ip_address'], - 'display_name': ip['display_name'], - 'hostname_label': ip['hostname_label'], - 'is_primary': ip['is_primary'], - 'time_created': ip['time_created'], - 'ip_compartment_name': ip['compartment_name'], - 'ip_compartment_path': ip['compartment_path'], - 'ip_compartment_id': ip['compartment_id'], - 'privateip_id': ip['id'], - 'vlan_id': ip['vlan_id'], - 'vcn_id': vcn['id'], - 'subnet_id': subnet['id'], - 'freeform_tags': self.__get_freeform_tags(ip['freeform_tags']), - 'defined_tags': self.__get_defined_tags(ip['defined_tags']) - } + 'subnet_id': subnet['id'], + 'freeform_tags': self.__get_freeform_tags(ip['freeform_tags']), + 'defined_tags': self.__get_defined_tags(ip['defined_tags']) + } self.csv_network_subnet_prv_ips.append(data) @@ -5965,7 +5999,7 @@ def __csv_core_network_vcn_security_lists(self, region_name, sec_lists, vcn): 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], 'sec_name': sl['name'], @@ -5999,7 +6033,7 @@ def __csv_core_network_vcn_security_lists(self, region_name, sec_lists, vcn): 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], 'sec_name': sl['name'], @@ -6054,11 +6088,11 @@ def __csv_core_network_drg(self, region_name, drgs): 'name': drg['name'], 'redundancy': drg['redundancy'], 'time_created': drg['time_created'][0:16], - 'drg_route_tables': str(', '.join(x['display_name'] for x in drg['drg_route_tables'])), + 'drg_route_tables': self.__csv_list_to_str(drg['drg_route_tables'], 'display_name'), 'ip_sec_connections': str(', '.join(x['name'] + " " + x['tunnels_status'] for x in drg['ip_sec_connections'])), - 'virtual_circuits': str(', '.join(x['name'] for x in drg['virtual_circuits'])), + 'virtual_circuits': self.__csv_list_to_str(drg['virtual_circuits'], 'name'), 'remote_peerings': str(', '.join(x['name'] + " " + x['peering_status'] for x in drg['remote_peerings'])), - 'vcns': str(', '.join(x['name'] for x in drg['vcns'])), + 'vcns': self.__csv_list_to_str(drg['vcns'], 'name'), 'freeform_tags': self.__get_freeform_tags(drg['freeform_tags']), 'defined_tags': self.__get_defined_tags(drg['defined_tags']), 'id': drg['id'] @@ -6093,8 +6127,8 @@ def __csv_core_network_ipsec_tunnels(self, region_name, ipsecs): 'cpe': arr['cpe'], 'cpe_local_identifier': arr['cpe_local_identifier'], 'cpe_time_created': arr['time_created'][0:16], - 'routes': str(', '.join(x for x in arr['routes'])), - 'logs': str(', '.join(x['name'] for x in arr['logs'])), + 'routes': self.__csv_list_to_str(arr['routes']), + 'logs': self.__csv_list_to_str(arr['logs'], 'name'), 'drg_id': arr['drg_id'], 'cpe_id': arr['cpe_id'], 'ipsec_id': arr['id'], @@ -6146,7 +6180,7 @@ def __csv_core_network_virtual_circuit(self, region_name, vcs): 'cross_connect_mappings': arr['cross_connect_mappings'], 'type': arr['type'], 'drg_route_table': arr['drg_route_table'], - 'logs': str(', '.join(x['name'] for x in arr['logs'])), + 'logs': self.__csv_list_to_str(arr['logs'], 'name'), 'drg_id': arr['drg_id'], 'drg_route_table_id': arr['drg_route_table_id'], 'time_created': arr['time_created'], @@ -6234,7 +6268,7 @@ def __csv_core_network_vcn_security_groups(self, region_name, nsg, vcn): 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], 'sec_name': sl['name'], @@ -6265,7 +6299,8 @@ def __csv_core_network_vcn_security_groups(self, region_name, nsg, vcn): 'time_created': sl['time_created'], 'vcn_id': vcn['id'], 'sec_id': sl['id'], - 'id': sl['id'] + ":Empty" + 'id': sl['id'] + ":Empty", + 'vnics': "" } self.csv_network_security_group.append(data) @@ -6275,7 +6310,7 @@ def __csv_core_network_vcn_security_groups(self, region_name, nsg, vcn): 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], 'sec_name': sl['name'], @@ -6306,7 +6341,8 @@ def __csv_core_network_vcn_security_groups(self, region_name, nsg, vcn): 'time_created': sl['time_created'], 'vcn_id': vcn['id'], 'sec_id': sl['id'], - 'id': sl['id'] + ":" + slr['id'] + 'id': sl['id'] + ":" + slr['id'], + 'vnics': str(';'.join(f'vnic_id={x["vnic_id"]}, time_associated={x["time_associated"]}' for x in sl['vnics'])) } # check if id is in the list already @@ -6329,21 +6365,22 @@ def __csv_core_network_vcn_security_groups(self, region_name, nsg, vcn): def __csv_core_network_vcn_dhcp_options(self, region_name, dhcp_options, vcn): try: for dhcp in dhcp_options: - data = {'region_name': region_name, - 'vcn_name': vcn['display_name'], - 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), - 'vcn_compartment': vcn['compartment_name'], - 'vcn_compartment_path': vcn['compartment_path'], - 'dhcp_name': dhcp['name'], - 'option_1': "", - 'option_2': "", - 'dhcp_compartment': dhcp['compartment_name'], - 'dhcp_compartment_path': dhcp['compartment_path'], - 'time_created': dhcp['time_created'][0:16], - 'vcn_id': vcn['id'], - 'dhcp_id': dhcp['id'] - } + data = { + 'region_name': region_name, + 'vcn_name': vcn['display_name'], + 'vcn_cidr': "", + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), + 'vcn_compartment': vcn['compartment_name'], + 'vcn_compartment_path': vcn['compartment_path'], + 'dhcp_name': dhcp['name'], + 'option_1': "", + 'option_2': "", + 'dhcp_compartment': dhcp['compartment_name'], + 'dhcp_compartment_path': dhcp['compartment_path'], + 'time_created': dhcp['time_created'][0:16], + 'vcn_id': vcn['id'], + 'dhcp_id': dhcp['id'] + } seq = 0 for opt in dhcp['opt']: @@ -6367,42 +6404,44 @@ def __csv_core_network_vcn_route_tables(self, region_name, route_tables, vcn): for rt in route_tables: if len(rt['route_rules']) == 0: - data = {'region_name': region_name, + data = { + 'region_name': region_name, + 'vcn_name': vcn['display_name'], + 'vcn_cidr': "", + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), + 'vcn_compartment': vcn['compartment_name'], + 'vcn_compartment_path': vcn['compartment_path'], + 'route_name': rt['name'], + 'route_compartment': rt['compartment_name'], + 'route_compartment_path': rt['compartment_path'], + 'destination': "", + 'route': "Empty", + 'time_created': rt['time_created'][0:16], + 'vcn_id': vcn['id'], + 'route_id': rt['id'], + 'id': rt['id'] + ":Empty" + } + self.csv_network_routes.append(data) + + else: + for rl in rt['route_rules']: + data = { + 'region_name': region_name, 'vcn_name': vcn['display_name'], 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), + 'vcn_cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), 'vcn_compartment': vcn['compartment_name'], 'vcn_compartment_path': vcn['compartment_path'], 'route_name': rt['name'], 'route_compartment': rt['compartment_name'], 'route_compartment_path': rt['compartment_path'], - 'destination': "", - 'route': "Empty", + 'destination': rl['destination'], + 'route': rl['desc'], 'time_created': rt['time_created'][0:16], 'vcn_id': vcn['id'], 'route_id': rt['id'], - 'id': rt['id'] + ":Empty" - } - self.csv_network_routes.append(data) - - else: - for rl in rt['route_rules']: - data = {'region_name': region_name, - 'vcn_name': vcn['display_name'], - 'vcn_cidr': "", - 'vcn_cidrs': str(','.join(x for x in vcn['cidr_blocks'])), - 'vcn_compartment': vcn['compartment_name'], - 'vcn_compartment_path': vcn['compartment_path'], - 'route_name': rt['name'], - 'route_compartment': rt['compartment_name'], - 'route_compartment_path': rt['compartment_path'], - 'destination': rl['destination'], - 'route': rl['desc'], - 'time_created': rt['time_created'][0:16], - 'vcn_id': vcn['id'], - 'route_id': rt['id'], - 'id': rt['id'] + ":" + str(hash(rl['desc'])) - } + 'id': rt['id'] + ":" + str(hash(rl['desc'])) + } # check if id is in the list already item_exists = False @@ -6442,24 +6481,24 @@ def __csv_core_network_vcn(self, region_name, vcns): subnets_cidrs = "" if 'igw' in vcn['data']: - igw = str(', '.join(x['name'] for x in vcn['data']['igw'])) + igw = self.__csv_list_to_str(vcn['data']['igw'], 'name') if 'sgw' in vcn['data']: sgw = str(', '.join(x['name'] + " " + x['services'] for x in vcn['data']['sgw'])) if 'nat' in vcn['data']: - nat = str(', '.join(x['name'] for x in vcn['data']['nat'])) + nat = self.__csv_list_to_str(vcn['data']['nat'], 'name') if 'drg_attached' in vcn['data']: - drg = str(', '.join(x['name'] for x in vcn['data']['drg_attached'])) + drg = self.__csv_list_to_str(vcn['data']['drg_attached'], 'name') if 'local_peering' in vcn['data']: - lpg = str(', '.join(x['name'] for x in vcn['data']['local_peering'])) + lpg = self.__csv_list_to_str(vcn['data']['local_peering'], 'name') if 'subnets' in vcn['data']: self.__csv_core_network_vcn_subnet(region_name, vcn['data']['subnets'], vcn, igw, sgw, nat, drg, lpg) - subnets = str(', '.join(x['name'] for x in vcn['data']['subnets'])) - subnets_cidrs = str(', '.join(x['cidr_block'] for x in vcn['data']['subnets'])) + subnets = self.__csv_list_to_str(vcn['data']['subnets'], 'name') + subnets_cidrs = self.__csv_list_to_str(vcn['data']['subnets'], 'cidr_block') if 'security_lists' in vcn['data']: self.__csv_core_network_vcn_security_lists(region_name, vcn['data']['security_lists'], vcn) @@ -6473,22 +6512,24 @@ def __csv_core_network_vcn(self, region_name, vcns): if 'dhcp_options' in vcn['data']: self.__csv_core_network_vcn_dhcp_options(region_name, vcn['data']['dhcp_options'], vcn) - data = {'region_name': region_name, - 'compartment': vcn['compartment_name'], - 'compartment_path': vcn['compartment_path'], - 'name': vcn['display_name'], - 'cidr': "", - 'cidrs': str(','.join(x for x in vcn['cidr_blocks'])), - 'internet_gateway': igw, - 'service_gateway': sgw, - 'nat': nat, - 'drg': drg, - 'local_peering': lpg, - 'subnets': subnets, - 'subnets_cidrs': subnets_cidrs, - 'freeform_tags': self.__get_freeform_tags(vcn['freeform_tags']), - 'defined_tags': self.__get_defined_tags(vcn['defined_tags']), - 'vcn_id': vcn['id']} + data = { + 'region_name': region_name, + 'compartment': vcn['compartment_name'], + 'compartment_path': vcn['compartment_path'], + 'name': vcn['display_name'], + 'cidr': "", + 'cidrs': self.__csv_list_to_str(vcn['cidr_blocks']), + 'internet_gateway': igw, + 'service_gateway': sgw, + 'nat': nat, + 'drg': drg, + 'local_peering': lpg, + 'subnets': subnets, + 'subnets_cidrs': subnets_cidrs, + 'freeform_tags': self.__get_freeform_tags(vcn['freeform_tags']), + 'defined_tags': self.__get_defined_tags(vcn['defined_tags']), + 'vcn_id': vcn['id'] + } self.csv_network_vcn.append(data) @@ -6591,22 +6632,22 @@ def __csv_database_db_system(self, region_name, list_db_systems): 'backup_subnet': dbs['backup_subnet'], 'backup_subnet_name': dbs['backup_subnet_name'], 'backup_vcn_name': dbs['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in dbs['scan_ips'])), - 'vip_ips': str(', '.join(x for x in dbs['vip_ips'])), + 'scan_ips': self.__csv_list_to_str(dbs['scan_ips']), + 'vip_ips': self.__csv_list_to_str(dbs['vip_ips']), 'cluster_name': dbs['cluster_name'], 'time_created': dbs['time_created'][0:16], 'domain': dbs['domain'], - 'db_nodes': str(', '.join(x['desc'] for x in dbs['db_nodes'])), - 'db_homes': str(', '.join(x['home'] for x in dbs['db_homes'])), + 'db_nodes': self.__csv_list_to_str(dbs['db_nodes'], 'desc'), + 'db_homes': self.__csv_list_to_str(dbs['db_homes'], 'home'), 'freeform_tags': self.__get_freeform_tags(dbs['freeform_tags']), 'defined_tags': self.__get_defined_tags(dbs['defined_tags']), 'maintenance_window': dbs['maintenance_window']['display'] if dbs['maintenance_window'] else "", 'last_maintenance_run': dbs['last_maintenance_run']['maintenance_display'] if dbs['last_maintenance_run'] else "", 'next_maintenance_run': dbs['next_maintenance_run']['maintenance_display'] if dbs['next_maintenance_run'] else "", 'nsg_ids_names': dbs['nsg_ids_names'], - 'nsg_ids': str(', '.join(x for x in dbs['nsg_ids'])) if dbs['nsg_ids'] else "", + 'nsg_ids': self.__csv_list_to_str(dbs['nsg_ids']), 'backup_network_nsg_ids_names': dbs['backup_network_nsg_ids_names'], - 'backup_network_nsg_ids': str(', '.join(x for x in dbs['backup_network_nsg_ids'])) if dbs['backup_network_nsg_ids'] else "", + 'backup_network_nsg_ids': self.__csv_list_to_str(dbs['backup_network_nsg_ids']), 'memory_size_in_gbs': dbs['memory_size_in_gbs'], 'storage_volume_performance_mode': dbs['storage_volume_performance_mode'], 'time_zone': dbs['time_zone'], @@ -6658,18 +6699,25 @@ def __csv_database_db_system(self, region_name, list_db_systems): 'backup_subnet': dbs['backup_subnet'], 'backup_subnet_name': dbs['backup_subnet_name'], 'backup_vcn_name': dbs['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in dbs['scan_ips'])), - 'vip_ips': str(', '.join(x for x in dbs['vip_ips'])), - 'pdbs': str(', '.join(x['name'] for x in db['pdbs'])), + 'scan_ips': self.__csv_list_to_str(dbs['scan_ips']), + 'vip_ips': self.__csv_list_to_str(dbs['vip_ips']), + 'pdbs': self.__csv_list_to_str(db['pdbs'], 'name'), 'cluster_name': dbs['cluster_name'], 'vm_name': dbs['display_name'], 'time_created': dbs['time_created'][0:16], 'domain': dbs['domain'], 'auto_backup_enabled': db['auto_backup_enabled'], - 'db_nodes': str(', '.join(x['desc'] for x in dbs['db_nodes'])), + 'last_failed_backup_timestamp': db['last_failed_backup_timestamp'], + 'last_backup_duration_in_seconds': db['last_backup_duration_in_seconds'], + 'recovery_window_in_days': db['db_backup_config']['recovery_window_in_days'] if 'db_backup_config' in db else "", + 'backup_destination_type': db['db_backup_config']['backup_destination_type'] if 'db_backup_config' in db else "", + 'auto_full_backup_day': db['db_backup_config']['auto_full_backup_day'] if 'db_backup_config' in db else "", + 'kms_key_id': db['kms_key_id'], + 'kms_key_version_id': db['kms_key_version_id'], + 'key_store_wallet_name': db['key_store_wallet_name'], + 'db_nodes': self.__csv_list_to_str(dbs['db_nodes'], 'desc'), 'freeform_tags': self.__get_freeform_tags(db['freeform_tags']), 'defined_tags': self.__get_defined_tags(db['defined_tags']), - 'kms_key_id': db['kms_key_id'], 'vault_id': db['vault_id'], 'database_id': db['id'], 'id': db['id'], @@ -6803,12 +6851,12 @@ def __csv_database_db_exascale(self, region_name, list_vaults): 'backup_subnet': vm['backup_subnet'], 'backup_subnet_name': vm['backup_subnet_name'], 'backup_vcn_name': vm['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), - 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), + 'scan_ips': self.__csv_list_to_str(vm['scan_ips']), + 'vip_ips': self.__csv_list_to_str(vm['vip_ips']), 'cluster_name': vm['cluster_name'], 'time_created': vm['time_created'][0:16], 'domain': vm['domain'], - 'db_homes': str(', '.join(x['home'] for x in vm['db_homes'])), + 'db_homes': self.__csv_list_to_str(vm['db_homes'], 'home'), 'freeform_tags': self.__get_freeform_tags(vm['freeform_tags']), 'defined_tags': self.__get_defined_tags(vm['defined_tags']), 'id': vm['id'], @@ -6853,15 +6901,23 @@ def __csv_database_db_exascale(self, region_name, list_vaults): 'backup_subnet': vm['backup_subnet'], 'backup_subnet_name': vm['backup_subnet_name'], 'backup_vcn_name': vm['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), - 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), - 'pdbs': str(', '.join(x['name'] for x in db['pdbs'])), + 'scan_ips': self.__csv_list_to_str(vm['scan_ips']), + 'vip_ips': self.__csv_list_to_str(vm['vip_ips']), + 'pdbs': self.__csv_list_to_str(db['pdbs'], 'name'), 'cluster_name': vm['cluster_name'], 'vm_name': vm['display_name'], 'time_created': vm['time_created'][0:16], 'domain': vm['domain'], 'auto_backup_enabled': db['auto_backup_enabled'], - 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), + 'last_failed_backup_timestamp': db['last_failed_backup_timestamp'], + 'last_backup_duration_in_seconds': db['last_backup_duration_in_seconds'], + 'recovery_window_in_days': db['db_backup_config']['recovery_window_in_days'] if 'db_backup_config' in db else "", + 'backup_destination_type': db['db_backup_config']['backup_destination_type'] if 'db_backup_config' in db else "", + 'auto_full_backup_day': db['db_backup_config']['auto_full_backup_day'] if 'db_backup_config' in db else "", + 'kms_key_id': db['kms_key_id'], + 'kms_key_version_id': db['kms_key_version_id'], + 'key_store_wallet_name': db['key_store_wallet_name'], + 'db_nodes': self.__csv_list_to_str(vm['db_nodes'], 'desc'), 'freeform_tags': self.__get_freeform_tags(db['freeform_tags']), 'defined_tags': self.__get_defined_tags(db['defined_tags']), 'database_id': db['id'], @@ -6956,10 +7012,10 @@ def __csv_database_db_exadata(self, region_name, list_exa): 'customer_contacts': str(dbs['customer_contacts']), 'defined_file_system_configurations': str(dbs['defined_file_system_configurations']), # End Added 7/29/2024 - 'db_servers': str(', '.join(x['desc'] for x in dbs['db_servers'])), - 'db_servers_ids': str(', '.join(x['id'] for x in dbs['db_servers'])), + 'db_servers': self.__csv_list_to_str(dbs['db_servers'], 'desc'), + 'db_servers_ids': self.__csv_list_to_str(dbs['db_servers'], 'id'), 'cluster_count': len(dbs['vm_clusters']), - 'cluster_names': str(', '.join(x['display_name'] for x in dbs['vm_clusters'])), + 'cluster_names': self.__csv_list_to_str(dbs['vm_clusters'], 'display_name'), 'time_created': dbs['time_created'], 'freeform_tags': self.__get_freeform_tags(dbs['freeform_tags']), 'defined_tags': self.__get_defined_tags(dbs['defined_tags']), @@ -7002,8 +7058,8 @@ def __csv_database_db_exadata(self, region_name, list_exa): 'backup_subnet': vm['backup_subnet'], 'backup_subnet_name': vm['backup_subnet_name'], 'backup_vcn_name': vm['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), - 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), + 'scan_ips': self.__csv_list_to_str(vm['scan_ips']), + 'vip_ips': self.__csv_list_to_str(vm['vip_ips']), 'cluster_name': vm['cluster_name'], 'time_created': vm['time_created'][0:16], 'domain': vm['domain'], @@ -7017,8 +7073,8 @@ def __csv_database_db_exadata(self, region_name, list_exa): 'scan_listener_port_tcp': vm['scan_listener_port_tcp'], 'file_system_configuration_details': str(vm['file_system_configuration_details']), # End Added 7/29/2024 - 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), - 'db_homes': str(', '.join(x['home'] for x in vm['db_homes'])), + 'db_nodes': self.__csv_list_to_str(vm['db_nodes'], 'desc'), + 'db_homes': self.__csv_list_to_str(vm['db_homes'], 'home'), 'freeform_tags': self.__get_freeform_tags(vm['freeform_tags']), 'defined_tags': self.__get_defined_tags(vm['defined_tags']), 'maintenance_window': dbs['maintenance_window']['display'] if dbs['maintenance_window'] else "", @@ -7065,15 +7121,23 @@ def __csv_database_db_exadata(self, region_name, list_exa): 'backup_subnet': vm['backup_subnet'], 'backup_subnet_name': vm['backup_subnet_name'], 'backup_vcn_name': vm['backup_vcn_name'], - 'scan_ips': str(', '.join(x for x in vm['scan_ips'])), - 'vip_ips': str(', '.join(x for x in vm['vip_ips'])), - 'pdbs': str(', '.join(x['name'] for x in db['pdbs'])), + 'scan_ips': self.__csv_list_to_str(vm['scan_ips']), + 'vip_ips': self.__csv_list_to_str(vm['vip_ips']), + 'pdbs': self.__csv_list_to_str(db['pdbs'], 'name'), 'cluster_name': vm['cluster_name'], 'vm_name': vm['display_name'], 'time_created': vm['time_created'][0:16], 'domain': vm['domain'], 'auto_backup_enabled': db['auto_backup_enabled'], - 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), + 'last_failed_backup_timestamp': db['last_failed_backup_timestamp'], + 'last_backup_duration_in_seconds': db['last_backup_duration_in_seconds'], + 'recovery_window_in_days': db['db_backup_config']['recovery_window_in_days'] if 'db_backup_config' in db else "", + 'backup_destination_type': db['db_backup_config']['backup_destination_type'] if 'db_backup_config' in db else "", + 'auto_full_backup_day': db['db_backup_config']['auto_full_backup_day'] if 'db_backup_config' in db else "", + 'kms_key_id': db['kms_key_id'], + 'kms_key_version_id': db['kms_key_version_id'], + 'key_store_wallet_name': db['key_store_wallet_name'], + 'db_nodes': self.__csv_list_to_str(vm['db_nodes'], 'desc'), 'freeform_tags': self.__get_freeform_tags(db['freeform_tags']), 'defined_tags': self.__get_defined_tags(db['defined_tags']), 'database_id': db['id'], @@ -7156,10 +7220,10 @@ def __csv_database_db_exacc(self, region_name, list_exa): 'ntp_server': dbs['ntp_server'], 'csi_number': dbs['csi_number'], 'node_count': len(dbs['db_servers']), - 'db_servers': str(', '.join(x['desc'] for x in dbs['db_servers'])), - 'db_servers_ids': str(', '.join(x['id'] for x in dbs['db_servers'])), + 'db_servers': self.__csv_list_to_str(dbs['db_servers'], 'desc'), + 'db_servers_ids': self.__csv_list_to_str(dbs['db_servers'], 'id'), 'cluster_count': len(dbs['vm_clusters']), - 'cluster_names': str(', '.join(x['display_name'] for x in dbs['vm_clusters'])), + 'cluster_names': self.__csv_list_to_str(dbs['vm_clusters'], 'display_name'), 'time_created': dbs['time_created'], 'freeform_tags': self.__get_freeform_tags(dbs['freeform_tags']), 'defined_tags': self.__get_defined_tags(dbs['defined_tags']), @@ -7207,8 +7271,8 @@ def __csv_database_db_exacc(self, region_name, list_exa): 'cluster_name': vm['display_name'], 'time_created': vm['time_created'][0:16], 'domain': "", - 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), - 'db_homes': str(', '.join(x['home'] for x in vm['db_homes'])), + 'db_nodes': self.__csv_list_to_str(vm['db_nodes'], 'desc'), + 'db_homes': self.__csv_list_to_str(vm['db_homes'], 'home'), 'maintenance_window': dbs['maintenance_window']['display'] if dbs['maintenance_window'] else "", 'last_maintenance_run': dbs['last_maintenance_run']['maintenance_display'] if dbs['last_maintenance_run'] else "", 'next_maintenance_run': dbs['next_maintenance_run']['maintenance_display'] if dbs['next_maintenance_run'] else "", @@ -7259,13 +7323,20 @@ def __csv_database_db_exacc(self, region_name, list_exa): 'backup_vcn_name': "", 'scan_ips': "", 'vip_ips': "", - 'pdbs': str(', '.join(x['name'] for x in db['pdbs'])), + 'pdbs': self.__csv_list_to_str(db['pdbs'], 'name'), 'cluster_name': vm['display_name'], 'vm_name': vm['display_name'], 'time_created': vm['time_created'][0:16], 'domain': "", 'auto_backup_enabled': db['auto_backup_enabled'], - 'db_nodes': str(', '.join(x['desc'] for x in vm['db_nodes'])), + 'last_failed_backup_timestamp': db['last_failed_backup_timestamp'], + 'last_backup_duration_in_seconds': db['last_backup_duration_in_seconds'], + 'recovery_window_in_days': db['db_backup_config']['recovery_window_in_days'] if 'db_backup_config' in db else "", + 'backup_destination_type': db['db_backup_config']['backup_destination_type'] if 'db_backup_config' in db else "", + 'auto_full_backup_day': db['db_backup_config']['auto_full_backup_day'] if 'db_backup_config' in db else "", + 'kms_key_version_id': db['kms_key_version_id'], + 'key_store_wallet_name': db['key_store_wallet_name'], + 'db_nodes': self.__csv_list_to_str(vm['db_nodes'], 'desc'), 'kms_key_id': db['kms_key_id'], 'vault_id': db['vault_id'], 'freeform_tags': self.__get_freeform_tags(db['freeform_tags']), @@ -7445,8 +7516,8 @@ def __csv_database_db_autonomous(self, region_name, databases): 'subnet_name': dbs['subnet_name'] if dbs['subnet_name'] != "None" else "", 'private_endpoint': dbs['private_endpoint'] if dbs['private_endpoint'] != "None" else "", 'private_endpoint_label': dbs['private_endpoint_label'] if dbs['private_endpoint_label'] != "None" else "", - 'nsg_ids': dbs['nsg_ids'] if dbs['nsg_ids'] != "None" else "", - 'nsg_names': str(', '.join(x for x in dbs['nsg_names'])), + 'nsg_ids': self.__csv_list_to_str(dbs['nsg_ids']), + 'nsg_names': self.__csv_list_to_str(dbs['nsg_names']), 'whitelisted_ips': dbs['whitelisted_ips'], 'service_console_url': dbs['service_console_url'], 'connection_strings': dbs['connection_strings'], @@ -7590,6 +7661,7 @@ def __csv_database_db_autonomous_databases(self, region_name, databases): 'subnet_name': vm['subnet_name'], 'private_endpoint': db['private_endpoint'], 'private_endpoint_label': db['private_endpoint_label'], + # Adi - To Check NSG Variables 'nsg_ids': "", 'nsg_names': "", 'whitelisted_ips': db['whitelisted_ips'], @@ -7824,15 +7896,15 @@ def __csv_database_postgresql(self, region_name, postgresql): 'shape': db['shape_full'], 'admin_username': db['admin_username'], 'storage_system_type': db['storage_system_type'], - 'instances': str(', '.join(x['display_name'] for x in db['instances'])), + 'instances': self.__csv_list_to_str(db['instances'], 'display_name'), 'storage_is_regionally_durable': db['storage_is_regionally_durable'], 'storage_availability_domain': db['storage_availability_domain'], 'storage_iops': db['storage_iops'], 'network_subnet_id': db['network_subnet_id'], 'network_subnet_name': db['network_subnet_name'], 'network_primary_db_endpoint_private_ip': db['network_primary_db_endpoint_private_ip'], - 'network_nsg_ids': str(', '.join(x for x in db['network_nsg_ids'])), - 'network_nsg_names': str(', '.join(x for x in db['network_nsg_names'])), + 'network_nsg_ids': self.__csv_list_to_str(db['network_nsg_ids']), + 'network_nsg_names': self.__csv_list_to_str(db['network_nsg_names']), 'management_maintenance_window_start': db['management_maintenance_window_start'], 'management_backup_policy': db['management_backup_policy'], 'source_type': db['source_type'], @@ -7936,7 +8008,7 @@ def __csv_database_nosql(self, region_name, nosqls): self.__print_error("__csv_database_goldengate", e) ########################################################################## - # __csv_datasafe + # __csv_datasafe_get_target_info ########################################################################## def __csv_datasafe_get_target_info(self, targets, target_id): try: @@ -7971,8 +8043,8 @@ def __csv_datasafe(self, region_name, list_datasafe): 'lifecycle_state': target['lifecycle_state'], 'lifecycle_details': target['lifecycle_details'], 'time_created': target['time_created'], - 'associated_resource_ids': str(','.join(x for x in target['associated_resource_ids'])), - 'associated_resource_names': str(','.join(x for x in target['associated_resource_names'])), + 'associated_resource_ids': self.__csv_list_to_str(target['associated_resource_ids']), + 'associated_resource_names': self.__csv_list_to_str(target['associated_resource_names']), 'freeform_tags': self.__get_freeform_tags(target['freeform_tags']), 'defined_tags': self.__get_defined_tags(target['defined_tags']), 'global_ip_address': config['data_safe_nat_gateway_ip_address'], @@ -8024,10 +8096,9 @@ def __csv_datasafe(self, region_name, list_datasafe): 'display_name': adt['display_name'], 'description': adt['description'], 'is_data_safe_service_account_excluded': adt['is_data_safe_service_account_excluded'], - 'audit_policy_category': spc['audit_policy_category'], 'audit_policy_name': spc['audit_policy_name'], - 'database_policy_names': str(','.join(x for x in spc['database_policy_names'])), + 'database_policy_names': self.__csv_list_to_str(spc['database_policy_names']), 'enable_status': spc['enable_status'], 'enabled_entities': spc['enabled_entities'], 'is_created': spc['is_created'], @@ -8036,7 +8107,6 @@ def __csv_datasafe(self, region_name, list_datasafe): 'is_seeded_in_target': spc['is_seeded_in_target'], 'is_view_only': spc['is_view_only'], 'partially_enabled_msg': spc['partially_enabled_msg'], - 'time_created': adt['time_created'], 'lifecycle_state': adt['lifecycle_state'], 'lifecycle_details': adt['lifecycle_details'], @@ -8121,8 +8191,8 @@ def __csv_datasafe(self, region_name, list_datasafe): 'compartment_path': ds['compartment_path'], 'display_name': adt['display_name'], 'description': adt['description'], - 'ignored_assessment_ids': str(','.join(x for x in adt['ignored_assessment_ids'])), - 'ignored_targets': str(','.join(x for x in adt['ignored_targets'])), + 'ignored_assessment_ids': self.__csv_list_to_str(adt['ignored_assessment_ids']), + 'ignored_targets': self.__csv_list_to_str(adt['ignored_targets']), 'is_baseline': adt['is_baseline'], 'is_deviated_from_baseline': adt['is_deviated_from_baseline'], 'last_compared_baseline_id': adt['last_compared_baseline_id'], @@ -8153,8 +8223,8 @@ def __csv_datasafe(self, region_name, list_datasafe): 'compartment_path': ds['compartment_path'], 'display_name': adt['display_name'], 'description': adt['description'], - 'ignored_assessment_ids': str(','.join(x for x in adt['ignored_assessment_ids'])), - 'ignored_target_ids': str(','.join(x for x in adt['ignored_target_ids'])), + 'ignored_assessment_ids': self.__csv_list_to_str(adt['ignored_assessment_ids']), + 'ignored_target_ids': self.__csv_list_to_str(adt['ignored_target_ids']), 'is_baseline': adt['is_baseline'], 'is_deviated_from_baseline': adt['is_deviated_from_baseline'], 'last_compared_baseline_id': adt['last_compared_baseline_id'], @@ -8180,7 +8250,7 @@ def __csv_datasafe(self, region_name, list_datasafe): self.csv_datasafe_security_assessment.append(arr) except Exception as e: - self.__print_error("__csv_datasafe:" + issue_location, e) + self.__print_error("__csv_datasafe: " + issue_location, e) ########################################################################## # database @@ -8251,17 +8321,18 @@ def __csv_limits_main(self, region_name, limits): return for lt in limits: - data = {'region_name': region_name, - 'scope_type': lt['scope_type'], - 'availability_domain': lt['availability_domain'], - 'name': lt['name'], - 'description': lt['description'], - 'limit_name': lt['limit_name'], - 'value': lt['value'], - 'used': lt['used'], - 'available': lt['available'], - 'id': self.tenant_name + ":" + lt['region_name'] + ":" + lt['scope_type'] + ":" + lt['availability_domain'] + ":" + lt['name'] + ":" + lt['limit_name'] - } + data = { + 'region_name': region_name, + 'scope_type': lt['scope_type'], + 'availability_domain': lt['availability_domain'], + 'name': lt['name'], + 'description': lt['description'], + 'limit_name': lt['limit_name'], + 'value': lt['value'], + 'used': lt['used'], + 'available': lt['available'], + 'id': self.tenant_name + ":" + lt['region_name'] + ":" + lt['scope_type'] + ":" + lt['availability_domain'] + ":" + lt['name'] + ":" + lt['limit_name'] + } self.csv_limits.append(data) @@ -8366,7 +8437,7 @@ def __csv_core_compute_instances(self, region_name, instances): # go over the vnics if 'vnic' in instance: - data['vnic_ids'] = str(', '.join(x['id'] for x in instance['vnic'])) + data['vnic_ids'] = self.__csv_list_to_str(instance['vnic'], 'id') vnic_num = 0 for vnic in instance['vnic']: @@ -8387,15 +8458,15 @@ def __csv_core_compute_instances(self, region_name, instances): data['boot_volume_encryption_in_transit_type'] = bv['encryption_in_transit_type'] if 'block_volume' in instance: - data['block_volumes'] = str(', '.join(x['display_name'] for x in instance['block_volume'])) - data['block_volumes_ids'] = str(', '.join(x['id'] for x in instance['block_volume'])) - data['block_volumes_size_gb'] = str('+ '.join(x['size'] for x in instance['block_volume'])) - data['block_volumes_b_policy'] = str(', '.join(x['backup_policy'] for x in instance['block_volume'])) - data['block_volumes_attachment_type'] = str(', '.join(x['attachment_type'] for x in instance['block_volume'])) - data['block_volumes_transit_encryption'] = str(', '.join(x['is_pv_encryption_in_transit_enabled'] for x in instance['block_volume'])) - data['block_volumes_iscsi_login_state'] = str(', '.join(x['iscsi_login_state'] for x in instance['block_volume'])) - data['block_volumes_is_multipath'] = str(', '.join(x['is_multipath'] for x in instance['block_volume'])) - data['block_volumes_is_read_only'] = str(', '.join(x['is_read_only'] for x in instance['block_volume'])) + data['block_volumes'] = self.__csv_list_to_str(instance['block_volume'], 'display_name') + data['block_volumes_ids'] = self.__csv_list_to_str(instance['block_volume'], 'id') + data['block_volumes_size_gb'] = self.__csv_list_to_str(instance['block_volume'], 'size') + data['block_volumes_b_policy'] = self.__csv_list_to_str(instance['block_volume'], 'backup_policy') + data['block_volumes_attachment_type'] = self.__csv_list_to_str(instance['block_volume'], 'attachment_type') + data['block_volumes_transit_encryption'] = self.__csv_list_to_str(instance['block_volume'], 'is_pv_encryption_in_transit_enabled') + data['block_volumes_iscsi_login_state'] = self.__csv_list_to_str(instance['block_volume'], 'iscsi_login_state') + data['block_volumes_is_multipath'] = self.__csv_list_to_str(instance['block_volume'], 'is_multipath') + data['block_volumes_is_read_only'] = self.__csv_list_to_str(instance['block_volume'], 'is_read_only') bv_total_size = 0 for bv in instance['block_volume']: @@ -8652,65 +8723,68 @@ def __csv_load_balancer_details(self, region_name, load_balance_obj): log_access = log['name'] # load balancers - data = {'region_name': region_name, + data = { + 'region_name': region_name, + 'compartment_name': lb['compartment_name'], + 'compartment_path': lb['compartment_path'], + 'name': lb['display_name'], + 'status': lb['status'], + 'shape': lb['shape_name'], + 'type': ("Private" if lb['is_private'] else "Public"), + 'is_preserve_source_destination': "", + 'nlb_ip_version': "", + 'is_symmetric_hash_enabled': "", + 'ip_addresses': self.__csv_list_to_str(lb['ips']), + 'listeners': self.__csv_list_to_str(lb['listeners'], 'desc'), + 'log_errors': log_errors, + 'log_access': log_access, + 'logs': self.__csv_list_to_str(load_balance_obj['logs'], 'name'), + 'subnets': self.__csv_list_to_str(lb['subnets']), + 'nsg_ids': self.__csv_list_to_str(lb['nsg_ids']), + 'nsg_names': self.__csv_list_to_str(lb['nsg_names']), + 'time_created': lb['time_created'], + 'lb_certificates': lb['certificates'], + 'ssl_cipher_suites': self.__csv_list_to_str(lb['ssl_cipher_suites']), + 'routing_policies': self.__csv_list_to_str(lb['routing_policies']), + 'freeform_tags': self.__get_freeform_tags(lb['freeform_tags']), + 'defined_tags': self.__get_defined_tags(lb['defined_tags']), + 'loadbalancer_id': lb['id'], + 'id': lb['id'] + } + self.csv_load_balancer.append(data) + self.__csv_add_service(data, "Load Balancer") + + # listeners + for listener in lb['listeners']: + data = { + 'region_name': region_name, 'compartment_name': lb['compartment_name'], 'compartment_path': lb['compartment_path'], 'name': lb['display_name'], 'status': lb['status'], 'shape': lb['shape_name'], 'type': ("Private" if lb['is_private'] else "Public"), - 'is_preserve_source_destination': "", - 'nlb_ip_version': "", - 'is_symmetric_hash_enabled': "", - 'ip_addresses': str(', '.join(x for x in lb['ips'])), - 'listeners': str(', '.join(x['desc'] for x in lb['listeners'])), + 'ip_addresses': self.__csv_list_to_str(lb['ips']), 'log_errors': log_errors, 'log_access': log_access, - 'logs': str(', '.join(x['name'] for x in load_balance_obj['logs'])), - 'subnets': str(', '.join(x for x in lb['subnets'])), - 'nsg_names': lb['nsg_names'], + 'logs': self.__csv_list_to_str(load_balance_obj['logs'], 'name'), + 'subnets': self.__csv_list_to_str(lb['subnets']), + 'listener_name': listener['id'], + 'listener_port': listener['port'], + 'listener_def_bs': listener['default_backend_set_name'], + 'listener_ssl': listener['ssl_configuration'], + 'listener_host': self.__csv_list_to_str(listener['hostname_names']), + 'listener_path': listener['path_route_set_name'], + 'listener_rule': self.__csv_list_to_str(listener['rule_set_names']), 'time_created': lb['time_created'], 'lb_certificates': lb['certificates'], - 'ssl_cipher_suites': str(', '.join(x for x in lb['ssl_cipher_suites'])), - 'routing_policies': str(', '.join(x for x in lb['routing_policies'])), + 'ssl_cipher_suites': self.__csv_list_to_str(lb['ssl_cipher_suites']), + 'routing_policies': self.__csv_list_to_str(lb['routing_policies']), 'freeform_tags': self.__get_freeform_tags(lb['freeform_tags']), 'defined_tags': self.__get_defined_tags(lb['defined_tags']), 'loadbalancer_id': lb['id'], - 'id': lb['id'] - } - self.csv_load_balancer.append(data) - self.__csv_add_service(data, "Load Balancer") - - # listeners - for listener in lb['listeners']: - data = {'region_name': region_name, - 'compartment_name': lb['compartment_name'], - 'compartment_path': lb['compartment_path'], - 'name': lb['display_name'], - 'status': lb['status'], - 'shape': lb['shape_name'], - 'type': ("Private" if lb['is_private'] else "Public"), - 'ip_addresses': str(', '.join(x for x in lb['ips'])), - 'log_errors': log_errors, - 'log_access': log_access, - 'logs': str(', '.join(x['name'] for x in load_balance_obj['logs'])), - 'subnets': str(', '.join(x for x in lb['subnets'])), - 'listener_name': listener['id'], - 'listener_port': listener['port'], - 'listener_def_bs': listener['default_backend_set_name'], - 'listener_ssl': listener['ssl_configuration'], - 'listener_host': str(', '.join(x for x in listener['hostname_names'])), - 'listener_path': listener['path_route_set_name'], - 'listener_rule': str(', '.join(x for x in listener['rule_set_names'])), - 'time_created': lb['time_created'], - 'lb_certificates': lb['certificates'], - 'ssl_cipher_suites': str(', '.join(x for x in lb['ssl_cipher_suites'])), - 'routing_policies': str(', '.join(x for x in lb['routing_policies'])), - 'freeform_tags': self.__get_freeform_tags(lb['freeform_tags']), - 'defined_tags': self.__get_defined_tags(lb['defined_tags']), - 'loadbalancer_id': lb['id'], - 'id': lb['id'] + ":" + listener['id'] - } + 'id': lb['id'] + ":" + listener['id'] + } self.csv_load_balancer_listeners.append(data) except Exception as e: @@ -8738,15 +8812,16 @@ def __csv_network_load_balancer_main(self, region_name, network_load_balancers): 'status': lb['status'], 'time_created': lb['time_created'], 'time_updated': lb['time_updated'], - 'type': ("Private" if lb['is_private'] else "Public"), + 'type': "Private" if lb['is_private'] else "Public", 'is_preserve_source_destination': lb['is_preserve_source_destination'], 'nlb_ip_version': lb['nlb_ip_version'], 'is_symmetric_hash_enabled': lb['is_symmetric_hash_enabled'], 'subnets': lb['subnet_name'], - 'nsg_names': lb['nsg_names'], - 'ip_addresses': str(', '.join(x for x in lb['ips'])), + 'nsg_ids': self.__csv_list_to_str(lb['nsg_ids']), + 'nsg_names': self.__csv_list_to_str(lb['nsg_names']), + 'ip_addresses': self.__csv_list_to_str(lb['ips']), 'loadbalancer_id': lb['id'], - 'listeners': str(', '.join(x['csvname'] for x in lb['listeners'])), + 'listeners': self.__csv_list_to_str(lb['listeners'], 'csvname'), 'freeform_tags': self.__get_freeform_tags(lb['freeform_tags']), 'defined_tags': self.__get_defined_tags(lb['defined_tags']), 'id': lb['id'] @@ -8765,7 +8840,7 @@ def __csv_network_load_balancer_main(self, region_name, network_load_balancers): 'shape': 'Network', 'type': ("Private" if lb['is_private'] else "Public"), 'subnets': lb['subnet_name'], - 'ip_addresses': str(', '.join(x for x in lb['ips'])), + 'ip_addresses': self.__csv_list_to_str(lb['ips']), 'listener_name': listener['id'], 'listener_port': listener['port'], 'listener_def_bs': listener['default_backend_set_name'], @@ -8786,7 +8861,7 @@ def __csv_network_load_balancer_main(self, region_name, network_load_balancers): 'status': lb['status'], 'shape': 'Network Load Balancer', 'type': ("Private" if lb['is_private'] else "Public"), - 'ip_addresses': str(', '.join(x for x in lb['ips'])), + 'ip_addresses': self.__csv_list_to_str(lb['ips']), 'subnets': lb['subnet_name'], 'bs_name': bs['name'], 'bs_desc': bs['name'], @@ -8819,37 +8894,38 @@ def __csv_apigw(self, region_name, apigw): if 'access' in log['name']: log_access = log['name'] - data = {'region_name': region_name, - 'compartment_name': dp['compartment_name'], - 'compartment_path': dp['compartment_path'], - 'gw_name': api['display_name'], - 'gw_endpoint_type': api['endpoint_type'], - 'gw_hostname': api['hostname'], - 'gw_subnet_id': api['subnet_id'], - 'gw_subnet_name': api['subnet_name'], - 'gw_time_created': api['time_created'], - 'gw_time_updated': api['time_updated'], - 'gw_lifecycle_state': api['lifecycle_state'], - 'gw_nsg_ids': api['nsg_ids'], - 'gw_nsg_names': api['nsg_names'], - 'gw_certificate_id': api['certificate_id'], - 'gw_freeform_tags': self.__get_freeform_tags(api['freeform_tags']), - 'gw_defined_tags': self.__get_defined_tags(api['defined_tags']), - 'dp_display_name': dp['display_name'], - 'path_prefix': dp['path_prefix'], - 'endpoint': dp['endpoint'], - 'lifecycle_state': dp['lifecycle_state'], - 'time_created': dp['time_created'], - 'time_updated': dp['time_updated'], - 'freeform_tags': self.__get_freeform_tags(dp['freeform_tags']), - 'defined_tags': self.__get_defined_tags(dp['defined_tags']), - 'log_execution': log_execution, - 'log_access': log_access, - 'logs': str(', '.join(x['name'] for x in dp['logs'])), - 'dp_id': dp['id'], - 'api_id': api['id'], - 'id': api['id'] - } + data = { + 'region_name': region_name, + 'compartment_name': dp['compartment_name'], + 'compartment_path': dp['compartment_path'], + 'gw_name': api['display_name'], + 'gw_endpoint_type': api['endpoint_type'], + 'gw_hostname': api['hostname'], + 'gw_subnet_id': api['subnet_id'], + 'gw_subnet_name': api['subnet_name'], + 'gw_time_created': api['time_created'], + 'gw_time_updated': api['time_updated'], + 'gw_lifecycle_state': api['lifecycle_state'], + 'gw_nsg_ids': self.__csv_list_to_str(api['nsg_ids']), + 'gw_nsg_names': api['nsg_names'], + 'gw_certificate_id': api['certificate_id'], + 'gw_freeform_tags': self.__get_freeform_tags(api['freeform_tags']), + 'gw_defined_tags': self.__get_defined_tags(api['defined_tags']), + 'dp_display_name': dp['display_name'], + 'path_prefix': dp['path_prefix'], + 'endpoint': dp['endpoint'], + 'lifecycle_state': dp['lifecycle_state'], + 'time_created': dp['time_created'], + 'time_updated': dp['time_updated'], + 'freeform_tags': self.__get_freeform_tags(dp['freeform_tags']), + 'defined_tags': self.__get_defined_tags(dp['defined_tags']), + 'log_execution': log_execution, + 'log_access': log_access, + 'logs': self.__csv_list_to_str(dp['logs'], 'name'), + 'dp_id': dp['id'], + 'api_id': api['id'], + 'id': api['id'] + } self.csv_apigw.append(data) self.__csv_add_service(data, "API Gateway", col_name="gw_name") @@ -8880,27 +8956,28 @@ def __csv_load_balancer_backendset(self, region_name, load_balance_obj): if 'desc' in bs['ssl_cert']: ssl_cert = bs['ssl_cert']['desc'] - data = {'region_name': region_name, - 'compartment_name': lb['compartment_name'], - 'compartment_path': lb['compartment_path'], - 'name': lb['display_name'], - 'status': lb['status'], - 'shape': lb['shape_name'], - 'type': ("Private" if lb['is_private'] else "Public"), - 'ip_addresses': str(', '.join(x for x in lb['ips'])), - 'subnets': str(', '.join(x for x in lb['subnets'])), - 'bs_name': bs['name'], - 'bs_desc': bs['desc'], - 'bs_status': bs['status'], - 'health_check': bs['health_check']['desc1'] + " " + bs['health_check']['desc2'], - 'session_persistence': session_persistence, - 'ssl_cert': ssl_cert, - 'backend_name': backend['name'], - 'backend': backend['desc'], - 'backend_ip': backend['ip_address'] + ":" + backend['port'], - 'loadbalancer_id': lb['id'], - 'id': lb['id'] + ":" + bs['name'] + ":" + backend['name'] + ":" + backend['ip_address'] + ":" + backend['port'] - } + data = { + 'region_name': region_name, + 'compartment_name': lb['compartment_name'], + 'compartment_path': lb['compartment_path'], + 'name': lb['display_name'], + 'status': lb['status'], + 'shape': lb['shape_name'], + 'type': ("Private" if lb['is_private'] else "Public"), + 'ip_addresses': self.__csv_list_to_str(lb['ips']), + 'subnets': self.__csv_list_to_str(lb['subnets']), + 'bs_name': bs['name'], + 'bs_desc': bs['desc'], + 'bs_status': bs['status'], + 'health_check': bs['health_check']['desc1'] + " " + bs['health_check']['desc2'], + 'session_persistence': session_persistence, + 'ssl_cert': ssl_cert, + 'backend_name': backend['name'], + 'backend': backend['desc'], + 'backend_ip': backend['ip_address'] + ":" + backend['port'], + 'loadbalancer_id': lb['id'], + 'id': lb['id'] + ":" + bs['name'] + ":" + backend['name'] + ":" + backend['ip_address'] + ":" + backend['port'] + } self.csv_load_balancer_bs.append(data) except Exception as e: @@ -8958,7 +9035,7 @@ def __csv_file_storage_main(self, region_name, file_storage): ex_mount_target = ex['mount_target'] if ex_mount_target: for mnt in ex_mount_target: - ip_to_add = str(','.join(x for x in mnt['private_ip_ids'])) + ip_to_add = self.__csv_list_to_str(mnt['private_ip_ids']) if ip_to_add not in mount_ips: mount_ips += ip_to_add + "," @@ -8975,7 +9052,7 @@ def __csv_file_storage_main(self, region_name, file_storage): 'exports': exports, 'export_options': options, 'mount_ips': mount_ips, - 'snapshots': str(','.join(x for x in fs['snapshots'])), + 'snapshots': self.__csv_list_to_str(fs['snapshots']), 'freeform_tags': self.__get_freeform_tags(fs['freeform_tags']), 'defined_tags': self.__get_defined_tags(fs['defined_tags']) } @@ -9023,7 +9100,7 @@ def __csv_object_storage_main(self, region_name, object_storage): 'error_message': ar['error_message'], 'freeform_tags': self.__get_freeform_tags(ar['freeform_tags']), 'defined_tags': self.__get_defined_tags(ar['defined_tags']), - 'logs': str(', '.join(x['name'] for x in ar['logs'])) + 'logs': self.__csv_list_to_str(ar['logs'], 'name') } self.csv_object_storage_buckets.append(data) @@ -9296,8 +9373,8 @@ def __csv_security_cloud_guard(self, region_name, cloud_guards): 'target_resource_name': ar['target_resource_name'], 'inherited_by_compartments': ar['inherited_by_compartments'], 'inherited_by_compartments_names': ar['inherited_by_compartments_names'], - 'target_detector_recipes': str(', '.join(x['display_name'] for x in ar['target_detector_recipes'])), - 'target_responder_recipes': str(', '.join(x['display_name'] for x in ar['target_responder_recipes'])), + 'target_detector_recipes': self.__csv_list_to_str(ar['target_detector_recipes'], 'display_name'), + 'target_responder_recipes': self.__csv_list_to_str(ar['target_responder_recipes'], 'display_name'), 'target_detector_rules': "", 'target_responder_rules': "", 'recipe_count': ar['recipe_count'], @@ -9315,7 +9392,7 @@ def __csv_security_cloud_guard(self, region_name, cloud_guards): for dt in ar['target_detector_recipes']: for rule in dt['effective_detector_rules']: arrrules.append(rule) - data['target_detector_rules'] = str(', '.join(x for x in list(set(arrrules)))) + data['target_detector_rules'] = self.__csv_list_to_str(list(set(arrrules))) # target_detector_rules if ar['target_responder_recipes']: @@ -9323,7 +9400,7 @@ def __csv_security_cloud_guard(self, region_name, cloud_guards): for dt in ar['target_responder_recipes']: for rule in dt['effective_responder_rules']: arrrules.append(rule) - data['target_responder_rules'] = str(', '.join(x for x in list(set(arrrules)))) + data['target_responder_rules'] = self.__csv_list_to_str(list(set(arrrules))) self.csv_security_cloud_guard.append(data) @@ -9466,7 +9543,7 @@ def __csv_container(self, region_name, containers): 'kubernetes_version': ar['kubernetes_version'], 'compartment_id': ar['compartment_id'], 'endpoint_is_public_ip_enabled': ar['endpoint_is_public_ip_enabled'], - 'endpoint_nsg_ids': ar['endpoint_nsg_ids'], + 'endpoint_nsg_ids': self.__csv_list_to_str(ar['endpoint_nsg_ids']), 'endpoint_nsg_names': ar['endpoint_nsg_names'], 'endpoint_subnet_id': ar['endpoint_subnet_id'], 'endpoint_subnet_name': ar['endpoint_subnet_name'], @@ -9517,8 +9594,8 @@ def __csv_container(self, region_name, containers): 'freeform_tags': self.__get_freeform_tags(nd['freeform_tags']), 'defined_tags': self.__get_defined_tags(nd['defined_tags']), 'vcn': ar['vcn_name'], - 'subnets': str(', '.join(x for x in nd['subnets'])), - 'subnet_ids': str(', '.join(x for x in nd['subnet_ids'])), + 'subnets': self.__csv_list_to_str(nd['subnets']), + 'subnet_ids': self.__csv_list_to_str(nd['subnet_ids']), 'container_id': ar['id'], 'node_pool_id': nd['id'], 'vcn_id': ar['vcn_id'], @@ -9841,15 +9918,16 @@ def __csv_functions(self, region_name, functions_apps): 'compartment_path': ar['compartment_path'], 'name': ar['display_name'], 'lifecycle_state': ar['lifecycle_state'], - 'subnets': str(', '.join(x for x in ar['subnets'])), + 'subnets': self.__csv_list_to_str(ar['subnets']), 'network_security_group_names': ar['network_security_group_names'], + 'network_security_group_ids': self.__csv_list_to_str(ar['network_security_group_ids']), 'shape': ar['shape'], 'trace_config_is_enabled': ar['trace_config_is_enabled'], 'trace_config_domain_id': ar['trace_config_domain_id'], 'image_policy_is_enabled': ar['image_policy_is_enabled'], 'time_created': ar['time_created'], 'time_updated': ar['time_updated'], - 'functions': str(', '.join(x['display_name'] for x in ar['functions'])), + 'functions': self.__csv_list_to_str(ar['functions'], 'display_name'), 'freeform_tags': self.__get_freeform_tags(ar['freeform_tags']), 'defined_tags': self.__get_defined_tags(ar['defined_tags']), 'id': ar['id'] @@ -9866,8 +9944,9 @@ def __csv_functions(self, region_name, functions_apps): 'app_name': ar['display_name'], 'name': fn['display_name'], 'lifecycle_state': fn['lifecycle_state'], - 'subnets': str(', '.join(x for x in ar['subnets'])), + 'subnets': self.__csv_list_to_str(ar['subnets']), 'network_security_group_names': ar['network_security_group_names'], + 'network_security_group_ids': self.__csv_list_to_str(ar['network_security_group_ids']), 'shape': fn['shape'], 'image': fn['image'], 'image_digest': fn['image_digest'], @@ -10140,7 +10219,7 @@ def __csv_paas_ocvs(self, region_name, services): 'time_updated': ar['time_updated'], 'lifecycle_state': ar['lifecycle_state'], 'cluster_query_error': ar['cluster_query_error'], - 'clusters': str(', '.join(x['display_name'] for x in ar['clusters'])), + 'clusters': self.__csv_list_to_str(ar['clusters'], 'display_name'), 'freeform_tags': self.__get_freeform_tags(ar['freeform_tags']), 'defined_tags': self.__get_defined_tags(ar['defined_tags']), 'info': "ocpus:" + str(ar['sddc_ocpus']), @@ -10641,8 +10720,8 @@ def __csv_monitor_alarms(self, region_name, alarms): 'namespace': ar['namespace'], 'query': ar['query'], 'severity': ar['severity'], - 'destinations': str(', '.join(x for x in ar['destinations'])), - 'destinations_names': str(', '.join(x for x in ar['destinations_names'])), + 'destinations': self.__csv_list_to_str(ar['destinations']), + 'destinations_names': self.__csv_list_to_str(ar['destinations_names']), 'is_enabled': ar['is_enabled'], 'freeform_tags': self.__get_freeform_tags(ar['freeform_tags']), 'defined_tags': self.__get_defined_tags(ar['defined_tags']), diff --git a/examples/showoci/showoci_service.py b/examples/showoci/showoci_service.py index 4c7369f411..58e71027aa 100644 --- a/examples/showoci/showoci_service.py +++ b/examples/showoci/showoci_service.py @@ -39,7 +39,7 @@ # class ShowOCIService ########################################################################## class ShowOCIService(object): - version = "24.11.12" + version = "24.12.10" oci_compatible_version = "2.129.4" thread_lock = threading.Lock() collection_ljust = 40 @@ -798,6 +798,20 @@ def get_value(self, in_value, trim_date=False): except Exception as e: self.__print_error(e) + ################################################################################## + # get values + ################################################################################## + def get_values(self, v): + try: + if v is None: + return [] + n = [] + for x in v: + n.append(self.get_value(x)) + return n + except Exception as e: + self.__print_error(e) + ########################################################################## # get tenancy id from file or override ########################################################################## @@ -1627,7 +1641,7 @@ def __load_section_identity_main(self): # if to read users and groups from the old APIs if self.flags.read_identity_old: - print("\nIdentity Old API (Users and Groups) as requesed...") + print("\nIdentity Old API (Users and Groups) as requested...") self.__load_identity_users_groups(identity, tenancy_id) self.__load_identity_dynamic_groups(identity, tenancy_id) self.__load_identity_providers(identity, tenancy_id) @@ -1803,7 +1817,7 @@ def build_compartments_nested(identity_client, cid, path): 'id': str(c.id), 'name': str(c.name), 'description': self.get_value(c.description), - 'time_created': self.get_value(c.time_created), + 'time_created': self.get_date(c.time_created), 'is_accessible': self.get_value(c.is_accessible), 'lifecycle_state': self.get_value(c.lifecycle_state), 'inactive_status': self.get_value(c.inactive_status), @@ -1828,7 +1842,7 @@ def build_compartments_nested(identity_client, cid, path): 'id': str(tenc.id), 'name': str(tenc.name), 'description': self.get_value(tenc.description), - 'time_created': self.get_value(tenc.time_created), + 'time_created': self.get_date(tenc.time_created), 'is_accessible': self.get_value(tenc.is_accessible), 'lifecycle_state': 'ACTIVE', 'inactive_status': "", @@ -1909,7 +1923,7 @@ def __load_identity_single_compartments(self, identity): 'id': str(compartment.id), 'name': str(compartment.name), 'description': self.get_value(compartment.description), - 'time_created': self.get_value(compartment.time_created), + 'time_created': self.get_date(compartment.time_created), 'is_accessible': self.get_value(compartment.is_accessible), 'lifecycle_state': self.get_value(compartment.lifecycle_state), 'inactive_status': self.get_value(compartment.inactive_status), @@ -2019,7 +2033,7 @@ def __load_identity_users_groups(self, identity, tenancy_id): 'is_mfa_activated': self.get_value(user.is_mfa_activated), 'lifecycle_state': self.get_value(user.lifecycle_state), 'inactive_status': self.get_value(user.inactive_status), - 'time_created': self.get_value(user.time_created), + 'time_created': self.get_date(user.time_created), 'identity_provider_id': "", 'identity_provider_name': "", 'email': self.get_value(user.email), @@ -2094,7 +2108,7 @@ def __load_identity_user_credentials_apikey(self, identity, user): 'id': api_key.key_id, 'inactive_status': self.get_value(api_key.inactive_status), 'lifecycle_state': self.get_value(api_key.lifecycle_state), - 'time_created': self.get_value(api_key.time_created) + 'time_created': self.get_date(api_key.time_created) }) # return the data @@ -2138,7 +2152,7 @@ def __load_identity_user_credentials_token(self, identity, user): 'description': token.description, 'lifecycle_state': self.get_value(token.lifecycle_state), 'inactive_status': self.get_value(token.inactive_status), - 'time_created': self.get_value(token.time_created), + 'time_created': self.get_date(token.time_created), 'time_expires': self.get_value(token.time_expires), 'token': token.token }) @@ -2181,7 +2195,7 @@ def __load_identity_user_credentials_secret(self, identity, user): 'display_name': secret.display_name, 'lifecycle_state': self.get_value(secret.lifecycle_state), 'inactive_status': self.get_value(secret.inactive_status), - 'time_created': self.get_value(secret.time_created), + 'time_created': self.get_date(secret.time_created), 'time_expires': self.get_value(secret.time_expires) }) return datausersecretkey @@ -2222,8 +2236,8 @@ def __load_identity_user_credentials_smtp(self, identity, user): 'description': smtp_creds.description, 'lifecycle_state': self.get_value(smtp_creds.lifecycle_state), 'inactive_status': self.get_value(smtp_creds.inactive_status), - 'time_created': self.get_value(smtp_creds.time_created), - 'time_expires': self.get_value(smtp_creds.time_expires), + 'time_created': self.get_date(smtp_creds.time_created), + 'time_expires': self.get_date(smtp_creds.time_expires), 'username': smtp_creds.username }) @@ -2348,7 +2362,7 @@ def __load_identity_providers(self, identity, tenancy_id): 'domain_name': "", 'oci_group_id': self.get_value(ig.group_id), 'oci_group_name': "", - 'time_created': self.get_value(ig.time_created, trim_date=True), + 'time_created': self.get_date(ig.time_created), 'lifecycle_state': self.get_value(ig.lifecycle_state) }) @@ -2510,7 +2524,7 @@ def __load_identity_network_sources(self, identity, tenancy_id): 'virtual_source_list': vcn_list, 'public_source_list': ns.public_source_list, 'services': ns.services, - 'time_created': self.get_value(ns.time_created, trim_date=True), + 'time_created': self.get_date(ns.time_created), 'defined_tags': [] if ns.defined_tags is None else ns.defined_tags, 'freeform_tags': [] if ns.freeform_tags is None else ns.freeform_tags }) @@ -2560,7 +2574,7 @@ def __load_identity_cost_tracking_tags(self, identity, tenancy_id): 'name': str(tag.name), 'description': self.get_value(tag.description), 'is_retired': self.get_value(tag.is_retired), - 'time_created': self.get_value(tag.time_created), + 'time_created': self.get_date(tag.time_created), 'is_cost_tracking': self.get_value(tag.is_cost_tracking) } data.append(dataval) @@ -2619,7 +2633,7 @@ def __load_identity_tag_namespace(self, identity): 'description': self.get_value(tag.description), 'is_retired': self.get_value(tag.is_retired), 'lifecycle_state': self.get_value(tag.lifecycle_state), - 'time_created': self.get_value(tag.time_created), + 'time_created': self.get_date(tag.time_created), 'defined_tags': [] if tag.defined_tags is None else tag.defined_tags, 'freeform_tags': [] if tag.freeform_tags is None else tag.freeform_tags } @@ -2992,7 +3006,7 @@ def __load_core_network_vcn(self, virtual_network, compartments): 'default_route_table_id': self.get_value(vcn.default_route_table_id), 'default_security_list_id': self.get_value(vcn.default_security_list_id), 'dns_label': self.get_value(vcn.dns_label), - 'time_created': self.get_value(vcn.time_created), + 'time_created': self.get_date(vcn.time_created), 'vcn_domain_name': self.get_value(vcn.vcn_domain_name), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), @@ -3062,25 +3076,27 @@ def __load_core_network_vlan(self, virtual_network, compartments): continue for vlan in vlans: - val = {'id': str(vlan.id), - 'vlan': str(vlan.vlan_tag) + " - " + str(vlan.cidr_block) + " - " + str(vlan.display_name), - 'availability_domain': self.get_value(vlan.availability_domain), - 'cidr_block': self.get_value(vlan.cidr_block), - 'vlan_tag': self.get_value(vlan.vlan_tag), - 'display_name': self.get_value(vlan.display_name), - 'time_created': self.get_value(vlan.time_created), - 'lifecycle_state': self.get_value(vlan.lifecycle_state), - 'nsg_ids': vlan.nsg_ids, - 'route_table_id': self.get_value(vlan.route_table_id), - 'vcn_id': self.get_value(vlan.vcn_id), - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'compartment_id': str(compartment['id']), - 'defined_tags': [] if vlan.defined_tags is None else vlan.defined_tags, - 'freeform_tags': [] if vlan.freeform_tags is None else vlan.freeform_tags, - 'region_name': str(self.config['region']) - } + val = { + 'id': self.get_value(vlan.id), + 'vlan': f'{str(vlan.vlan_tag)} - {str(vlan.cidr_block)} - {str(vlan.display_name)}', + 'availability_domain': self.get_value(vlan.availability_domain), + 'cidr_block': self.get_value(vlan.cidr_block), + 'vlan_tag': self.get_value(vlan.vlan_tag), + 'display_name': self.get_value(vlan.display_name), + 'time_created': self.get_date(vlan.time_created), + 'lifecycle_state': self.get_value(vlan.lifecycle_state), + 'nsg_ids': self.get_values(vlan.nsg_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(vlan.nsg_ids), + 'route_table_id': self.get_value(vlan.route_table_id), + 'vcn_id': self.get_value(vlan.vcn_id), + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'compartment_id': str(compartment['id']), + 'defined_tags': [] if vlan.defined_tags is None else vlan.defined_tags, + 'freeform_tags': [] if vlan.freeform_tags is None else vlan.freeform_tags, + 'region_name': str(self.config['region']) + } data.append(val) cnt += 1 @@ -3151,7 +3167,7 @@ def __load_core_network_igw(self, virtual_network, compartments): 'name': str(igw.display_name), 'is_enabled': self.get_value(igw.is_enabled), 'route_table_id': self.get_value(igw.route_table_id), - 'time_created': self.get_value(igw.time_created), + 'time_created': self.get_date(igw.time_created), 'defined_tags': [] if igw.defined_tags is None else igw.defined_tags, 'freeform_tags': [] if igw.freeform_tags is None else igw.freeform_tags, 'compartment_name': str(compartment['name']), @@ -3232,7 +3248,7 @@ def __load_core_network_lpg(self, virtual_network, compartments): 'vcn_id': str(lpg.vcn_id), 'name': str(lpg.peering_status).ljust(8) + " - " + str(lpg.display_name) + str(cidr), 'peering_status': self.get_value(lpg.peering_status), - 'time_created': self.get_value(lpg.time_created), + 'time_created': self.get_date(lpg.time_created), 'display_name': self.get_value(lpg.display_name), 'peer_advertised_cidr': self.get_value(lpg.peer_advertised_cidr), 'is_cross_tenancy_peering': self.get_value(lpg.is_cross_tenancy_peering), @@ -3314,7 +3330,7 @@ def __load_core_network_rpc(self, virtual_network, compartments): val = {'id': str(rpc.id), 'peer_id': str(rpc.peer_id), 'drg_id': self.get_value(rpc.drg_id), 'name': self.get_value(rpc.display_name), - 'time_created': self.get_value(rpc.time_created), + 'time_created': self.get_date(rpc.time_created), 'is_cross_tenancy_peering': str(rpc.is_cross_tenancy_peering), 'peer_region_name': self.get_value(rpc.peer_region_name), 'peer_tenancy_id': self.get_value(rpc.peer_tenancy_id), @@ -3515,7 +3531,7 @@ def __load_core_network_dhcpop(self, virtual_network, compartments): val = {'id': str(dhcp.id), 'vcn_id': self.get_value(dhcp.vcn_id), 'name': self.get_value(dhcp.display_name), - 'time_created': self.get_value(dhcp.time_created), + 'time_created': self.get_date(dhcp.time_created), 'options': dhcp_opt, 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), @@ -3753,7 +3769,7 @@ def __load_core_network_seclst(self, virtual_network, compartments): 'id': self.get_value(sl.id), 'vcn_id': self.get_value(sl.vcn_id), 'name': self.get_value(sl.display_name), - 'time_created': self.get_value(sl.time_created, trim_date=True), + 'time_created': self.get_date(sl.time_created), 'sec_rules': sec_rules, 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), @@ -3829,7 +3845,7 @@ def __load_core_network_nsg_secrule(self, security_rule): 'is_valid': self.get_value(security_rule.is_valid), 'protocol': self.get_value(security_rule.protocol), 'protocol_name': protocol_name, - 'time_created': self.get_value(security_rule.time_created), + 'time_created': self.get_date(security_rule.time_created), 'src_port_min': "", 'src_port_max': "", 'dst_port_min': "", @@ -3998,18 +4014,20 @@ def __load_core_network_nsg(self, virtual_network, compartments): # loop on array # arr = oci.core.models.NetworkSecurityGroup for arr in arrs: - val = {'id': str(arr.id), - 'name': self.get_value(arr.display_name), - 'vcn_id': self.get_value(arr.vcn_id), - 'time_created': self.get_value(arr.time_created), - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, - 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, - 'compartment_id': str(compartment['id']), - 'region_name': str(self.config['region']), - 'sec_rules': [] - } + val = { + 'id': str(arr.id), + 'name': self.get_value(arr.display_name), + 'vcn_id': self.get_value(arr.vcn_id), + 'time_created': self.get_date(arr.time_created), + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, + 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, + 'compartment_id': str(compartment['id']), + 'region_name': str(self.config['region']), + 'sec_rules': [], + 'vnics': [] + } # loop on NSG arrsecs = [] @@ -4038,6 +4056,34 @@ def __load_core_network_nsg(self, virtual_network, compartments): for arrsec in arrsecs: val['sec_rules'].append(self.__load_core_network_nsg_secrule(arrsec)) + # loop on NSG to obtain VNICs, Added 12/01/2024 + vnics = [] + try: + vnics = oci.pagination.list_call_get_all_results( + virtual_network.list_network_security_group_vnics, + arr.id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + except oci.exceptions.ServiceError as e: + if self.__check_service_error(e, compartment): + self.__load_print_auth_warning("p", False, to_print=self.flags.skip_threads) + errstr += "n" + else: + self.__load_print_error(e, compartment) + errstr += "e" + continue + except Exception as e: + self.__load_print_error(e, compartment) + errstr += "e" + continue + + for vnic in vnics: + val['vnics'].append({ + 'resource_id': self.get_value(vnic.resource_id), + 'time_associated': self.get_date(vnic.time_associated), + 'vnic_id': self.get_value(vnic.vnic_id) + }) + data.append(val) cnt += 1 @@ -4115,7 +4161,7 @@ def __load_core_network_subnet(self, virtual_network, compartments): 'subnet': (str(subnet.cidr_block) + " " + availability_domain + (" (Private) " if subnet.prohibit_public_ip_on_vnic else " (Public)")), 'availability_domain': availability_domain, 'public_private': ("Private" if subnet.prohibit_public_ip_on_vnic else "Public"), - 'time_created': self.get_value(subnet.time_created), + 'time_created': self.get_date(subnet.time_created), 'security_list_ids': [str(es) for es in subnet.security_list_ids], 'dhcp_options_id': self.get_value(subnet.dhcp_options_id), 'route_table_id': self.get_value(subnet.route_table_id), @@ -4226,7 +4272,7 @@ def __load_core_network_subnet_private_ip(self, virtual_network, subnets): 'is_primary': self.get_value(ip.is_primary), 'vlan_id': self.get_value(ip.vlan_id), 'subnet_id': self.get_value(ip.subnet_id), - 'time_created': self.get_value(ip.time_created)[0:16], + 'time_created': self.get_date(ip.time_created), 'vnic_id': self.get_value(ip.vnic_id), 'defined_tags': [] if ip.defined_tags is None else ip.defined_tags, 'freeform_tags': [] if ip.freeform_tags is None else ip.freeform_tags, @@ -4303,19 +4349,21 @@ def __load_core_network_sgw(self, virtual_network, compartments): # loop on all sgws # sgw = oci.core.models.ServiceGateway for sgw in sgws: - val = {'id': str(sgw.id), - 'vcn_id': self.get_value(sgw.vcn_id), - 'name': self.get_value(sgw.display_name), - 'time_created': self.get_value(sgw.time_created), - 'block_traffic': self.get_value(sgw.block_traffic), - 'route_table_id': self.get_value(sgw.route_table_id), - 'services': str(', '.join(x.service_name for x in sgw.services)), - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'compartment_id': str(compartment['id']), - 'defined_tags': [] if sgw.defined_tags is None else sgw.defined_tags, - 'freeform_tags': [] if sgw.freeform_tags is None else sgw.freeform_tags, - 'region_name': str(self.config['region'])} + val = { + 'id': str(sgw.id), + 'vcn_id': self.get_value(sgw.vcn_id), + 'name': self.get_value(sgw.display_name), + 'time_created': self.get_date(sgw.time_created), + 'block_traffic': self.get_value(sgw.block_traffic), + 'route_table_id': self.get_value(sgw.route_table_id), + 'services': str(', '.join(x.service_name for x in sgw.services)), + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'compartment_id': str(compartment['id']), + 'defined_tags': [] if sgw.defined_tags is None else sgw.defined_tags, + 'freeform_tags': [] if sgw.freeform_tags is None else sgw.freeform_tags, + 'region_name': str(self.config['region']) + } data.append(val) cnt += 1 @@ -4386,7 +4434,7 @@ def __load_core_network_nat(self, virtual_network, compartments): # nat = oci.core.models.NatGateway. for nat in natgws: val = {'id': str(nat.id), 'vcn_id': str(nat.vcn_id), 'name': str(nat.display_name) + " - " + str(nat.nat_ip), - 'time_created': self.get_value(nat.time_created), + 'time_created': self.get_date(nat.time_created), 'block_traffic': self.get_value(nat.block_traffic), 'nat_ip': self.get_value(nat.nat_ip), 'display_name': str(nat.display_name), @@ -4466,10 +4514,10 @@ def __load_core_network_dra(self, virtual_network, compartments): for arr in arrs: if arr.lifecycle_state == oci.core.models.DrgAttachment.LIFECYCLE_STATE_ATTACHED: val = { - 'id': str(arr.id), + 'id': self.get_value(arr.id), 'vcn_id': self.get_value(arr.vcn_id), 'drg_id': self.get_value(arr.drg_id), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'display_name': self.get_value(arr.display_name), 'is_cross_tenancy': self.get_value(arr.is_cross_tenancy), 'export_drg_route_distribution_id': self.get_value(arr.export_drg_route_distribution_id), @@ -4566,7 +4614,7 @@ def __load_core_network_drg(self, virtual_network, compartments): if arr.lifecycle_state == oci.core.models.Drg.LIFECYCLE_STATE_AVAILABLE: val = {'id': str(arr.id), 'name': str(arr.display_name), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'redundancy': "", 'drg_route_tables': [], 'default_export_drg_route_distribution_id': self.get_value(arr.default_export_drg_route_distribution_id), @@ -4602,7 +4650,7 @@ def __load_core_network_drg(self, virtual_network, compartments): 'id': str(rt.id), 'drg_id': str(arr.id), 'display_name': self.get_value(rt.display_name), - 'time_created': self.get_value(rt.time_created), + 'time_created': self.get_date(rt.time_created), 'route_rules': self.__load_core_network_drg_route_rules(virtual_network, rt.id), 'import_drg_route_distribution_id': self.get_value(rt.import_drg_route_distribution_id), 'is_ecmp_enabled': str(rt.is_ecmp_enabled), @@ -4745,19 +4793,20 @@ def __load_core_network_cpe(self, virtual_network, compartments): # loop on array # arr = oci.core.models.Cpe for arr in arrs: - val = {'id': str(arr.id), - 'name': self.get_value(arr.display_name) + " - " + self.get_value(arr.ip_address), - 'display_name': self.get_value(arr.display_name), - 'ip_address': self.get_value(arr.ip_address), - 'time_created': self.get_value(arr.time_created), - 'cpe_device_shape_id': self.get_value(arr.cpe_device_shape_id), - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, - 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, - 'compartment_id': str(compartment['id']), - 'region_name': str(self.config['region']) - } + val = { + 'id': str(arr.id), + 'name': self.get_value(arr.display_name) + " - " + self.get_value(arr.ip_address), + 'display_name': self.get_value(arr.display_name), + 'ip_address': self.get_value(arr.ip_address), + 'time_created': self.get_date(arr.time_created), + 'cpe_device_shape_id': self.get_value(arr.cpe_device_shape_id), + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, + 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, + 'compartment_id': str(compartment['id']), + 'region_name': str(self.config['region']) + } data.append(val) cnt += 1 @@ -4826,26 +4875,27 @@ def __load_core_network_firewall(self, network_firewall_client, compartments): if not self.check_lifecycle_state_active(arr.lifecycle_state): continue - val = {'id': str(arr.id), - 'name': str(arr.display_name) + " - " + str(arr.ipv4_address), - 'display_name': self.get_value(arr.display_name), - 'subnet_id': self.get_value(arr.subnet_id), - 'subnet_name': "" if arr.subnet_id is None else self.get_network_subnet(arr.subnet_id, True), - 'availability_domain': self.get_value(arr.availability_domain), - 'ipv4_address': self.get_value(arr.ipv4_address), - 'ipv6_address': self.get_value(arr.ipv6_address), - 'network_firewall_policy_id': self.get_value(arr.network_firewall_policy_id), - 'network_firewall_policy_name': "", - 'time_created': self.get_value(arr.time_created), - 'time_updated': self.get_value(arr.time_updated), - 'lifecycle_state': self.get_value(arr.lifecycle_state), - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, - 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, - 'compartment_id': str(compartment['id']), - 'region_name': str(self.config['region']) - } + val = { + 'id': str(arr.id), + 'name': str(arr.display_name) + " - " + str(arr.ipv4_address), + 'display_name': self.get_value(arr.display_name), + 'subnet_id': self.get_value(arr.subnet_id), + 'subnet_name': "" if arr.subnet_id is None else self.get_network_subnet(arr.subnet_id, True), + 'availability_domain': self.get_value(arr.availability_domain), + 'ipv4_address': self.get_value(arr.ipv4_address), + 'ipv6_address': self.get_value(arr.ipv6_address), + 'network_firewall_policy_id': self.get_value(arr.network_firewall_policy_id), + 'network_firewall_policy_name': "", + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), + 'lifecycle_state': self.get_value(arr.lifecycle_state), + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, + 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, + 'compartment_id': str(compartment['id']), + 'region_name': str(self.config['region']) + } # get name of the policy nwfpolicy = self.search_unique_item(self.C_NETWORK, self.C_NETWORK_FIREWALL_POLICY, 'id', arr.network_firewall_policy_id) @@ -4922,8 +4972,8 @@ def __load_core_network_firewall_policy(self, network_firewall_client, compartme val = {'id': str(arr.id), 'display_name': str(arr.display_name), - 'time_created': self.get_value(arr.time_created), - 'time_updated': self.get_value(arr.time_updated), + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), 'lifecycle_state': self.get_value(arr.lifecycle_state), 'compartment_id': str(compartment['id']), 'compartment_name': str(compartment['name']), @@ -5065,7 +5115,7 @@ def __load_core_network_privateip(self, virtual_network, routes): continue val = {'id': str(arr.id), 'name': str(arr.ip_address) + " - " + str(arr.display_name), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'availability_domain': self.get_value(arr.availability_domain), 'hostname_label': self.get_value(arr.hostname_label), 'is_primary': self.get_value(arr.is_primary), @@ -5172,7 +5222,7 @@ def __load_core_network_vc(self, virtual_network, compartments): 'reference_comment': self.get_value(arr.reference_comment), 'service_type': self.get_value(arr.service_type), 'cross_connect_mappings': data_cc, - 'type': self.get_value(arr.type), 'time_created': self.get_value(arr.time_created), + 'type': self.get_value(arr.type), 'time_created': self.get_date(arr.time_created), 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), 'compartment_path': str(compartment['path']), @@ -5276,7 +5326,7 @@ def __load_core_network_ips(self, virtual_network, compartments): 'routing': self.get_value(tunnel.routing), 'cpe_ip': self.get_value(tunnel.cpe_ip), 'vpn_ip': self.get_value(tunnel.vpn_ip), - 'time_created': self.get_value(tunnel.time_created), + 'time_created': self.get_date(tunnel.time_created), 'oracle_can_initiate': self.get_value(tunnel.oracle_can_initiate), 'nat_translation_enabled': self.get_value(tunnel.nat_translation_enabled), 'dpd_mode': self.get_value(tunnel.dpd_mode), @@ -5343,7 +5393,7 @@ def __load_core_network_ips(self, virtual_network, compartments): 'cpe_local_identifier': self.get_value(arr.cpe_local_identifier), 'cpe_local_identifier_type': self.get_value(arr.cpe_local_identifier_type), 'cpe_id': self.get_value(arr.cpe_id), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), 'compartment_path': str(compartment['path']), @@ -5702,7 +5752,7 @@ def __load_core_compute_instances(self, compute, compartments, plugin_client): 'lifecycle_state': self.get_value(arr.lifecycle_state), 'availability_domain': self.get_value(arr.availability_domain), 'fault_domain': self.get_value(arr.fault_domain), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'time_maintenance_reboot_due': self.get_value(arr.time_maintenance_reboot_due), 'image_id': self.get_value(arr.image_id), 'compartment_name': str(compartment['name']), @@ -5741,6 +5791,7 @@ def __load_core_compute_instances(self, compute, compartments, plugin_client): 'launch_remote_data_volume_type': '', 'launch_is_pv_encryption_in_transit_enabled': '', 'launch_is_consistent_volume_naming_enabled': '', + 'are_legacy_imds_endpoints_disabled': '', 'platform_type': '', 'platform_is_secure_boot_enabled': '', 'platform_is_trusted_platform_module_enabled': '', @@ -6009,7 +6060,7 @@ def __load_core_compute_capacity_reservation(self, compute_client, compartments) 'lifecycle_state': self.get_value(arr.lifecycle_state), 'availability_domain': self.get_value(arr.availability_domain), 'is_default_reservation': self.get_value(arr.is_default_reservation), - 'time_created': str(arr.time_created)[0:16], + 'time_created': self.get_date(arr.time_created), 'reserved_instance_count': arr.reserved_instance_count, 'used_instance_count': arr.used_instance_count, 'instances': [], @@ -6545,7 +6596,7 @@ def __load_core_compute_boot_vol_attach(self, compute, compartments): 'boot_volume_id': str(arr.boot_volume_id), 'instance_id': str(arr.instance_id), 'lifecycle_state': self.get_value(arr.lifecycle_state), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'is_pv_encryption_in_transit_enabled': self.get_value(arr.is_pv_encryption_in_transit_enabled), 'encryption_in_transit_type': self.get_value(arr.encryption_in_transit_type), 'compartment_name': str(compartment['name']), @@ -6620,7 +6671,7 @@ def __load_core_compute_vol_attach(self, compute, compartments): 'volume_id': self.get_value(arr.volume_id), 'instance_id': self.get_value(arr.instance_id), 'lifecycle_state': self.get_value(arr.lifecycle_state), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'attachment_type': self.get_value(arr.attachment_type), 'device': self.get_value(arr.device), 'is_read_only': self.get_value(arr.is_read_only), @@ -6652,64 +6703,66 @@ def __load_core_compute_vol_attach(self, compute, compartments): ########################################################################## # load Core Network Vnic ########################################################################## - def __load_core_compute_vnic(self, virtual_network, vnic_id, compartment): data = {} try: if not vnic_id: - return data + return {} # get the vnic - vnic = virtual_network.get_vnic(vnic_id).data + # Added retry_strategy 12/4/2024 + vnic = virtual_network.get_vnic( + vnic_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data - # add attributes to data - data['private_ip'] = str(vnic.private_ip) - data['display_name'] = (str(vnic.private_ip) + " (Prv)") - data['public_ip'] = "" - data['skip_source_dest_check'] = self.get_value(vnic.skip_source_dest_check) - data['is_primary'] = self.get_value(vnic.is_primary) - data['subnet'] = "" - data['hostname_label'] = self.get_value(vnic.hostname_label) - data['internal_fqdn'] = "" - data['mac_address'] = self.get_value(vnic.mac_address) - data['time_created'] = self.get_value(vnic.time_created) - data['subnet_id'] = "" - data['nsg_ids'] = [x for x in vnic.nsg_ids] - data['nsg_names'] = self.__load_core_network_get_nsg_names(vnic.nsg_ids) - data['vcn'] = "" - - # search the subnet - subnet_display = "" + # get the subnet from memory subnet = self.search_unique_item(self.C_NETWORK, self.C_NETWORK_SUBNET, 'id', str(vnic.subnet_id)) - if subnet: - data['subnet'] = subnet['name'] + " " + subnet['cidr_block'] - data['vcn'] = subnet['vcn_name'] + " " + subnet['vcn_cidr'] - data['subnet_id'] = subnet['id'] - subnet_display = ", Subnet (" + data['subnet'] + "), VCN (" + data['vcn'] + ")" - data['internal_fqdn'] = str(vnic.hostname_label) + '.' + subnet['dns'] - - # check vnic information - if vnic.public_ip is not None: - data['display_name'] += ", " + self.get_value(vnic.public_ip) + " (Pub)" - data['public_ip'] = self.get_value(vnic.public_ip) - - # if source dest - if vnic.skip_source_dest_check: - data['display_name'] += " - Skip=Y" - - # if primary - if vnic.is_primary: - data['display_name'] += " - Primary " - - # subnet - data['dbdesc'] = data['display_name'] - data['display_name'] += subnet_display + + # add attributes to data + data = { + 'private_ip': str(vnic.private_ip), + 'name': self.get_value(vnic.private_ip) + " (Prv)", + 'display_name': self.get_value(vnic.display_name), + 'public_ip': self.get_value(vnic.public_ip), + 'skip_source_dest_check': self.get_value(vnic.skip_source_dest_check), + 'is_primary': self.get_value(vnic.is_primary), + 'hostname_label': self.get_value(vnic.hostname_label), + 'internal_fqdn': (str(vnic.hostname_label) + '.' + subnet['dns'] if subnet else ""), + 'mac_address': self.get_value(vnic.mac_address), + 'time_created': self.get_date(vnic.time_created), + 'vcn': (subnet['vcn_name'] + " " + subnet['vcn_cidr']) if subnet else "", + 'subnet': (subnet['name'] + " " + subnet['cidr_block']) if subnet else "", + 'subnet_id': subnet['id'] if subnet else "", + 'subnet_name': subnet['name'] if subnet else "", + 'nsg_ids': self.get_values(vnic.nsg_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(vnic.nsg_ids), + 'ip_addresses': [] + } + + # Align VNIC Name display information - Amended 12/1/2024 + data['name'] += ", " + self.get_value(vnic.public_ip) + " (Pub)" if vnic.public_ip else "" + data['name'] += ", Skip=Y" if vnic.skip_source_dest_check else "" + data['name'] += ", Primary " if vnic.is_primary else "" + + # Add for Database use + data['dbdesc'] = data['name'] + + # Add subnet to the name + data['name'] += (", Subnet (" + data['subnet'] + "), VCN (" + data['vcn'] + ")") if subnet else "" # get all private_ip_addresses for vnic - data['ip_addresses'] = [] - private_ip_addresses = virtual_network.list_private_ips(vnic_id=vnic_id).data + private_ip_addresses = virtual_network.list_private_ips( + vnic_id=vnic_id, + retry_strategy=oci.retry.DEFAULT_RETRY_STRATEGY + ).data + for pip in private_ip_addresses: - data['ip_addresses'].append({'ip_address': self.get_value(pip.ip_address), 'id': str(pip.id), 'type': "Private"}) + data['ip_addresses'].append({ + 'ip_address': self.get_value(pip.ip_address), + 'id': str(pip.id), + 'type': "Private" + }) # get public ip assigned to the private ip try: @@ -6717,7 +6770,11 @@ def __load_core_compute_vnic(self, virtual_network, vnic_id, compartment): privdetails.private_ip_id = pip.id pub_ip = virtual_network.get_public_ip_by_private_ip_id(privdetails) if pub_ip.status == 200: - data['ip_addresses'].append({'ip_address': self.get_value(pub_ip.data.ip_address), 'id': self.get_value(pub_ip.data.id), 'type': "Public"}) + data['ip_addresses'].append({ + 'ip_address': self.get_value(pub_ip.data.ip_address), + 'id': self.get_value(pub_ip.data.id), + 'type': "Public" + }) except Exception: pass @@ -6787,18 +6844,22 @@ def __load_core_compute_vnic_attach(self, compute, virtual_network, compartments if str(arr.lifecycle_state) != oci.core.models.VnicAttachment.LIFECYCLE_STATE_ATTACHED: continue - val = {'id': str(arr.id), - 'display_name': str(arr.display_name), - 'vnic_id': self.get_value(arr.vnic_id), - 'vnic_details': self.__load_core_compute_vnic(virtual_network, arr.vnic_id, compartment), - 'instance_id': self.get_value(arr.instance_id), - 'time_created': self.get_value(arr.time_created), - 'nic_index': self.get_value(arr.nic_index), - 'subnet_id': self.get_value(arr.subnet_id), - 'compartment_name': str(compartment['name']), - 'compartment_id': str(compartment['id']), - 'compartment_path': str(compartment['path']), - 'region_name': str(self.config['region'])} + val = { + 'id': self.get_value(arr.id), + 'display_name': self.get_value(arr.display_name), + 'vnic_id': self.get_value(arr.vnic_id), + 'vnic_details': self.__load_core_compute_vnic(virtual_network, arr.vnic_id, compartment), + 'instance_id': self.get_value(arr.instance_id), + 'time_created': self.get_date(arr.time_created), + 'nic_index': self.get_value(arr.nic_index), + 'subnet_id': self.get_value(arr.subnet_id), + 'subnet_name': self.get_network_subnet(arr.subnet_id), + 'subnet': self.get_network_subnet(arr.subnet_id, detailed=True), + 'compartment_name': str(compartment['name']), + 'compartment_id': str(compartment['id']), + 'compartment_path': str(compartment['path']), + 'region_name': str(self.config['region']) + } data.append(val) cnt += 1 @@ -6910,7 +6971,7 @@ def __load_core_block_boot(self, block_storage, compartments): 'id': str(arr.id), 'display_name': str(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'kms_key_id': self.get_value(arr.kms_key_id), 'vpus_per_gb': self.get_value(arr.vpus_per_gb), 'is_hydrated': self.get_value(arr.is_hydrated), @@ -7017,7 +7078,7 @@ def __load_core_block_volume(self, block_storage, compartments): 'id': self.get_value(arr.id), 'display_name': self.get_value(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'kms_key_id': self.get_value(arr.kms_key_id), 'volume_group_id': self.get_value(arr.volume_group_id), 'volume_group_name': "", @@ -7124,7 +7185,7 @@ def __load_core_block_volume_group(self, block_storage, compartments): 'id': str(arr.id), 'display_name': self.get_value(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'volume_ids': [str(a) for a in arr.volume_ids], 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), @@ -7209,7 +7270,7 @@ def __load_core_block_boot_backup(self, block_storage, compartments): 'boot_volume_id': self.get_value(arr.boot_volume_id), 'type': self.get_value(arr.type), 'source_type': self.get_value(arr.source_type), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'display_name': self.get_value(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), 'kms_key_id': self.get_value(arr.kms_key_id), @@ -7307,7 +7368,7 @@ def __load_core_block_volume_backup(self, block_storage, compartments): 'backup_name': "Not Found", 'type': str(arr.type), 'source_type': self.get_value(arr.source_type), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'display_name': self.get_value(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), 'unique_size_in_gbs': self.get_value(arr.unique_size_in_gbs), @@ -7400,7 +7461,7 @@ def __load_core_block_volume_group_backup(self, block_storage, compartments): 'backup_name': "Not Found", 'type': self.get_value(arr.type), 'source_type': self.get_value(arr.source_type), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'display_name': self.get_value(arr.display_name), 'size_in_gbs': self.get_value(arr.size_in_gbs), 'unique_size_in_gbs': self.get_value(arr.unique_size_in_gbs), @@ -7500,71 +7561,46 @@ def __load_load_balancers(self, load_balancer, compartments): errstr += "e" # add the rest - val = {'id': str(arr.id), - 'shape_name': str(arr.shape_name), - 'time_created': str(arr.time_created)[0:16], - 'shape_min_mbps': "", - 'shape_max_mbps': "", - 'display_name': self.get_value(arr.display_name), - 'is_private': self.get_value(arr.is_private), - 'status': str(status), - 'ip_addresses': [(self.get_value(ip.ip_address) + " - " + ("Public" if ip.is_public else "Private") + (" Reserved" if ip.reserved_ip else "")) for ip in arr.ip_addresses], - 'compartment_name': str(compartment['name']), - 'compartment_path': str(compartment['path']), - 'compartment_id': str(compartment['id']), - 'nsg_ids': [], - 'nsg_names': "", - 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, - 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, - 'region_name': str(self.config['region']), - 'subnet_ids': [], - 'certificates': '', - 'ssl_cipher_suites': [], - 'routing_policies': []} - - # Flexible Shapes - if arr.shape_details: - val['shape_min_mbps'] = self.get_value(arr.shape_details.minimum_bandwidth_in_mbps) - val['shape_max_mbps'] = self.get_value(arr.shape_details.maximum_bandwidth_in_mbps) - - # certificates - if arr.certificates: - val['certificates'] = self.__get_certificate_info(arr.certificates) - - # subnets - if arr.subnet_ids: - val['subnet_ids'] = [str(a) for a in arr.subnet_ids] - - # network_security_group_ids - if arr.network_security_group_ids: - val['nsg_ids'] = [str(a) for a in arr.network_security_group_ids] - val['nsg_names'] = self.__load_core_network_get_nsg_names(arr.network_security_group_ids) + val = { + 'id': str(arr.id), + 'shape_name': str(arr.shape_name), + 'time_created': self.get_date(arr.time_created), + 'time_updated': '', + 'shape_min_mbps': self.get_value(arr.shape_details.minimum_bandwidth_in_mbps) if arr.shape_details else '', + 'shape_max_mbps': self.get_value(arr.shape_details.maximum_bandwidth_in_mbps) if arr.shape_details else '', + 'display_name': self.get_value(arr.display_name), + 'is_private': self.get_value(arr.is_private), + 'status': str(status), + 'ip_addresses': [(self.get_value(ip.ip_address) + " - " + ("Public" if ip.is_public else "Private") + (" Reserved" if ip.reserved_ip else "")) for ip in arr.ip_addresses], + 'compartment_name': str(compartment['name']), + 'compartment_path': str(compartment['path']), + 'compartment_id': str(compartment['id']), + 'nsg_ids': self.get_values(arr.network_security_group_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(arr.network_security_group_ids), + 'lifecycle_state': self.get_value(arr.lifecycle_state), + 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, + 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, + 'region_name': str(self.config['region']), + 'subnet_ids': self.get_values(arr.subnet_ids), + 'certificates': self.__get_certificate_info(arr.certificates) if arr.certificates else '', + 'ssl_cipher_suites': [], + 'routing_policies': [] + } # listeners datalis = [] for listener in arr.listeners: lo = arr.listeners[listener] - value = {'id': str(listener), 'port': self.get_value(lo.port), 'protocol': self.get_value(lo.protocol), - 'default_backend_set_name': self.get_value(lo.default_backend_set_name), 'ssl_configuration': ""} - - # check ssl config - if lo.ssl_configuration: - value['ssl_configuration'] = self.get_value(lo.ssl_configuration.certificate_name) - - # path_route_set_name - value['path_route_set_name'] = [] - if lo.path_route_set_name: - value['path_route_set_name'] = self.get_value(lo.path_route_set_name) - - # rule_set_names - value['rule_set_names'] = [] - if lo.rule_set_names: - value['rule_set_names'] = [str(a) for a in lo.rule_set_names] - - # host names - value['hostname_names'] = [] - if lo.hostname_names: - value['hostname_names'] = [str(a) for a in lo.hostname_names] + value = { + 'id': str(listener), + 'port': self.get_value(lo.port), + 'protocol': self.get_value(lo.protocol), + 'default_backend_set_name': self.get_value(lo.default_backend_set_name), + 'path_route_set_name': self.get_value(lo.path_route_set_name), + 'rule_set_names': self.get_values(lo.rule_set_names), + 'hostname_names': self.get_values(lo.hostname_names), + 'ssl_configuration': self.get_value(lo.ssl_configuration.certificate_name) if lo.ssl_configuration else '' + } # add data datalis.append(value) @@ -7580,10 +7616,16 @@ def __load_load_balancers(self, load_balancer, compartments): array_path = [] if pro.path_routes is not None: for path_route in pro.path_routes: - array_path.append({'path': str(path_route.path), 'backend_set_name': str(path_route.backend_set_name)}) + array_path.append({ + 'path': str(path_route.path), + 'backend_set_name': str(path_route.backend_set_name) + }) # add the paths - datapath.append({'name': str(pro.name), 'path_routes': array_path}) + datapath.append({ + 'name': str(pro.name), + 'path_routes': array_path + }) val['path_route'] = datapath @@ -7609,7 +7651,11 @@ def __load_load_balancers(self, load_balancer, compartments): datahosts = [] for hostname in arr.hostnames: ho = arr.hostnames[hostname] - datahosts.append({'name': str(ho.name), 'desc': str(ho.name).ljust(20) + " - " + str(ho.hostname)}) + datahosts.append({ + 'name': str(ho.name), + 'desc': str(ho.name).ljust(20) + " - " + str(ho.hostname), + 'info': str(ho.name) + ":" + str(ho.hostname) + }) val['hostnames'] = datahosts # RuleSets @@ -7702,32 +7748,27 @@ def __load_load_balancers_network(self, network_load_balancer, compartments): 'display_name': str(arr.display_name), 'lifecycle_state': self.get_value(arr.lifecycle_state), 'lifecycle_details': self.get_value(arr.lifecycle_details), - 'time_created': self.get_value(arr.time_created)[0:16], - 'time_updated': self.get_value(arr.time_updated)[0:16], + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), 'is_private': self.get_value(arr.is_private), 'is_preserve_source_destination': self.get_value(arr.is_preserve_source_destination), 'nlb_ip_version': self.get_value(arr.nlb_ip_version), 'is_symmetric_hash_enabled': self.get_value(arr.is_symmetric_hash_enabled), 'subnet_id': self.get_value(arr.subnet_id), - 'subnet_name': "" if arr.subnet_id is None else self.get_network_subnet(arr.subnet_id, True), + 'subnet_name': self.get_network_subnet(arr.subnet_id, True), 'status': str(status), 'ip_addresses': [(self.get_value(ip.ip_address) + " - " + ("Public" if ip.is_public else "Private") + (" Reserved" if ip.reserved_ip else "")) for ip in arr.ip_addresses], 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), - 'nsg_ids': [], - 'nsg_names': "", + 'nsg_ids': self.get_values(arr.network_security_group_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(arr.network_security_group_ids), 'system_tags': [] if arr.system_tags is None else arr.system_tags, 'defined_tags': [] if arr.defined_tags is None else arr.defined_tags, 'freeform_tags': [] if arr.freeform_tags is None else arr.freeform_tags, 'region_name': str(self.config['region']) } - # network_security_group_ids - if arr.network_security_group_ids: - val['nsg_ids'] = [str(a) for a in arr.network_security_group_ids] - val['nsg_names'] = self.__load_core_network_get_nsg_names(arr.network_security_group_ids) - # listeners datalis = [] for listener in arr.listeners: @@ -8260,7 +8301,7 @@ def __load_object_storage_buckets(self, object_storage, compartments): for arr in buckets: val = { 'name': str(arr.name), - 'time_created': str(arr.time_created)[0:16], + 'time_created': self.get_date(arr.time_created), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), @@ -8423,7 +8464,7 @@ def __load_file_storage_filesystems(self, file_storage, compartments): for fs in file_systems: val = {'id': str(fs.id), 'display_name': str(fs.display_name), - 'time_created': self.get_value(fs.time_created)[0:16], + 'time_created': self.get_date(fs.time_created), 'availability_domain': self.get_value(fs.availability_domain), 'size_gb': str(round(int(fs.metered_bytes) / 1024 / 1024 / 1024, 1)), 'metered_bytes': self.get_value(fs.metered_bytes), @@ -8525,7 +8566,7 @@ def __load_file_storage_mount_targets(self, file_storage, virtual_network, compa val = {'id': str(mt.id), 'display_name': self.get_value(mt.display_name), 'export_set_id': self.get_value(mt.export_set_id), - 'time_created': self.get_value(mt.time_created), + 'time_created': self.get_date(mt.time_created), 'availability_domain': self.get_value(mt.availability_domain), 'private_ip_ids': [], 'subnet_id': self.get_value(mt.subnet_id), @@ -8608,7 +8649,7 @@ def __load_file_storage_exports(self, file_storage, compartments): 'export_set_id': self.get_value(es.export_set_id), 'file_system_id': self.get_value(es.file_system_id), 'path': self.get_value(es.path), - 'time_created': self.get_value(es.time_created), + 'time_created': self.get_date(es.time_created), 'export_set': []} # export set @@ -8833,7 +8874,7 @@ def __load_database_maintenance(self, database_client, maintenance_run_id, db_sy 'target_resource_id': str(mt.target_resource_id), 'maintenance_type': str(mt.maintenance_type), 'maintenance_subtype': str(mt.maintenance_subtype), - 'maintenance_display': str(mt.display_name) + " ( " + str(mt.maintenance_type) + ", " + str(mt.maintenance_subtype) + ", " + str(mt.lifecycle_state) + " ), Scheduled: " + str(mt.time_scheduled)[0:16] + ((", Execution: " + str(mt.time_started)[0:16] + " - " + str(mt.time_ended)[0:16]) if str(mt.time_started) != 'None' else ""), + 'maintenance_display': str(mt.display_name) + " ( " + str(mt.maintenance_type) + ", " + str(mt.maintenance_subtype) + ", " + str(mt.lifecycle_state) + " ), Scheduled: " + self.get_date(mt.time_scheduled) + ((", Execution: " + self.get_date(mt.time_started) + " - " + self.get_date(mt.time_ended)) if str(mt.time_started) != 'None' else ""), 'maintenance_alert': "" } @@ -8841,7 +8882,7 @@ def __load_database_maintenance(self, database_client, maintenance_run_id, db_sy if mt.time_scheduled: delta = mt.time_scheduled.date() - datetime.date.today() if delta.days <= 14 and delta.days >= 0 and not mt.time_started: - val['maintenance_alert'] = "DBSystem Maintenance is in " + str(delta.days).ljust(2, ' ') + " days, on " + str(mt.time_scheduled)[0:16] + " for " + db_system_name + val['maintenance_alert'] = "DBSystem Maintenance is in " + str(delta.days).ljust(2, ' ') + " days, on " + self.get_date(mt.time_scheduled) + " for " + db_system_name self.dbsystem_maintenance.append(val['maintenance_alert']) return val @@ -9022,7 +9063,7 @@ def __load_database_exacc_infrastructure(self, database_client, virtual_network, 'corporate_proxy': self.get_value(dbs.corporate_proxy), 'dns_server': self.get_value(dbs.dns_server), 'ntp_server': self.get_value(dbs.ntp_server), - 'time_created': self.get_value(dbs.time_created), + 'time_created': self.get_date(dbs.time_created), 'lifecycle_state': self.get_value(dbs.lifecycle_state), 'lifecycle_details': self.get_value(dbs.lifecycle_details), 'csi_number': self.get_value(dbs.csi_number), @@ -9425,7 +9466,7 @@ def __load_database_exascale_vault(self, database_client, compartments): 'availability_domain': self.get_value(dbs.availability_domain), 'time_zone': self.get_value(dbs.time_zone), 'lifecycle_state': self.get_value(dbs.lifecycle_state), - 'time_created': self.get_value(dbs.time_created, trim_date=True), + 'time_created': self.get_date(dbs.time_created), 'lifecycle_details': self.get_value(dbs.lifecycle_details), 'total_size_in_gbs': self.get_value(dbs.high_capacity_database_storage.total_size_in_gbs) if dbs.high_capacity_database_storage else "", 'available_size_in_gbs': self.get_value(dbs.high_capacity_database_storage.available_size_in_gbs) if dbs.high_capacity_database_storage else "", @@ -9533,7 +9574,7 @@ def __load_database_exascale_vms(self, database_client, virtual_network, compart 'node_count': self.get_value(arr.node_count), 'shape': self.get_value(arr.shape), 'display_name': self.get_value(arr.display_name), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'lifecycle_details': self.get_value(arr.lifecycle_details), 'time_zone': self.get_value(arr.time_zone), 'hostname': self.get_value(arr.hostname), @@ -9682,7 +9723,7 @@ def __load_database_exadata_infrastructure(self, database_client, virtual_networ 'compute_count': self.get_value(dbs.compute_count), 'total_storage_size_in_gbs': self.get_value(dbs.total_storage_size_in_gbs), 'available_storage_size_in_gbs': self.get_value(dbs.available_storage_size_in_gbs), - 'time_created': self.get_value(dbs.time_created), + 'time_created': self.get_date(dbs.time_created), # Added 7/29/2024 'cluster_placement_group_id': self.get_value(dbs.cluster_placement_group_id), 'subscription_id': self.get_value(dbs.subscription_id), @@ -9821,11 +9862,13 @@ def __load_database_exadata_vm_clusters(self, database_client, virtual_network, 'data_subnet_name': self.get_network_subnet(str(arr.subnet_id)), 'data_vcn_name': self.get_network_subnet(str(arr.subnet_id), vcn_name_only=True), 'backup_subnet_id': self.get_value(arr.backup_subnet_id), - 'backup_subnet': "" if arr.backup_subnet_id is None else self.get_network_subnet(str(arr.backup_subnet_id), True), - 'backup_subnet_name': "" if arr.backup_subnet_id is None else self.get_network_subnet(str(arr.backup_subnet_id)), - 'backup_vcn_name': "" if arr.backup_subnet_id is None else self.get_network_subnet(str(arr.backup_subnet_id), vcn_name_only=True), + 'backup_subnet': self.get_network_subnet(str(arr.backup_subnet_id), True), + 'backup_subnet_name': self.get_network_subnet(str(arr.backup_subnet_id)), + 'backup_vcn_name': self.get_network_subnet(str(arr.backup_subnet_id), vcn_name_only=True), 'nsg_ids': arr.nsg_ids, - 'backup_network_nsg_ids': self.get_value(arr.backup_network_nsg_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(arr.nsg_ids), + 'backup_network_nsg_ids': arr.backup_network_nsg_ids, + 'backup_network_nsg_names': self.__load_core_network_get_nsg_names(arr.backup_network_nsg_ids), 'last_update_history_entry_id': self.get_value(arr.last_update_history_entry_id), 'shape': self.get_value(arr.shape), 'listener_port': self.get_value(arr.listener_port), @@ -9833,7 +9876,7 @@ def __load_database_exadata_vm_clusters(self, database_client, virtual_network, 'node_count': self.get_value(arr.node_count), 'storage_size_in_gbs': self.get_value(arr.storage_size_in_gbs), 'display_name': self.get_value(arr.display_name), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'lifecycle_details': self.get_value(arr.lifecycle_details), 'time_zone': self.get_value(arr.time_zone), 'domain': self.get_value(arr.domain), @@ -10249,7 +10292,7 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen 'shape_memory_gb': 0, 'shape_storage_tb': 0, 'lifecycle_state': self.get_value(dbs.lifecycle_state), - 'data_storage_size_in_gbs': "" if dbs.data_storage_size_in_gbs is None else self.get_value(dbs.data_storage_size_in_gbs), + 'data_storage_size_in_gbs': self.get_value(dbs.data_storage_size_in_gbs), 'availability_domain': self.get_value(dbs.availability_domain), 'cpu_core_count': self.get_value(dbs.cpu_core_count), 'node_count': ("" if dbs.node_count is None else self.get_value(dbs.node_count)), @@ -10263,17 +10306,17 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen 'data_subnet_name': self.get_network_subnet(str(dbs.subnet_id)), 'data_vcn_name': self.get_network_subnet(str(dbs.subnet_id), vcn_name_only=True), 'backup_subnet_id': self.get_value(dbs.backup_subnet_id), - 'backup_subnet': "" if dbs.backup_subnet_id is None else self.get_network_subnet(str(dbs.backup_subnet_id), True), - 'backup_subnet_name': "" if dbs.backup_subnet_id is None else self.get_network_subnet(str(dbs.backup_subnet_id)), - 'backup_vcn_name': "" if dbs.backup_subnet_id is None else self.get_network_subnet(str(dbs.backup_subnet_id), vcn_name_only=True), - 'scan_dns_record_id': "" if dbs.scan_dns_record_id is None else self.get_value(dbs.scan_dns_record_id), + 'backup_subnet': self.get_network_subnet(str(dbs.backup_subnet_id), True), + 'backup_subnet_name': self.get_network_subnet(str(dbs.backup_subnet_id)), + 'backup_vcn_name': self.get_network_subnet(str(dbs.backup_subnet_id), vcn_name_only=True), + 'scan_dns_record_id': self.get_value(dbs.scan_dns_record_id), 'listener_port': self.get_value(dbs.listener_port), - 'cluster_name': "" if dbs.cluster_name is None else self.get_value(dbs.cluster_name), + 'cluster_name': self.get_value(dbs.cluster_name), 'database_edition': self.get_value(dbs.database_edition), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), - 'time_created': self.get_value(dbs.time_created), + 'time_created': self.get_date(dbs.time_created), 'storage_management': "", 'sparse_diskgroup': self.get_value(dbs.sparse_diskgroup), 'reco_storage_size_in_gb': self.get_value(dbs.reco_storage_size_in_gb), @@ -10286,11 +10329,11 @@ def __load_database_dbsystems(self, database_client, virtual_network, compartmen 'patches': self.__load_database_dbsystems_patches(database_client, dbs.id), 'db_nodes': self.__load_database_dbsystems_dbnodes(database_client, virtual_network, compartment, dbs.id), 'db_homes': self.__load_database_dbsystems_dbhomes(dbs.id), - 'scan_dns_name': "" if dbs.scan_dns_name is None else str(dbs.scan_dns_name), - 'zone_id': str(dbs.zone_id), - 'nsg_ids': dbs.nsg_ids, + 'scan_dns_name': self.get_value(dbs.scan_dns_name), + 'zone_id': self.get_value(dbs.zone_id), + 'nsg_ids': self.get_values(dbs.nsg_ids), 'nsg_ids_names': self.__load_core_network_get_nsg_names(dbs.nsg_ids), - 'backup_network_nsg_ids': dbs.backup_network_nsg_ids, + 'backup_network_nsg_ids': self.get_values(dbs.backup_network_nsg_ids), 'backup_network_nsg_ids_names': self.__load_core_network_get_nsg_names(dbs.backup_network_nsg_ids), 'fault_domains': str(','.join(x for x in dbs.fault_domains)) if dbs.fault_domains else "", 'memory_size_in_gbs': self.get_value(dbs.memory_size_in_gbs), @@ -10400,7 +10443,7 @@ def __load_database_dbsystems_dbnodes(self, database_client, virtual_network, co 'vnic2_details': self.__load_core_compute_vnic(virtual_network, db_node.vnic2_id, compartment), 'backup_vnic2_id': self.get_value(db_node.backup_vnic2_id), 'backup_vnic2_details': self.__load_core_compute_vnic(virtual_network, db_node.backup_vnic2_id, compartment), - 'time_created': self.get_value(db_node.time_created, trim_date=True), + 'time_created': self.get_date(db_node.time_created), 'additional_details': self.get_value(db_node.additional_details), 'defined_tags': [] if db_node.defined_tags is None else db_node.defined_tags, 'freeform_tags': [] if db_node.freeform_tags is None else db_node.freeform_tags @@ -10525,34 +10568,51 @@ def __load_database_dbsystems_dbhomes_databases(self, database_client, db_home_i for db in dbs: if not self.check_lifecycle_state_active(db.lifecycle_state): continue + bkp = db.db_backup_config value = { 'id': str(db.id), - 'compartment_id': str(db.compartment_id), - 'character_set': str(db.character_set), - 'ncharacter_set': str(db.ncharacter_set), - 'db_home_id': str(db.db_home_id), - 'db_name': str(db.db_name), - 'pdb_name': "" if db.pdb_name is None else str(db.pdb_name), - 'db_workload': str(db.db_workload), - 'db_unique_name': str(db.db_unique_name), - 'lifecycle_details': str(db.lifecycle_details), - 'lifecycle_state': str(db.lifecycle_state), + 'compartment_id': self.get_value(db.compartment_id), + 'character_set': self.get_value(db.character_set), + 'ncharacter_set': self.get_value(db.ncharacter_set), + 'db_home_id': self.get_value(db.db_home_id), + 'db_name': self.get_value(db.db_name), + 'pdb_name': self.get_value(db.pdb_name), + 'db_workload': self.get_value(db.db_workload), + 'db_unique_name': self.get_value(db.db_unique_name), + 'lifecycle_details': self.get_value(db.lifecycle_details), + 'lifecycle_state': self.get_value(db.lifecycle_state), 'defined_tags': [] if db.defined_tags is None else db.defined_tags, 'freeform_tags': [] if db.freeform_tags is None else db.freeform_tags, - 'time_created': str(db.time_created), - 'last_backup_timestamp': str(db.last_backup_timestamp), - 'kms_key_id': str(db.kms_key_id), - 'vault_id': str(db.vault_id), - 'source_database_point_in_time_recovery_timestamp': str(db.source_database_point_in_time_recovery_timestamp), - 'database_software_image_id': str(db.database_software_image_id), - 'is_cdb': str(db.is_cdb), - 'sid_prefix': str(db.sid_prefix), + 'time_created': self.get_date(db.time_created), + 'last_backup_timestamp': self.get_date(db.last_backup_timestamp), + 'kms_key_id': self.get_value(db.kms_key_id), + 'vault_id': self.get_value(db.vault_id), + 'source_database_point_in_time_recovery_timestamp': self.get_value(db.source_database_point_in_time_recovery_timestamp), + 'database_software_image_id': self.get_value(db.database_software_image_id), + 'is_cdb': self.get_value(db.is_cdb), + 'sid_prefix': self.get_value(db.sid_prefix), 'connection_strings_cdb': "", - 'auto_backup_enabled': False, 'dataguard': self.__load_database_dbsystems_db_dg(database_client, db.id), 'backups': [] if self.flags.skip_backups else self.__load_database_dbsystems_db_backups(database_client, db.id, compartment), - 'pdbs': self.__load_database_dbsystems_dbhomes_databases_pdbs(database_client, db.id) + 'pdbs': self.__load_database_dbsystems_dbhomes_databases_pdbs(database_client, db.id), + # Added or changed on 11/15/2024 + 'auto_backup_enabled': self.get_value(db.db_backup_config.auto_backup_enabled) if db.db_backup_config else False, + 'kms_key_version_id': self.get_value(db.kms_key_version_id), + 'key_store_id': self.get_value(db.key_store_id), + 'key_store_wallet_name': self.get_value(db.key_store_wallet_name), + 'last_failed_backup_timestamp': self.get_date(db.last_failed_backup_timestamp), + 'last_backup_duration_in_seconds': self.get_value(db.last_backup_duration_in_seconds), + 'db_backup_config': { + 'auto_backup_enabled': self.get_value(bkp.auto_backup_enabled) if bkp else "", + 'recovery_window_in_days': self.get_value(bkp.recovery_window_in_days) if bkp else "", + 'auto_backup_window': self.get_value(bkp.auto_backup_window) if bkp else "", + 'auto_full_backup_window': self.get_value(bkp.auto_full_backup_window) if bkp else "", + 'auto_full_backup_day': self.get_value(bkp.auto_full_backup_day) if bkp else "", + 'run_immediate_full_backup': self.get_value(bkp.run_immediate_full_backup) if bkp else "", + 'backup_deletion_policy': self.get_value(bkp.backup_deletion_policy) if bkp else "", + 'backup_destination_type': str(', '.join(self.get_value(x.type) for x in bkp.backup_destination_details)) if bkp and bkp.backup_destination_details else "" + } } if db.db_backup_config is not None: @@ -10616,7 +10676,7 @@ def __load_database_dbsystems_dbhomes_databases_pdbs(self, database_client, dbid 'is_restricted': self.get_value(db.is_restricted), 'management_status': self.get_value(db.pluggable_database_management_config.management_status) if db.pluggable_database_management_config else "", 'is_refreshable_clone': self.get_value(db.refreshable_clone_config.is_refreshable_clone) if db.refreshable_clone_config else "", - 'time_created': self.get_value(db.time_created, trim_date=True), + 'time_created': self.get_date(db.time_created), 'defined_tags': [] if db.defined_tags is None else db.defined_tags, 'freeform_tags': [] if db.freeform_tags is None else db.freeform_tags } @@ -10891,10 +10951,11 @@ def __load_database_adb_d_vmclusters(self, database_client, compartments): 'subnet_name_full': self.get_network_subnet(str(dbs.subnet_id), True), 'subnet_name': self.get_network_subnet(str(dbs.subnet_id)), 'nsg_ids': dbs.nsg_ids, + 'nsg_names': self.__load_core_network_get_nsg_names(dbs.nsg_ids), 'last_update_history_entry_id': str(dbs.last_update_history_entry_id), 'lifecycle_state': self.get_value(dbs.lifecycle_state), - 'time_created': self.get_value(dbs.time_created), - 'time_updated': self.get_value(dbs.time_updated), + 'time_created': self.get_date(dbs.time_created), + 'time_updated': self.get_date(dbs.time_updated), 'cluster_time_zone': self.get_value(dbs.cluster_time_zone), 'lifecycle_details': self.get_value(dbs.lifecycle_details), 'shape': self.get_value(dbs.shape), @@ -11136,7 +11197,7 @@ def __load_database_adb_database(self, database_client, compartments): 'service_console_url': self.get_value(dbs.service_console_url), 'connection_strings': "", 'connection_urls': self.get_value(dbs.connection_urls), - 'time_created': self.get_value(dbs.time_created), + 'time_created': self.get_date(dbs.time_created), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), @@ -11149,10 +11210,13 @@ def __load_database_adb_database(self, database_client, compartments): 'is_auto_scaling_enabled': dbs.is_auto_scaling_enabled, 'is_dedicated': dbs.is_dedicated, 'subnet_id': self.get_value(dbs.subnet_id), + 'subnet_name': self.get_network_subnet(dbs.subnet_id), + 'subnet': self.get_network_subnet(dbs.subnet_id, detailed=True), 'data_safe_status': self.get_value(dbs.data_safe_status), 'time_maintenance_begin': self.get_value(dbs.time_maintenance_begin), 'time_maintenance_end': self.get_value(dbs.time_maintenance_end), - 'nsg_ids': dbs.nsg_ids, + 'nsg_ids': self.get_values(dbs.nsg_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(dbs.nsg_ids), 'private_endpoint': self.get_value(dbs.private_endpoint), 'private_endpoint_label': self.get_value(dbs.private_endpoint_label), 'backups': [], @@ -11839,8 +11903,8 @@ def __load_database_mysql(self, mysql_client, compartments): value['port_x'] = str(mysql.port_x) value['maintenance'] = str(mysql.maintenance.window_start_time) if mysql.maintenance else "" value['channels'] = str(', '.join(str(x.display_name) for x in mysql.channels)) - value['time_earliest_recovery_point'] = str(mysql.point_in_time_recovery_details.time_earliest_recovery_point)[0:16] if mysql.point_in_time_recovery_details else "" - value['time_latest_recovery_point'] = str(mysql.point_in_time_recovery_details.time_latest_recovery_point)[0:16] if mysql.point_in_time_recovery_details else "" + value['time_earliest_recovery_point'] = self.get_date(mysql.point_in_time_recovery_details.time_earliest_recovery_point) if mysql.point_in_time_recovery_details else "" + value['time_latest_recovery_point'] = self.get_date(mysql.point_in_time_recovery_details.time_latest_recovery_point) if mysql.point_in_time_recovery_details else "" except oci.exceptions.ServiceError as e: if self.__check_service_error(e, compartment): @@ -11936,7 +12000,7 @@ def __load_database_mysql_backups(self, mysql_backup_client, compartments): 'display_name': self.get_value(backup.display_name), 'description': self.get_value(backup.description), 'db_system_id': self.get_value(backup.db_system_id), - 'time_created': self.get_value(backup.time_created, trim_date=True), + 'time_created': self.get_date(backup.time_created), 'lifecycle_state': self.get_value(backup.lifecycle_state), 'backup_type': self.get_value(backup.backup_type), 'creation_type': self.get_value(backup.creation_type), @@ -12034,8 +12098,8 @@ def __load_database_postgresql(self, postgresql_client, compartments): value = { 'id': str(pg.id), 'display_name': self.get_value(pg.display_name), - 'time_created': self.get_value(pg.time_created)[0:16], - 'time_updated': self.get_value(pg.time_updated)[0:16], + 'time_created': self.get_date(pg.time_created), + 'time_updated': self.get_date(pg.time_updated), 'lifecycle_state': self.get_value(pg.lifecycle_state), 'system_type': self.get_value(pg.system_type), 'instance_count': self.get_value(pg.instance_count), @@ -12081,8 +12145,8 @@ def __load_database_postgresql(self, postgresql_client, compartments): 'display_name': self.get_value(ins.display_name), 'availability_domain': self.get_value(ins.availability_domain), 'lifecycle_state': self.get_value(ins.lifecycle_state), - 'time_created': self.get_value(ins.time_created), - 'time_updated': self.get_value(ins.time_updated) + 'time_created': self.get_date(ins.time_created), + 'time_updated': self.get_date(ins.time_updated) }) value['admin_username'] = self.get_value(pgv.admin_username) @@ -12102,14 +12166,15 @@ def __load_database_postgresql(self, postgresql_client, compartments): # network_details if pgv.network_details: value['network_subnet_id'] = self.get_value(pgv.network_details.subnet_id) + value['network_subnet_name'] = self.get_network_subnet(pgv.network_details.subnet_id) value['network_primary_db_endpoint_private_ip'] = self.get_value(pgv.network_details.primary_db_endpoint_private_ip) if pgv.network_details.nsg_ids: - value['network_nsg_ids'] = pgv.network_details.nsg_ids + value['network_nsg_ids'] = self.get_values(pgv.network_details.nsg_ids) value['network_nsg_names'] = self.__load_core_network_get_nsg_names(pgv.network_details.nsg_ids) # management_policy if pgv.management_policy: - value['management_maintenance_window_start'] = self.get_value(pgv.management_policy.maintenance_window_start)[0:16] + value['management_maintenance_window_start'] = self.get_date(pgv.management_policy.maintenance_window_start) value['management_backup_policy'] = self.get_value(pgv.management_policy.backup_policy.kind) if pgv.management_policy.backup_policy else "" # source @@ -12209,8 +12274,8 @@ def __load_database_postgresql_backups(self, postgresql_client, compartments): 'id': self.get_value(backup.id), 'display_name': self.get_value(backup.display_name), 'db_system_id': self.get_value(backup.db_system_id), - 'time_created': self.get_value(backup.time_created, trim_date=True), - 'time_updated': self.get_value(backup.time_updated, trim_date=True), + 'time_created': self.get_date(backup.time_created), + 'time_updated': self.get_date(backup.time_updated), 'lifecycle_state': self.get_value(backup.lifecycle_state), 'lifecycle_details': self.get_value(backup.lifecycle_details), 'source_type': self.get_value(backup.source_type), @@ -12611,8 +12676,8 @@ def __load_datasafe_alert_policies(self, datasafe_client, compartment): 'alert_policy_type': self.get_value(val.alert_policy_type), 'severity': self.get_value(val.severity), 'is_user_defined': self.get_value(val.is_user_defined), - 'time_created': self.get_value(val.time_created, trim_date=True), - 'time_updated': self.get_value(val.time_updated, trim_date=True), + 'time_created': self.get_date(val.time_created), + 'time_updated': self.get_date(val.time_updated), 'lifecycle_state': self.get_value(val.lifecycle_state), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, 'freeform_tags': [] if val.freeform_tags is None else val.freeform_tags @@ -12680,7 +12745,7 @@ def __load_datasafe_audit_policies(self, datasafe_client, compartment): 'partially_enabled_msg': self.get_value(spec.partially_enabled_msg) } for spec in val.audit_specifications] if val.audit_specifications else [], 'is_data_safe_service_account_excluded': self.get_value(val.is_data_safe_service_account_excluded), - 'time_created': self.get_value(val.time_created, trim_date=True), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': self.get_value(val.lifecycle_details), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -12738,7 +12803,7 @@ def __load_datasafe_audit_profiles(self, datasafe_client, compartment): 'online_months': self.get_value(val.online_months), 'offline_months': self.get_value(val.offline_months), 'target_id': self.get_value(val.target_id), - 'time_created': self.get_value(val.time_created, trim_date=True), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': self.get_value(val.lifecycle_details), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -12794,7 +12859,7 @@ def __load_datasafe_private_endpoints(self, datasafe_client, compartment): 'subnet_id': self.get_value(val.subnet_id), 'subnet_name': self.get_network_subnet(val.subnet_id, detailed=True), 'vcn_id': self.get_value(val.vcn_id), - 'time_created': self.get_value(val.time_created, trim_date=True), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': "", 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -12845,7 +12910,7 @@ def __load_datasafe_onprem_connectors(self, datasafe_client, compartment): 'id': self.get_value(val.id), 'display_name': self.get_value(val.display_name), 'description': self.get_value(val.description), - 'time_created': self.get_value(val.time_created, trim_date=True), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': self.get_value(val.lifecycle_details), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -12981,7 +13046,7 @@ def __load_datasafe_security_assessments(self, datasafe_client, compartment): 'statistics': self.__get_datasafe_security_statistics(val.statistics), # 'target_ids': self.get_values(val.target_ids), 'triggered_by': self.get_value(val.triggered_by), - 'time_created': self.get_value(val.time_created), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': self.get_value(val.lifecycle_details), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -13043,7 +13108,7 @@ def __load_datasafe_user_assessments(self, datasafe_client, compartment): 'statistics': self.__get_datasafe_map(val.statistics), # 'target_ids': self.get_values(val.target_ids), 'triggered_by': self.get_value(val.triggered_by), - 'time_created': self.get_value(val.time_created, trim_date=True), + 'time_created': self.get_date(val.time_created), 'lifecycle_state': self.get_value(val.lifecycle_state), 'lifecycle_details': self.get_value(val.lifecycle_details), 'defined_tags': [] if val.defined_tags is None else val.defined_tags, @@ -13103,7 +13168,7 @@ def __load_datasafe_targets(self, datasafe_client, compartment): 'infrastructure_type': self.get_value(tbs.infrastructure_type), 'associated_resource_ids': [] if tbs.associated_resource_ids is None else tbs.associated_resource_ids, 'associated_resource_names': [], - 'time_created': self.get_value(tbs.time_created), + 'time_created': self.get_date(tbs.time_created), 'lifecycle_state': self.get_value(tbs.lifecycle_state), 'lifecycle_details': self.get_value(tbs.lifecycle_details), 'defined_tags': [] if tbs.defined_tags is None else tbs.defined_tags, @@ -13156,7 +13221,7 @@ def __load_datasafe_main(self, datasafe_client, compartments): 'online_retention_period': self.get_value(config.global_settings.online_retention_period) if config.global_settings else "", 'is_enabled': self.get_value(config.is_enabled), 'lifecycle_state': self.get_value(config.lifecycle_state), - 'time_enabled': self.get_value(config.time_enabled, trim_date=True), + 'time_enabled': self.get_date(config.time_enabled), 'url': self.get_value(config.url), 'defined_tags': [] if config.defined_tags is None else config.defined_tags, 'freeform_tags': [] if config.freeform_tags is None else config.freeform_tags, @@ -13402,11 +13467,9 @@ def __load_container_clusters(self, container_client, compartments): if arr.endpoint_config: val['endpoint_is_public_ip_enabled'] = self.get_value(arr.endpoint_config.is_public_ip_enabled) val['endpoint_subnet_id'] = self.get_value(arr.endpoint_config.subnet_id) - if arr.endpoint_config.subnet_id: - val['endpoint_subnet_name'] = self.get_network_subnet(arr.endpoint_config.subnet_id) - val['endpoint_nsg_ids'] = arr.endpoint_config.nsg_ids - if arr.endpoint_config.nsg_ids: - val['endpoint_nsg_names'] = self.__load_core_network_get_nsg_names(arr.endpoint_config.nsg_ids) + val['endpoint_subnet_name'] = self.get_network_subnet(arr.endpoint_config.subnet_id) + val['endpoint_nsg_ids'] = self.get_values(arr.endpoint_config.nsg_ids) + val['endpoint_nsg_names'] = self.__load_core_network_get_nsg_names(arr.endpoint_config.nsg_ids) # options if arr.options: @@ -13422,9 +13485,9 @@ def __load_container_clusters(self, container_client, compartments): # metadata if arr.metadata: - val['time_created'] = self.get_value(arr.metadata.time_created)[0:16] - val['time_deleted'] = self.get_value(arr.metadata.time_deleted)[0:16] - val['time_updated'] = self.get_value(arr.metadata.time_updated)[0:16] + val['time_created'] = self.get_date(arr.metadata.time_created) + val['time_deleted'] = self.get_date(arr.metadata.time_deleted) + val['time_updated'] = self.get_date(arr.metadata.time_updated) val['created_by_user_id'] = self.get_value(arr.metadata.created_by_user_id) val['deleted_by_user_id'] = self.get_value(arr.metadata.deleted_by_user_id) val['updated_by_user_id'] = self.get_value(arr.metadata.updated_by_user_id) @@ -13743,26 +13806,28 @@ def __load_api_gateways(self, api_client, compartments): if not self.check_lifecycle_state_active(apig.lifecycle_state): continue - val = {'id': str(apig.id), - 'display_name': self.get_value(apig.display_name), - 'endpoint_type': self.get_value(apig.endpoint_type), - 'hostname': self.get_value(apig.hostname), - 'subnet_id': self.get_value(apig.subnet_id), - 'subnet_name': "", - 'nsg_ids': self.get_value(apig.network_security_group_ids), - 'nsg_names': str(self.__load_core_network_get_nsg_names(apig.network_security_group_ids)) if apig.network_security_group_ids else "", - 'time_created': self.get_value(apig.time_created), - 'time_updated': self.get_value(apig.time_updated), - 'lifecycle_state': self.get_value(apig.lifecycle_state), - 'certificate_id': self.get_value(apig.certificate_id), - 'compartment_name': str(compartment['name']), - 'compartment_id': str(compartment['id']), - 'compartment_path': str(compartment['path']), - 'defined_tags': [] if apig.defined_tags is None else apig.defined_tags, - 'freeform_tags': [] if apig.freeform_tags is None else apig.freeform_tags, - 'region_name': str(self.config['region']), - 'deployments': [] - } + val = { + 'id': str(apig.id), + 'display_name': self.get_value(apig.display_name), + 'endpoint_type': self.get_value(apig.endpoint_type), + 'hostname': self.get_value(apig.hostname), + 'subnet_id': self.get_value(apig.subnet_id), + 'subnet_name': self.get_network_subnet(apig.subnet_id), + 'subnet': self.get_network_subnet(apig.subnet_id, detailed=True), + 'nsg_ids': self.get_values(apig.network_security_group_ids), + 'nsg_names': self.__load_core_network_get_nsg_names(apig.network_security_group_ids), + 'time_created': self.get_date(apig.time_created), + 'time_updated': self.get_date(apig.time_updated), + 'lifecycle_state': self.get_value(apig.lifecycle_state), + 'certificate_id': self.get_value(apig.certificate_id), + 'compartment_name': str(compartment['name']), + 'compartment_id': str(compartment['id']), + 'compartment_path': str(compartment['path']), + 'defined_tags': [] if apig.defined_tags is None else apig.defined_tags, + 'freeform_tags': [] if apig.freeform_tags is None else apig.freeform_tags, + 'region_name': str(self.config['region']), + 'deployments': [] + } # add the data cnt += 1 @@ -13929,8 +13994,8 @@ def __load_functions_applications(self, function_client, compartments): 'trace_config_is_enabled': self.get_value(app.trace_config.is_enabled) if app.trace_config else "", 'trace_config_domain_id': self.get_value(app.trace_config.domain_id) if app.trace_config else "", 'image_policy_is_enabled': self.get_value(app.image_policy_config.is_policy_enabled) if app.image_policy_config else "", - 'time_created': self.get_value(app.time_created, trim_date=True), - 'time_updated': self.get_value(app.time_updated, trim_date=True), + 'time_created': self.get_date(app.time_created), + 'time_updated': self.get_date(app.time_updated), 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), 'compartment_path': str(compartment['path']), @@ -13988,8 +14053,8 @@ def __load_functions_functions(self, function_client, application_id): 'memory_in_mbs': self.get_value(fun.memory_in_mbs), 'timeout_in_seconds': self.get_value(fun.timeout_in_seconds), 'invoke_endpoint': self.get_value(fun.invoke_endpoint), - 'time_created': self.get_value(fun.time_created), - 'time_updated': self.get_value(fun.time_updated), + 'time_created': self.get_date(fun.time_created), + 'time_updated': self.get_date(fun.time_updated), 'source_type': self.get_value(fun.source_details.source_type) if fun.source_details else "", 'provisioned_strategy': self.get_value(fun.provisioned_concurrency_config.strategy) if fun.provisioned_concurrency_config else "", 'trace_config_is_enabled': self.get_value(fun.trace_config.is_enabled) if fun.trace_config else "", @@ -14102,7 +14167,7 @@ def __load_resource_management_stacks(self, orm, compartments): 'operation': str(job.operation), 'lifecycle_state': str(job.lifecycle_state), 'time_finished': self.get_value(job.time_finished), - 'time_created': self.get_value(job.time_created)} + 'time_created': self.get_date(job.time_created)} datajob.append(jobval) # add the jobs to the array @@ -14177,7 +14242,7 @@ def __load_email_senders(self, email, compartments): val = {'id': str(sender.id), 'email_address': self.get_value(sender.email_address), 'lifecycle_state': self.get_value(sender.lifecycle_state), - 'time_created': self.get_value(sender.time_created), + 'time_created': self.get_date(sender.time_created), 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), 'compartment_path': str(compartment['path']), @@ -14254,7 +14319,7 @@ def __load_email_suppressions(self, email, compartments): for supp in suppressions: val = {'id': str(supp.id), 'email_address': self.get_value(supp.email_address), - 'time_created': self.get_value(supp.time_created), + 'time_created': self.get_date(supp.time_created), 'reason': self.get_value(supp.reason), 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), @@ -15860,8 +15925,8 @@ def __load_data_ai_catalog(self, dc_client, compartments): val = { 'id': str(arr.id), 'display_name': self.get_value(arr.display_name), - 'time_created': self.get_value(arr.time_created), - 'time_updated': self.get_value(arr.time_updated), + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), 'number_of_objects': self.get_value(arr.number_of_objects), 'lifecycle_state': self.get_value(arr.lifecycle_state), 'lifecycle_details': self.get_value(arr.lifecycle_details), @@ -15956,7 +16021,7 @@ def __load_data_ai_science(self, ds_client, compartments): val = { 'id': str(arr.id), 'display_name': self.get_value(arr.display_name), - 'time_created': self.get_value(arr.time_created), + 'time_created': self.get_date(arr.time_created), 'description': self.get_value(arr.description), 'created_by': self.get_value(arr.created_by), 'lifecycle_state': self.get_value(arr.lifecycle_state), @@ -16050,8 +16115,8 @@ def __load_data_ai_flow(self, df_client, compartments): val = { 'id': str(arr.id), 'display_name': self.get_value(arr.display_name), - 'time_created': self.get_value(arr.time_created), - 'time_updated': self.get_value(arr.time_updated), + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), 'language': self.get_value(arr.language), 'lifecycle_state': self.get_value(arr.lifecycle_state), 'owner_principal_id': self.get_value(arr.owner_principal_id), @@ -16148,8 +16213,8 @@ def __load_data_ai_oda(self, oda_client, compartments): 'display_name': self.get_value(oda.display_name), 'description': self.get_value(oda.description), 'shape_name': self.get_value(oda.shape_name), - 'time_created': self.get_value(oda.time_created), - 'time_updated': self.get_value(oda.time_updated), + 'time_created': self.get_date(oda.time_created), + 'time_updated': self.get_date(oda.time_updated), 'lifecycle_state': self.get_value(oda.lifecycle_state), 'lifecycle_sub_state': self.get_value(oda.lifecycle_sub_state), 'state_message': self.get_value(oda.state_message), @@ -16253,7 +16318,7 @@ def __load_data_ai_bds(self, bds_client, compartments): 'cluster_profile': self.get_value(bds.cluster_profile), 'lifecycle_state': self.get_value(bds.lifecycle_state), 'is_cloud_sql_configured': self.get_value(bds.is_cloud_sql_configured), - 'time_created': self.get_value(bds.time_created), + 'time_created': self.get_date(bds.time_created), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), @@ -16334,8 +16399,8 @@ def __load_data_ai_bds(self, bds_client, compartments): 'image_id': self.get_value(nd.image_id), 'availability_domain': self.get_value(nd.availability_domain), 'fault_domain': self.get_value(nd.fault_domain), - 'time_created': self.get_value(nd.time_created), - 'time_updated': self.get_value(nd.time_updated), + 'time_created': self.get_date(nd.time_created), + 'time_updated': self.get_date(nd.time_updated), 'ocpus': self.get_value(nd.ocpus), 'memory_in_gbs': self.get_value(nd.memory_in_gbs), 'nvmes': self.get_value(nd.nvmes), @@ -16374,8 +16439,8 @@ def __load_data_ai_bds(self, bds_client, compartments): 'display_name': self.get_value(ats.display_name), 'lifecycle_state': self.get_value(ats.lifecycle_state), 'node_type': self.get_value(ats.node_type), - 'time_created': self.get_value(ats.time_created, trim_date=True), - 'time_updated': self.get_value(ats.time_updated, trim_date=True), + 'time_created': self.get_date(ats.time_created), + 'time_updated': self.get_date(ats.time_updated), 'policy_type': self.get_value(ats.policy_details.policy_type) if ats.policy_details else "", 'policy_trigger_type': self.get_value(ats.policy_details.trigger_type) if ats.policy_details else "", 'policy_action_type': self.get_value(ats.policy_details.action_type) if ats.policy_details else "" @@ -16468,8 +16533,8 @@ def __load_data_ai_data_integration(self, di_client, compartments): 'description': self.get_value(di.description), 'display_name': self.get_value(di.display_name), 'lifecycle_state': self.get_value(di.lifecycle_state), - 'time_created': self.get_value(di.time_created), - 'time_updated': self.get_value(di.time_updated), + 'time_created': self.get_date(di.time_created), + 'time_updated': self.get_date(di.time_updated), 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), 'compartment_id': str(compartment['id']), @@ -16567,8 +16632,8 @@ def __load_data_ai_data_genai(self, ai_client, compartments): 'display_name': self.get_value(arr.display_name), 'lifecycle_state': self.get_value(arr.lifecycle_state), 'type': self.get_value(arr.type), - 'time_created': self.get_value(arr.time_created), - 'time_updated': self.get_value(arr.time_updated), + 'time_created': self.get_date(arr.time_created), + 'time_updated': self.get_date(arr.time_updated), 'unit_count': self.get_value(arr.unit_count), 'unit_shape': self.get_value(arr.unit_shape), 'capacity_type': self.get_value(arr.capacity_type.unit_shape) if arr.capacity_type else "", @@ -16799,8 +16864,8 @@ def __load_paas_ocvs(self, ocvs_client, cluster_client, esxi_client, virtual_net 'time_hcx_billing_cycle_end': self.get_value(vmware.time_hcx_billing_cycle_end), 'time_hcx_license_status_updated': self.get_value(vmware.time_hcx_license_status_updated), 'is_single_host_sddc': self.get_value(vmware.is_single_host_sddc) if vmware.is_single_host_sddc else "False", - 'time_created': self.get_value(vmware.time_created, trim_date=True), - 'time_updated': self.get_value(vmware.time_updated, trim_date=True), + 'time_created': self.get_date(vmware.time_created), + 'time_updated': self.get_date(vmware.time_updated), 'lifecycle_state': self.get_value(vmware.lifecycle_state), 'sum_info': "PaaS OCVS SDDC Clusters", 'sum_size_gb': self.get_value(vmware.clusters_count), @@ -16868,8 +16933,8 @@ def __load_paas_ocvs(self, ocvs_client, cluster_client, esxi_client, virtual_net 'esxi_hosts_count': self.get_value(cl.esxi_hosts_count), 'initial_commitment': self.get_value(cl.initial_commitment), 'workload_network_cidr': self.get_value(cl.workload_network_cidr), - 'time_created': self.get_value(cl.time_created, trim_date=True), - 'time_updated': self.get_value(cl.time_updated, trim_date=True), + 'time_created': self.get_date(cl.time_created), + 'time_updated': self.get_date(cl.time_updated), 'lifecycle_state': self.get_value(cl.lifecycle_state), 'initial_host_shape_name': self.get_value(cl.initial_host_shape_name), 'initial_host_ocpu_count': self.get_value(cl.initial_host_ocpu_count), @@ -16915,15 +16980,15 @@ def __load_paas_ocvs(self, ocvs_client, cluster_client, esxi_client, virtual_net 'cluster_id': self.get_value(esxi.cluster_id), 'display_name': self.get_value(esxi.display_name), 'compute_instance_id': self.get_value(esxi.compute_instance_id), - 'time_created': self.get_value(esxi.time_created, trim_date=True), - 'time_updated': self.get_value(esxi.time_updated, trim_date=True), + 'time_created': self.get_date(esxi.time_created), + 'time_updated': self.get_date(esxi.time_updated), 'lifecycle_state': self.get_value(esxi.lifecycle_state), 'current_commitment': self.get_value(esxi.current_commitment), 'next_commitment': self.get_value(esxi.next_commitment), 'billing_contract_end_date': self.get_value(esxi.billing_contract_end_date), 'failed_esxi_host_id': self.get_value(esxi.failed_esxi_host_id), 'replacement_esxi_host_id': self.get_value(esxi.replacement_esxi_host_id), - 'grace_period_end_date': self.get_value(esxi.grace_period_end_date, trim_date=True), + 'grace_period_end_date': self.get_date(esxi.grace_period_end_date), 'vmware_software_version': self.get_value(esxi.vmware_software_version), 'non_upgraded_esxi_host_id': self.get_value(esxi.non_upgraded_esxi_host_id), 'upgraded_replacement_esxi_host_id': self.get_value(esxi.upgraded_replacement_esxi_host_id), @@ -18060,7 +18125,7 @@ def __load_security_kms_keys(self, search_client): 'id': self.get_value(item.identifier), 'compartment_id': self.get_value(item.compartment_id), 'name': self.get_value(item.display_name), - 'time_created': self.get_value(item.time_created), + 'time_created': self.get_date(item.time_created), 'freeform_tags': [] if item.freeform_tags is None else item.freeform_tags, 'compartment_name': str(compartment['name']), 'compartment_path': str(compartment['path']), @@ -18560,7 +18625,7 @@ def __load_security_log_unified_agents(self, log_client, compartments): 'id': str(item.id), 'display_name': self.get_value(item.display_name), 'description': self.get_value(item.description), - 'time_created': self.get_value(item.time_created), + 'time_created': self.get_date(item.time_created), 'time_last_modified': self.get_value(item.time_last_modified), 'is_enabled': self.get_value(item.is_enabled), 'configuration_type': self.get_value(item.configuration_type), @@ -18790,8 +18855,8 @@ def __load_certificate_certificates(self, cert_client, compartments): 'issuer_certificate_authority_id': self.get_value(crt.issuer_certificate_authority_id), 'name': self.get_value(crt.name), 'description': self.get_value(crt.description), - 'time_created': self.get_value(crt.time_created, trim_date=True), - 'time_of_deletion': self.get_value(crt.time_of_deletion, trim_date=True), + 'time_created': self.get_date(crt.time_created), + 'time_of_deletion': self.get_date(crt.time_of_deletion), 'lifecycle_state': self.get_value(crt.lifecycle_state), 'certificate_rules': [{ 'rule_type': self.get_value(y.rule_type), @@ -18800,14 +18865,14 @@ def __load_certificate_certificates(self, cert_client, compartments): } for y in crt.certificate_rules] if crt.certificate_rules else [], 'current_certificate_id': self.get_value(vs.certificate_id) if vs else "", 'current_serial_number': self.get_value(vs.serial_number) if vs else "", - 'current_time_created': self.get_value(vs.time_created, trim_date=True) if vs else "", + 'current_time_created': self.get_date(vs.time_created) if vs else "", 'current_version_number': self.get_value(vs.version_number) if vs else "", 'current_issuer_ca_version_number': self.get_value(vs.issuer_ca_version_number) if vs else "", 'current_version_name': self.get_value(vs.version_name) if vs else "", 'current_time_of_deletion': self.get_value(vs.time_of_deletion) if vs else "", - 'current_validity_not_before': self.get_value(vs.validity.time_of_validity_not_before, trim_date=True) if vs and vs.validity else "", - 'current_validity_not_after': self.get_value(vs.validity.time_of_validity_not_after, trim_date=True) if vs and vs.validity else "", - 'current_time_of_revocation': self.get_value(vs.revocation_status.time_of_revocation, trim_date=True) if vs and vs.revocation_status else "", + 'current_validity_not_before': self.get_date(vs.validity.time_of_validity_not_before) if vs and vs.validity else "", + 'current_validity_not_after': self.get_date(vs.validity.time_of_validity_not_after) if vs and vs.validity else "", + 'current_time_of_revocation': self.get_date(vs.revocation_status.time_of_revocation) if vs and vs.revocation_status else "", 'current_revocation_reason': self.get_value(vs.revocation_status.revocation_reason) if vs and vs.revocation_status else "", 'common_name': self.get_value(crt.subject.common_name) if crt.subject else "", 'country': self.get_value(crt.subject.country) if crt.subject else "", @@ -18916,7 +18981,7 @@ def __load_certificate_associations(self, cert_client, compartments): val = { 'id': self.get_value(crt.id), 'name': self.get_value(crt.name), - 'time_created': self.get_value(crt.time_created, trim_date=True), + 'time_created': self.get_date(crt.time_created), 'lifecycle_state': self.get_value(crt.lifecycle_state), 'certificates_resource_id': self.get_value(crt.certificates_resource_id), 'associated_resource_id': self.get_value(crt.associated_resource_id), @@ -19006,7 +19071,7 @@ def __load_certificate_ca_bundles(self, cert_client, compartments): 'id': self.get_value(crt.id), 'name': self.get_value(crt.name), 'description': self.get_value(crt.description), - 'time_created': self.get_value(crt.time_created, trim_date=True), + 'time_created': self.get_date(crt.time_created), 'lifecycle_state': self.get_value(crt.lifecycle_state), 'defined_tags': [] if crt.defined_tags is None else crt.defined_tags, 'freeform_tags': [] if crt.freeform_tags is None else crt.freeform_tags, @@ -19099,8 +19164,8 @@ def __load_certificate_authorities(self, cert_client, compartments): 'issuer_certificate_authority_id': self.get_value(crt.issuer_certificate_authority_id), 'name': self.get_value(crt.name), 'description': self.get_value(crt.description), - 'time_created': self.get_value(crt.time_created, trim_date=True), - 'time_of_deletion': self.get_value(crt.time_of_deletion, trim_date=True), + 'time_created': self.get_date(crt.time_created), + 'time_of_deletion': self.get_date(crt.time_of_deletion), 'kms_key_id': self.get_value(crt.kms_key_id), 'lifecycle_state': self.get_value(crt.lifecycle_state), 'certificate_authority_rules': [{ @@ -19111,13 +19176,13 @@ def __load_certificate_authorities(self, cert_client, compartments): 'current_certificate_authority_id': self.get_value(vs.certificate_authority_id) if vs else "", 'current_issuer_ca_version_number': self.get_value(vs.issuer_ca_version_number) if vs else "", 'current_serial_number': self.get_value(vs.serial_number) if vs else "", - 'current_time_created': self.get_value(vs.time_created, trim_date=True) if vs else "", + 'current_time_created': self.get_date(vs.time_created) if vs else "", 'current_version_number': self.get_value(vs.version_number) if vs else "", 'current_version_name': self.get_value(vs.version_name) if crt.current_version_summary else "", - 'current_time_of_deletion': self.get_value(vs.time_of_deletion, trim_date=True) if crt.current_version_summary else "", - 'current_validity_not_before': self.get_value(vs.validity.time_of_validity_not_before, trim_date=True) if vs and vs.validity else "", - 'current_validity_not_after': self.get_value(vs.validity.time_of_validity_not_after, trim_date=True) if vs and vs.validity else "", - 'current_time_of_revocation': self.get_value(vs.revocation_status.time_of_revocation, trim_date=True) if vs and vs.revocation_status else "", + 'current_time_of_deletion': self.get_date(vs.time_of_deletion) if crt.current_version_summary else "", + 'current_validity_not_before': self.get_date(vs.validity.time_of_validity_not_before) if vs and vs.validity else "", + 'current_validity_not_after': self.get_date(vs.validity.time_of_validity_not_after) if vs and vs.validity else "", + 'current_time_of_revocation': self.get_date(vs.revocation_status.time_of_revocation) if vs and vs.revocation_status else "", 'current_revocation_reason': self.get_value(vs.revocation_status.revocation_reason) if vs and vs.revocation_status else "", 'common_name': self.get_value(crt.subject.common_name) if crt.subject else "", 'country': self.get_value(crt.subject.country) if crt.subject else "", @@ -19255,8 +19320,8 @@ def __load_announcements(self, announcement_client, tenancy_id): 'affected_regions': str(', '.join(x for x in ann.affected_regions)), 'announcement_type': self.get_value(ann.announcement_type), 'is_banner': self.get_value(ann.is_banner), - 'time_created': self.get_value(ann.time_created, trim_date=True), - 'time_updated': self.get_value(ann.time_updated, trim_date=True), + 'time_created': self.get_date(ann.time_created), + 'time_updated': self.get_date(ann.time_updated), 'environment_name': self.get_value(ann.environment_name), 'platform_type': self.get_value(ann.platform_type), 'chain_id': self.get_value(ann.chain_id), @@ -21341,7 +21406,7 @@ def load_identity_domains_main(self, compartments): 'type': self.get_value(domain.type), 'license_type': self.get_value(domain.license_type), 'is_hidden_on_login': self.get_value(domain.is_hidden_on_login), - 'time_created': self.get_value(domain.time_created)[0:16], + 'time_created': self.get_date(domain.time_created), 'lifecycle_state': self.get_value(domain.lifecycle_state), 'defined_tags': [] if domain.defined_tags is None else domain.defined_tags, 'freeform_tags': [] if domain.freeform_tags is None else domain.freeform_tags, @@ -21354,6 +21419,8 @@ def load_identity_domains_main(self, compartments): 'authentication_factor_settings': [], 'password_policies': [], 'policies': [], + 'rules': [], + 'conditions': [], 'compartment_name': str(compartment['name']), 'compartment_id': str(compartment['id']), 'compartment_path': str(compartment['path']) diff --git a/src/oci/ai_language/models/__init__.py b/src/oci/ai_language/models/__init__.py index 67f8a361e6..72ba824465 100644 --- a/src/oci/ai_language/models/__init__.py +++ b/src/oci/ai_language/models/__init__.py @@ -69,6 +69,7 @@ from .evaluation_results import EvaluationResults from .health_entity import HealthEntity from .health_entity_document_result import HealthEntityDocumentResult +from .health_nlu_model_details import HealthNluModelDetails from .hierarchical_entity import HierarchicalEntity from .input_configuration import InputConfiguration from .input_location import InputLocation @@ -80,6 +81,7 @@ from .location_details import LocationDetails from .mel_concept import MelConcept from .mel_concept_details import MelConceptDetails +from .meta_info import MetaInfo from .model import Model from .model_collection import ModelCollection from .model_details import ModelDetails @@ -111,6 +113,7 @@ from .pre_trained_sentiment_analysis_model_details import PreTrainedSentimentAnalysisModelDetails from .pre_trained_summarization import PreTrainedSummarization from .pre_trained_text_classification_model_details import PreTrainedTextClassificationModelDetails +from .pre_trained_translation_model_details import PreTrainedTranslationModelDetails from .pre_trained_universal_model import PreTrainedUniversalModel from .profile import Profile from .project import Project @@ -210,6 +213,7 @@ "EvaluationResults": EvaluationResults, "HealthEntity": HealthEntity, "HealthEntityDocumentResult": HealthEntityDocumentResult, + "HealthNluModelDetails": HealthNluModelDetails, "HierarchicalEntity": HierarchicalEntity, "InputConfiguration": InputConfiguration, "InputLocation": InputLocation, @@ -221,6 +225,7 @@ "LocationDetails": LocationDetails, "MelConcept": MelConcept, "MelConceptDetails": MelConceptDetails, + "MetaInfo": MetaInfo, "Model": Model, "ModelCollection": ModelCollection, "ModelDetails": ModelDetails, @@ -252,6 +257,7 @@ "PreTrainedSentimentAnalysisModelDetails": PreTrainedSentimentAnalysisModelDetails, "PreTrainedSummarization": PreTrainedSummarization, "PreTrainedTextClassificationModelDetails": PreTrainedTextClassificationModelDetails, + "PreTrainedTranslationModelDetails": PreTrainedTranslationModelDetails, "PreTrainedUniversalModel": PreTrainedUniversalModel, "Profile": Profile, "Project": Project, diff --git a/src/oci/ai_language/models/batch_detect_dominant_language_details.py b/src/oci/ai_language/models/batch_detect_dominant_language_details.py index 5b705c7037..745ee281f5 100644 --- a/src/oci/ai_language/models/batch_detect_dominant_language_details.py +++ b/src/oci/ai_language/models/batch_detect_dominant_language_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectDominantLanguageDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectDominantLanguageDetails. + :type alias: str + :param should_ignore_transliteration: The value to assign to the should_ignore_transliteration property of this BatchDetectDominantLanguageDetails. :type should_ignore_transliteration: bool @@ -42,6 +46,7 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'should_ignore_transliteration': 'bool', 'chars_to_consider': 'int', 'endpoint_id': 'str', @@ -50,6 +55,7 @@ def __init__(self, **kwargs): } self.attribute_map = { + 'alias': 'alias', 'should_ignore_transliteration': 'shouldIgnoreTransliteration', 'chars_to_consider': 'charsToConsider', 'endpoint_id': 'endpointId', @@ -57,12 +63,37 @@ def __init__(self, **kwargs): 'documents': 'documents' } + self._alias = None self._should_ignore_transliteration = None self._chars_to_consider = None self._endpoint_id = None self._compartment_id = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectDominantLanguageDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectDominantLanguageDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectDominantLanguageDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectDominantLanguageDetails. + :type: str + """ + self._alias = alias + @property def should_ignore_transliteration(self): """ diff --git a/src/oci/ai_language/models/batch_detect_health_entity_details.py b/src/oci/ai_language/models/batch_detect_health_entity_details.py index b96a252124..f0a060a6c2 100644 --- a/src/oci/ai_language/models/batch_detect_health_entity_details.py +++ b/src/oci/ai_language/models/batch_detect_health_entity_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectHealthEntityDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectHealthEntityDetails. + :type alias: str + :param endpoint_id: The value to assign to the endpoint_id property of this BatchDetectHealthEntityDetails. :type endpoint_id: str @@ -46,6 +50,7 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'endpoint_id': 'str', 'documents': 'list[TextDocument]', 'link_ontologies': 'list[str]', @@ -55,6 +60,7 @@ def __init__(self, **kwargs): } self.attribute_map = { + 'alias': 'alias', 'endpoint_id': 'endpointId', 'documents': 'documents', 'link_ontologies': 'linkOntologies', @@ -63,6 +69,7 @@ def __init__(self, **kwargs): 'profile': 'profile' } + self._alias = None self._endpoint_id = None self._documents = None self._link_ontologies = None @@ -70,6 +77,30 @@ def __init__(self, **kwargs): self._is_detect_relationships = None self._profile = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectHealthEntityDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectHealthEntityDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectHealthEntityDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectHealthEntityDetails. + :type: str + """ + self._alias = alias + @property def endpoint_id(self): """ diff --git a/src/oci/ai_language/models/batch_detect_language_entities_details.py b/src/oci/ai_language/models/batch_detect_language_entities_details.py index f5d13f052e..897343f1b0 100644 --- a/src/oci/ai_language/models/batch_detect_language_entities_details.py +++ b/src/oci/ai_language/models/batch_detect_language_entities_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectLanguageEntitiesDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectLanguageEntitiesDetails. + :type alias: str + :param compartment_id: The value to assign to the compartment_id property of this BatchDetectLanguageEntitiesDetails. :type compartment_id: str @@ -34,21 +38,48 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'compartment_id': 'str', 'endpoint_id': 'str', 'documents': 'list[TextDocument]' } self.attribute_map = { + 'alias': 'alias', 'compartment_id': 'compartmentId', 'endpoint_id': 'endpointId', 'documents': 'documents' } + self._alias = None self._compartment_id = None self._endpoint_id = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectLanguageEntitiesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectLanguageEntitiesDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectLanguageEntitiesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectLanguageEntitiesDetails. + :type: str + """ + self._alias = alias + @property def compartment_id(self): """ diff --git a/src/oci/ai_language/models/batch_detect_language_key_phrases_details.py b/src/oci/ai_language/models/batch_detect_language_key_phrases_details.py index ae396f7524..6bbde1b6a2 100644 --- a/src/oci/ai_language/models/batch_detect_language_key_phrases_details.py +++ b/src/oci/ai_language/models/batch_detect_language_key_phrases_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectLanguageKeyPhrasesDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectLanguageKeyPhrasesDetails. + :type alias: str + :param endpoint_id: The value to assign to the endpoint_id property of this BatchDetectLanguageKeyPhrasesDetails. :type endpoint_id: str @@ -34,21 +38,48 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'endpoint_id': 'str', 'compartment_id': 'str', 'documents': 'list[TextDocument]' } self.attribute_map = { + 'alias': 'alias', 'endpoint_id': 'endpointId', 'compartment_id': 'compartmentId', 'documents': 'documents' } + self._alias = None self._endpoint_id = None self._compartment_id = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectLanguageKeyPhrasesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectLanguageKeyPhrasesDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectLanguageKeyPhrasesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectLanguageKeyPhrasesDetails. + :type: str + """ + self._alias = alias + @property def endpoint_id(self): """ diff --git a/src/oci/ai_language/models/batch_detect_language_pii_entities_details.py b/src/oci/ai_language/models/batch_detect_language_pii_entities_details.py index 915d5bd451..b1373a4791 100644 --- a/src/oci/ai_language/models/batch_detect_language_pii_entities_details.py +++ b/src/oci/ai_language/models/batch_detect_language_pii_entities_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectLanguagePiiEntitiesDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectLanguagePiiEntitiesDetails. + :type alias: str + :param endpoint_id: The value to assign to the endpoint_id property of this BatchDetectLanguagePiiEntitiesDetails. :type endpoint_id: str @@ -42,6 +46,7 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'endpoint_id': 'str', 'compartment_id': 'str', 'documents': 'list[TextDocument]', @@ -50,6 +55,7 @@ def __init__(self, **kwargs): } self.attribute_map = { + 'alias': 'alias', 'endpoint_id': 'endpointId', 'compartment_id': 'compartmentId', 'documents': 'documents', @@ -57,12 +63,37 @@ def __init__(self, **kwargs): 'profile': 'profile' } + self._alias = None self._endpoint_id = None self._compartment_id = None self._documents = None self._masking = None self._profile = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectLanguagePiiEntitiesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectLanguagePiiEntitiesDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectLanguagePiiEntitiesDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectLanguagePiiEntitiesDetails. + :type: str + """ + self._alias = alias + @property def endpoint_id(self): """ diff --git a/src/oci/ai_language/models/batch_detect_language_sentiments_details.py b/src/oci/ai_language/models/batch_detect_language_sentiments_details.py index bb4c6ad980..5358f94262 100644 --- a/src/oci/ai_language/models/batch_detect_language_sentiments_details.py +++ b/src/oci/ai_language/models/batch_detect_language_sentiments_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectLanguageSentimentsDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectLanguageSentimentsDetails. + :type alias: str + :param endpoint_id: The value to assign to the endpoint_id property of this BatchDetectLanguageSentimentsDetails. :type endpoint_id: str @@ -34,21 +38,48 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'endpoint_id': 'str', 'compartment_id': 'str', 'documents': 'list[TextDocument]' } self.attribute_map = { + 'alias': 'alias', 'endpoint_id': 'endpointId', 'compartment_id': 'compartmentId', 'documents': 'documents' } + self._alias = None self._endpoint_id = None self._compartment_id = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectLanguageSentimentsDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectLanguageSentimentsDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectLanguageSentimentsDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectLanguageSentimentsDetails. + :type: str + """ + self._alias = alias + @property def endpoint_id(self): """ diff --git a/src/oci/ai_language/models/batch_detect_language_text_classification_details.py b/src/oci/ai_language/models/batch_detect_language_text_classification_details.py index 5ee44746e8..58931a0732 100644 --- a/src/oci/ai_language/models/batch_detect_language_text_classification_details.py +++ b/src/oci/ai_language/models/batch_detect_language_text_classification_details.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new BatchDetectLanguageTextClassificationDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchDetectLanguageTextClassificationDetails. + :type alias: str + :param compartment_id: The value to assign to the compartment_id property of this BatchDetectLanguageTextClassificationDetails. :type compartment_id: str @@ -34,21 +38,48 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', 'compartment_id': 'str', 'endpoint_id': 'str', 'documents': 'list[TextDocument]' } self.attribute_map = { + 'alias': 'alias', 'compartment_id': 'compartmentId', 'endpoint_id': 'endpointId', 'documents': 'documents' } + self._alias = None self._compartment_id = None self._endpoint_id = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchDetectLanguageTextClassificationDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this BatchDetectLanguageTextClassificationDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchDetectLanguageTextClassificationDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this BatchDetectLanguageTextClassificationDetails. + :type: str + """ + self._alias = alias + @property def compartment_id(self): """ diff --git a/src/oci/ai_language/models/batch_language_translation_details.py b/src/oci/ai_language/models/batch_language_translation_details.py index 2c367d27aa..d4d7fa8048 100644 --- a/src/oci/ai_language/models/batch_language_translation_details.py +++ b/src/oci/ai_language/models/batch_language_translation_details.py @@ -20,6 +20,18 @@ def __init__(self, **kwargs): Initializes a new BatchLanguageTranslationDetails object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param alias: + The value to assign to the alias property of this BatchLanguageTranslationDetails. + :type alias: str + + :param endpoint_id: + The value to assign to the endpoint_id property of this BatchLanguageTranslationDetails. + :type endpoint_id: str + + :param no_translate: + The value to assign to the no_translate property of this BatchLanguageTranslationDetails. + :type no_translate: list[str] + :param compartment_id: The value to assign to the compartment_id property of this BatchLanguageTranslationDetails. :type compartment_id: str @@ -34,21 +46,102 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'alias': 'str', + 'endpoint_id': 'str', + 'no_translate': 'list[str]', 'compartment_id': 'str', 'target_language_code': 'str', 'documents': 'list[TextDocument]' } self.attribute_map = { + 'alias': 'alias', + 'endpoint_id': 'endpointId', + 'no_translate': 'noTranslate', 'compartment_id': 'compartmentId', 'target_language_code': 'targetLanguageCode', 'documents': 'documents' } + self._alias = None + self._endpoint_id = None + self._no_translate = None self._compartment_id = None self._target_language_code = None self._documents = None + @property + def alias(self): + """ + Gets the alias of this BatchLanguageTranslationDetails. + Unique name to identify an endpoint to be used for inferencing + + + :return: The alias of this BatchLanguageTranslationDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this BatchLanguageTranslationDetails. + Unique name to identify an endpoint to be used for inferencing + + + :param alias: The alias of this BatchLanguageTranslationDetails. + :type: str + """ + self._alias = alias + + @property + def endpoint_id(self): + """ + Gets the endpoint_id of this BatchLanguageTranslationDetails. + The endpoint that has to be used for inferencing. + + + :return: The endpoint_id of this BatchLanguageTranslationDetails. + :rtype: str + """ + return self._endpoint_id + + @endpoint_id.setter + def endpoint_id(self, endpoint_id): + """ + Sets the endpoint_id of this BatchLanguageTranslationDetails. + The endpoint that has to be used for inferencing. + + + :param endpoint_id: The endpoint_id of this BatchLanguageTranslationDetails. + :type: str + """ + self._endpoint_id = endpoint_id + + @property + def no_translate(self): + """ + Gets the no_translate of this BatchLanguageTranslationDetails. + List of words not to be translated + + + :return: The no_translate of this BatchLanguageTranslationDetails. + :rtype: list[str] + """ + return self._no_translate + + @no_translate.setter + def no_translate(self, no_translate): + """ + Sets the no_translate of this BatchLanguageTranslationDetails. + List of words not to be translated + + + :param no_translate: The no_translate of this BatchLanguageTranslationDetails. + :type: list[str] + """ + self._no_translate = no_translate + @property def compartment_id(self): """ diff --git a/src/oci/ai_language/models/create_endpoint_details.py b/src/oci/ai_language/models/create_endpoint_details.py index 39dd9eaa06..1b19ca7f50 100644 --- a/src/oci/ai_language/models/create_endpoint_details.py +++ b/src/oci/ai_language/models/create_endpoint_details.py @@ -15,6 +15,14 @@ class CreateEndpointDetails(object): The information needed to create a new endpoint and expose to end users. """ + #: A constant which can be used with the compute_type property of a CreateEndpointDetails. + #: This constant has a value of "CPU" + COMPUTE_TYPE_CPU = "CPU" + + #: A constant which can be used with the compute_type property of a CreateEndpointDetails. + #: This constant has a value of "GPU" + COMPUTE_TYPE_GPU = "GPU" + def __init__(self, **kwargs): """ Initializes a new CreateEndpointDetails object with values from keyword arguments. @@ -24,6 +32,15 @@ def __init__(self, **kwargs): The value to assign to the display_name property of this CreateEndpointDetails. :type display_name: str + :param compute_type: + The value to assign to the compute_type property of this CreateEndpointDetails. + Allowed values for this property are: "CPU", "GPU" + :type compute_type: str + + :param alias: + The value to assign to the alias property of this CreateEndpointDetails. + :type alias: str + :param description: The value to assign to the description property of this CreateEndpointDetails. :type description: str @@ -51,6 +68,8 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'display_name': 'str', + 'compute_type': 'str', + 'alias': 'str', 'description': 'str', 'compartment_id': 'str', 'model_id': 'str', @@ -61,6 +80,8 @@ def __init__(self, **kwargs): self.attribute_map = { 'display_name': 'displayName', + 'compute_type': 'computeType', + 'alias': 'alias', 'description': 'description', 'compartment_id': 'compartmentId', 'model_id': 'modelId', @@ -70,6 +91,8 @@ def __init__(self, **kwargs): } self._display_name = None + self._compute_type = None + self._alias = None self._description = None self._compartment_id = None self._model_id = None @@ -101,6 +124,61 @@ def display_name(self, display_name): """ self._display_name = display_name + @property + def compute_type(self): + """ + Gets the compute_type of this CreateEndpointDetails. + Compute infra type for endpoint. + + Allowed values for this property are: "CPU", "GPU" + + + :return: The compute_type of this CreateEndpointDetails. + :rtype: str + """ + return self._compute_type + + @compute_type.setter + def compute_type(self, compute_type): + """ + Sets the compute_type of this CreateEndpointDetails. + Compute infra type for endpoint. + + + :param compute_type: The compute_type of this CreateEndpointDetails. + :type: str + """ + allowed_values = ["CPU", "GPU"] + if not value_allowed_none_or_none_sentinel(compute_type, allowed_values): + raise ValueError( + f"Invalid value for `compute_type`, must be None or one of {allowed_values}" + ) + self._compute_type = compute_type + + @property + def alias(self): + """ + Gets the alias of this CreateEndpointDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this CreateEndpointDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this CreateEndpointDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this CreateEndpointDetails. + :type: str + """ + self._alias = alias + @property def description(self): """ diff --git a/src/oci/ai_language/models/endpoint.py b/src/oci/ai_language/models/endpoint.py index 3850b3e272..590ba65092 100644 --- a/src/oci/ai_language/models/endpoint.py +++ b/src/oci/ai_language/models/endpoint.py @@ -15,6 +15,14 @@ class Endpoint(object): Description of the endpoint. """ + #: A constant which can be used with the compute_type property of a Endpoint. + #: This constant has a value of "CPU" + COMPUTE_TYPE_CPU = "CPU" + + #: A constant which can be used with the compute_type property of a Endpoint. + #: This constant has a value of "GPU" + COMPUTE_TYPE_GPU = "GPU" + #: A constant which can be used with the lifecycle_state property of a Endpoint. #: This constant has a value of "DELETING" LIFECYCLE_STATE_DELETING = "DELETING" @@ -48,6 +56,16 @@ def __init__(self, **kwargs): The value to assign to the id property of this Endpoint. :type id: str + :param alias: + The value to assign to the alias property of this Endpoint. + :type alias: str + + :param compute_type: + The value to assign to the compute_type property of this Endpoint. + Allowed values for this property are: "CPU", "GPU", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type compute_type: str + :param display_name: The value to assign to the display_name property of this Endpoint. :type display_name: str @@ -105,6 +123,8 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'id': 'str', + 'alias': 'str', + 'compute_type': 'str', 'display_name': 'str', 'compartment_id': 'str', 'project_id': 'str', @@ -122,6 +142,8 @@ def __init__(self, **kwargs): self.attribute_map = { 'id': 'id', + 'alias': 'alias', + 'compute_type': 'computeType', 'display_name': 'displayName', 'compartment_id': 'compartmentId', 'project_id': 'projectId', @@ -138,6 +160,8 @@ def __init__(self, **kwargs): } self._id = None + self._alias = None + self._compute_type = None self._display_name = None self._compartment_id = None self._project_id = None @@ -176,6 +200,60 @@ def id(self, id): """ self._id = id + @property + def alias(self): + """ + Gets the alias of this Endpoint. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this Endpoint. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this Endpoint. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this Endpoint. + :type: str + """ + self._alias = alias + + @property + def compute_type(self): + """ + Gets the compute_type of this Endpoint. + Compute infra type for endpoint. + + Allowed values for this property are: "CPU", "GPU", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The compute_type of this Endpoint. + :rtype: str + """ + return self._compute_type + + @compute_type.setter + def compute_type(self, compute_type): + """ + Sets the compute_type of this Endpoint. + Compute infra type for endpoint. + + + :param compute_type: The compute_type of this Endpoint. + :type: str + """ + allowed_values = ["CPU", "GPU"] + if not value_allowed_none_or_none_sentinel(compute_type, allowed_values): + compute_type = 'UNKNOWN_ENUM_VALUE' + self._compute_type = compute_type + @property def display_name(self): """ diff --git a/src/oci/ai_language/models/endpoint_summary.py b/src/oci/ai_language/models/endpoint_summary.py index f0684a95f5..afb2a78553 100644 --- a/src/oci/ai_language/models/endpoint_summary.py +++ b/src/oci/ai_language/models/endpoint_summary.py @@ -15,6 +15,14 @@ class EndpointSummary(object): Summary of the language endpoint. """ + #: A constant which can be used with the compute_type property of a EndpointSummary. + #: This constant has a value of "CPU" + COMPUTE_TYPE_CPU = "CPU" + + #: A constant which can be used with the compute_type property of a EndpointSummary. + #: This constant has a value of "GPU" + COMPUTE_TYPE_GPU = "GPU" + def __init__(self, **kwargs): """ Initializes a new EndpointSummary object with values from keyword arguments. @@ -24,6 +32,16 @@ def __init__(self, **kwargs): The value to assign to the id property of this EndpointSummary. :type id: str + :param alias: + The value to assign to the alias property of this EndpointSummary. + :type alias: str + + :param compute_type: + The value to assign to the compute_type property of this EndpointSummary. + Allowed values for this property are: "CPU", "GPU", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type compute_type: str + :param display_name: The value to assign to the display_name property of this EndpointSummary. :type display_name: str @@ -75,6 +93,8 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'id': 'str', + 'alias': 'str', + 'compute_type': 'str', 'display_name': 'str', 'compartment_id': 'str', 'project_id': 'str', @@ -91,6 +111,8 @@ def __init__(self, **kwargs): self.attribute_map = { 'id': 'id', + 'alias': 'alias', + 'compute_type': 'computeType', 'display_name': 'displayName', 'compartment_id': 'compartmentId', 'project_id': 'projectId', @@ -106,6 +128,8 @@ def __init__(self, **kwargs): } self._id = None + self._alias = None + self._compute_type = None self._display_name = None self._compartment_id = None self._project_id = None @@ -143,6 +167,60 @@ def id(self, id): """ self._id = id + @property + def alias(self): + """ + Gets the alias of this EndpointSummary. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this EndpointSummary. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this EndpointSummary. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this EndpointSummary. + :type: str + """ + self._alias = alias + + @property + def compute_type(self): + """ + Gets the compute_type of this EndpointSummary. + Compute infra type for endpoint. + + Allowed values for this property are: "CPU", "GPU", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The compute_type of this EndpointSummary. + :rtype: str + """ + return self._compute_type + + @compute_type.setter + def compute_type(self, compute_type): + """ + Sets the compute_type of this EndpointSummary. + Compute infra type for endpoint. + + + :param compute_type: The compute_type of this EndpointSummary. + :type: str + """ + allowed_values = ["CPU", "GPU"] + if not value_allowed_none_or_none_sentinel(compute_type, allowed_values): + compute_type = 'UNKNOWN_ENUM_VALUE' + self._compute_type = compute_type + @property def display_name(self): """ diff --git a/src/oci/ai_language/models/health_nlu_model_details.py b/src/oci/ai_language/models/health_nlu_model_details.py new file mode 100644 index 0000000000..6cfc2f68ca --- /dev/null +++ b/src/oci/ai_language/models/health_nlu_model_details.py @@ -0,0 +1,91 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20221001 + +from .model_details import ModelDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class HealthNluModelDetails(ModelDetails): + """ + Possible health NLU model information. + """ + + def __init__(self, **kwargs): + """ + Initializes a new HealthNluModelDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.ai_language.models.HealthNluModelDetails.model_type` attribute + of this class is ``HEALTH_NLU`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param language_code: + The value to assign to the language_code property of this HealthNluModelDetails. + :type language_code: str + + :param model_type: + The value to assign to the model_type property of this HealthNluModelDetails. + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" + :type model_type: str + + :param version: + The value to assign to the version property of this HealthNluModelDetails. + :type version: str + + """ + self.swagger_types = { + 'language_code': 'str', + 'model_type': 'str', + 'version': 'str' + } + + self.attribute_map = { + 'language_code': 'languageCode', + 'model_type': 'modelType', + 'version': 'version' + } + + self._language_code = None + self._model_type = None + self._version = None + self._model_type = 'HEALTH_NLU' + + @property + def version(self): + """ + Gets the version of this HealthNluModelDetails. + Optional pre trained model version. If nothing specified latest pre trained model will be used. + Supported versions can be found at /modelTypes/{modelType} + + + :return: The version of this HealthNluModelDetails. + :rtype: str + """ + return self._version + + @version.setter + def version(self, version): + """ + Sets the version of this HealthNluModelDetails. + Optional pre trained model version. If nothing specified latest pre trained model will be used. + Supported versions can be found at /modelTypes/{modelType} + + + :param version: The version of this HealthNluModelDetails. + :type: str + """ + self._version = version + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/ai_language/models/hierarchical_entity.py b/src/oci/ai_language/models/hierarchical_entity.py index a004a4c389..a5646d9d1d 100644 --- a/src/oci/ai_language/models/hierarchical_entity.py +++ b/src/oci/ai_language/models/hierarchical_entity.py @@ -20,6 +20,10 @@ def __init__(self, **kwargs): Initializes a new HierarchicalEntity object with values from keyword arguments. The following keyword arguments are supported (corresponding to the getters/setters of this class): + :param meta_info: + The value to assign to the meta_info property of this HierarchicalEntity. + :type meta_info: oci.ai_language.models.MetaInfo + :param offset: The value to assign to the offset property of this HierarchicalEntity. :type offset: int @@ -46,6 +50,7 @@ def __init__(self, **kwargs): """ self.swagger_types = { + 'meta_info': 'MetaInfo', 'offset': 'int', 'length': 'int', 'text': 'str', @@ -55,6 +60,7 @@ def __init__(self, **kwargs): } self.attribute_map = { + 'meta_info': 'metaInfo', 'offset': 'offset', 'length': 'length', 'text': 'text', @@ -63,6 +69,7 @@ def __init__(self, **kwargs): 'score': 'score' } + self._meta_info = None self._offset = None self._length = None self._text = None @@ -70,6 +77,26 @@ def __init__(self, **kwargs): self._sub_type = None self._score = None + @property + def meta_info(self): + """ + Gets the meta_info of this HierarchicalEntity. + + :return: The meta_info of this HierarchicalEntity. + :rtype: oci.ai_language.models.MetaInfo + """ + return self._meta_info + + @meta_info.setter + def meta_info(self, meta_info): + """ + Sets the meta_info of this HierarchicalEntity. + + :param meta_info: The meta_info of this HierarchicalEntity. + :type: oci.ai_language.models.MetaInfo + """ + self._meta_info = meta_info + @property def offset(self): """ diff --git a/src/oci/ai_language/models/meta_info.py b/src/oci/ai_language/models/meta_info.py new file mode 100644 index 0000000000..783647eb94 --- /dev/null +++ b/src/oci/ai_language/models/meta_info.py @@ -0,0 +1,196 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20221001 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class MetaInfo(object): + """ + MetaInfo of entity detected. + """ + + def __init__(self, **kwargs): + """ + Initializes a new MetaInfo object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param offset: + The value to assign to the offset property of this MetaInfo. + :type offset: int + + :param length: + The value to assign to the length property of this MetaInfo. + :type length: int + + :param text: + The value to assign to the text property of this MetaInfo. + :type text: str + + :param sub_type: + The value to assign to the sub_type property of this MetaInfo. + :type sub_type: str + + :param score: + The value to assign to the score property of this MetaInfo. + :type score: float + + """ + self.swagger_types = { + 'offset': 'int', + 'length': 'int', + 'text': 'str', + 'sub_type': 'str', + 'score': 'float' + } + + self.attribute_map = { + 'offset': 'offset', + 'length': 'length', + 'text': 'text', + 'sub_type': 'subType', + 'score': 'score' + } + + self._offset = None + self._length = None + self._text = None + self._sub_type = None + self._score = None + + @property + def offset(self): + """ + Gets the offset of this MetaInfo. + The number of Unicode code points preceding this entity in the submitted text. + + + :return: The offset of this MetaInfo. + :rtype: int + """ + return self._offset + + @offset.setter + def offset(self, offset): + """ + Sets the offset of this MetaInfo. + The number of Unicode code points preceding this entity in the submitted text. + + + :param offset: The offset of this MetaInfo. + :type: int + """ + self._offset = offset + + @property + def length(self): + """ + Gets the length of this MetaInfo. + Length of entity text. + + + :return: The length of this MetaInfo. + :rtype: int + """ + return self._length + + @length.setter + def length(self, length): + """ + Sets the length of this MetaInfo. + Length of entity text. + + + :param length: The length of this MetaInfo. + :type: int + """ + self._length = length + + @property + def text(self): + """ + Gets the text of this MetaInfo. + Entity text like name of person, location, and so on. + + + :return: The text of this MetaInfo. + :rtype: str + """ + return self._text + + @text.setter + def text(self, text): + """ + Sets the text of this MetaInfo. + Entity text like name of person, location, and so on. + + + :param text: The text of this MetaInfo. + :type: str + """ + self._text = text + + @property + def sub_type(self): + """ + Gets the sub_type of this MetaInfo. + Sub-type of entity text like GPE for LOCATION type. + + + :return: The sub_type of this MetaInfo. + :rtype: str + """ + return self._sub_type + + @sub_type.setter + def sub_type(self, sub_type): + """ + Sets the sub_type of this MetaInfo. + Sub-type of entity text like GPE for LOCATION type. + + + :param sub_type: The sub_type of this MetaInfo. + :type: str + """ + self._sub_type = sub_type + + @property + def score(self): + """ + Gets the score of this MetaInfo. + Score or confidence for detected entity. + + + :return: The score of this MetaInfo. + :rtype: float + """ + return self._score + + @score.setter + def score(self, score): + """ + Sets the score of this MetaInfo. + Score or confidence for detected entity. + + + :param score: The score of this MetaInfo. + :type: float + """ + self._score = score + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/ai_language/models/model_details.py b/src/oci/ai_language/models/model_details.py index a0a6dda951..19ddc11cf0 100644 --- a/src/oci/ai_language/models/model_details.py +++ b/src/oci/ai_language/models/model_details.py @@ -47,10 +47,6 @@ class ModelDetails(object): #: This constant has a value of "PRE_TRAINED_PII" MODEL_TYPE_PRE_TRAINED_PII = "PRE_TRAINED_PII" - #: A constant which can be used with the model_type property of a ModelDetails. - #: This constant has a value of "PRE_TRAINED_TRANSLATION" - MODEL_TYPE_PRE_TRAINED_TRANSLATION = "PRE_TRAINED_TRANSLATION" - #: A constant which can be used with the model_type property of a ModelDetails. #: This constant has a value of "PRE_TRAINED_HEALTH_NLU" MODEL_TYPE_PRE_TRAINED_HEALTH_NLU = "PRE_TRAINED_HEALTH_NLU" @@ -67,22 +63,32 @@ class ModelDetails(object): #: This constant has a value of "PII" MODEL_TYPE_PII = "PII" + #: A constant which can be used with the model_type property of a ModelDetails. + #: This constant has a value of "PRE_TRAINED_TRANSLATION" + MODEL_TYPE_PRE_TRAINED_TRANSLATION = "PRE_TRAINED_TRANSLATION" + + #: A constant which can be used with the model_type property of a ModelDetails. + #: This constant has a value of "HEALTH_NLU" + MODEL_TYPE_HEALTH_NLU = "HEALTH_NLU" + def __init__(self, **kwargs): """ Initializes a new ModelDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input to a service operations then you should favor using a subclass over the base class: * :class:`~oci.ai_language.models.PreTrainedKeyPhraseExtractionModelDetails` + * :class:`~oci.ai_language.models.PreTrainedTranslationModelDetails` * :class:`~oci.ai_language.models.PreTrainedHealthNluModelDetails` * :class:`~oci.ai_language.models.PreTrainedUniversalModel` - * :class:`~oci.ai_language.models.NamedEntityRecognitionModelDetails` - * :class:`~oci.ai_language.models.PiiModelDetails` * :class:`~oci.ai_language.models.PreTrainedLanguageDetectionModelDetails` - * :class:`~oci.ai_language.models.PreTrainedNamedEntityRecognitionModelDetails` * :class:`~oci.ai_language.models.PreTrainedSentimentAnalysisModelDetails` - * :class:`~oci.ai_language.models.PreTrainedTextClassificationModelDetails` * :class:`~oci.ai_language.models.TextClassificationModelDetails` + * :class:`~oci.ai_language.models.HealthNluModelDetails` * :class:`~oci.ai_language.models.PreTrainedSummarization` + * :class:`~oci.ai_language.models.NamedEntityRecognitionModelDetails` + * :class:`~oci.ai_language.models.PiiModelDetails` + * :class:`~oci.ai_language.models.PreTrainedNamedEntityRecognitionModelDetails` + * :class:`~oci.ai_language.models.PreTrainedTextClassificationModelDetails` * :class:`~oci.ai_language.models.PreTrainedPiiModelDetails` The following keyword arguments are supported (corresponding to the getters/setters of this class): @@ -93,7 +99,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this ModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type model_type: str @@ -122,36 +128,42 @@ def get_subtype(object_dictionary): if type == 'PRE_TRAINED_KEYPHRASE_EXTRACTION': return 'PreTrainedKeyPhraseExtractionModelDetails' + if type == 'PRE_TRAINED_TRANSLATION': + return 'PreTrainedTranslationModelDetails' + if type == 'PRE_TRAINED_HEALTH_NLU': return 'PreTrainedHealthNluModelDetails' if type == 'PRE_TRAINED_UNIVERSAL': return 'PreTrainedUniversalModel' - if type == 'NAMED_ENTITY_RECOGNITION': - return 'NamedEntityRecognitionModelDetails' - - if type == 'PII': - return 'PiiModelDetails' - if type == 'PRE_TRAINED_LANGUAGE_DETECTION': return 'PreTrainedLanguageDetectionModelDetails' - if type == 'PRE_TRAINED_NAMED_ENTITY_RECOGNITION': - return 'PreTrainedNamedEntityRecognitionModelDetails' - if type == 'PRE_TRAINED_SENTIMENT_ANALYSIS': return 'PreTrainedSentimentAnalysisModelDetails' - if type == 'PRE_TRAINED_TEXT_CLASSIFICATION': - return 'PreTrainedTextClassificationModelDetails' - if type == 'TEXT_CLASSIFICATION': return 'TextClassificationModelDetails' + if type == 'HEALTH_NLU': + return 'HealthNluModelDetails' + if type == 'PRE_TRAINED_SUMMARIZATION': return 'PreTrainedSummarization' + if type == 'NAMED_ENTITY_RECOGNITION': + return 'NamedEntityRecognitionModelDetails' + + if type == 'PII': + return 'PiiModelDetails' + + if type == 'PRE_TRAINED_NAMED_ENTITY_RECOGNITION': + return 'PreTrainedNamedEntityRecognitionModelDetails' + + if type == 'PRE_TRAINED_TEXT_CLASSIFICATION': + return 'PreTrainedTextClassificationModelDetails' + if type == 'PRE_TRAINED_PII': return 'PreTrainedPiiModelDetails' else: @@ -187,7 +199,7 @@ def model_type(self): **[Required]** Gets the model_type of this ModelDetails. Model type - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -206,7 +218,7 @@ def model_type(self, model_type): :param model_type: The model_type of this ModelDetails. :type: str """ - allowed_values = ["NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII"] + allowed_values = ["NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU"] if not value_allowed_none_or_none_sentinel(model_type, allowed_values): model_type = 'UNKNOWN_ENUM_VALUE' self._model_type = model_type diff --git a/src/oci/ai_language/models/named_entity_recognition_model_details.py b/src/oci/ai_language/models/named_entity_recognition_model_details.py index 4df5199daf..38004ad658 100644 --- a/src/oci/ai_language/models/named_entity_recognition_model_details.py +++ b/src/oci/ai_language/models/named_entity_recognition_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this NamedEntityRecognitionModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pii_entity_mask.py b/src/oci/ai_language/models/pii_entity_mask.py index fb8fd467aa..d46ddfffbe 100644 --- a/src/oci/ai_language/models/pii_entity_mask.py +++ b/src/oci/ai_language/models/pii_entity_mask.py @@ -26,6 +26,14 @@ def __init__(self, **kwargs): Allowed values for this property are: "REPLACE", "MASK", "REMOVE" :type mode: str + :param exclude: + The value to assign to the exclude property of this PiiEntityMask. + :type exclude: list[str] + + :param should_detect: + The value to assign to the should_detect property of this PiiEntityMask. + :type should_detect: bool + :param masking_character: The value to assign to the masking_character property of this PiiEntityMask. :type masking_character: str @@ -41,6 +49,8 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'mode': 'str', + 'exclude': 'list[str]', + 'should_detect': 'bool', 'masking_character': 'str', 'leave_characters_unmasked': 'int', 'is_unmasked_from_end': 'bool' @@ -48,12 +58,16 @@ def __init__(self, **kwargs): self.attribute_map = { 'mode': 'mode', + 'exclude': 'exclude', + 'should_detect': 'shouldDetect', 'masking_character': 'maskingCharacter', 'leave_characters_unmasked': 'leaveCharactersUnmasked', 'is_unmasked_from_end': 'isUnmaskedFromEnd' } self._mode = None + self._exclude = None + self._should_detect = None self._masking_character = None self._leave_characters_unmasked = None self._is_unmasked_from_end = None diff --git a/src/oci/ai_language/models/pii_entity_masking.py b/src/oci/ai_language/models/pii_entity_masking.py index 8c75fa3706..95b6602351 100644 --- a/src/oci/ai_language/models/pii_entity_masking.py +++ b/src/oci/ai_language/models/pii_entity_masking.py @@ -43,16 +43,30 @@ def __init__(self, **kwargs): Allowed values for this property are: "REPLACE", "MASK", "REMOVE" :type mode: str + :param exclude: + The value to assign to the exclude property of this PiiEntityMasking. + :type exclude: list[str] + + :param should_detect: + The value to assign to the should_detect property of this PiiEntityMasking. + :type should_detect: bool + """ self.swagger_types = { - 'mode': 'str' + 'mode': 'str', + 'exclude': 'list[str]', + 'should_detect': 'bool' } self.attribute_map = { - 'mode': 'mode' + 'mode': 'mode', + 'exclude': 'exclude', + 'should_detect': 'shouldDetect' } self._mode = None + self._exclude = None + self._should_detect = None @staticmethod def get_subtype(object_dictionary): @@ -104,6 +118,54 @@ def mode(self, mode): ) self._mode = mode + @property + def exclude(self): + """ + Gets the exclude of this PiiEntityMasking. + List of offsets/entities to be removed from anonymization. + + + :return: The exclude of this PiiEntityMasking. + :rtype: list[str] + """ + return self._exclude + + @exclude.setter + def exclude(self, exclude): + """ + Sets the exclude of this PiiEntityMasking. + List of offsets/entities to be removed from anonymization. + + + :param exclude: The exclude of this PiiEntityMasking. + :type: list[str] + """ + self._exclude = exclude + + @property + def should_detect(self): + """ + Gets the should_detect of this PiiEntityMasking. + To include excluded entities from masking in detected entities or not. + + + :return: The should_detect of this PiiEntityMasking. + :rtype: bool + """ + return self._should_detect + + @should_detect.setter + def should_detect(self, should_detect): + """ + Sets the should_detect of this PiiEntityMasking. + To include excluded entities from masking in detected entities or not. + + + :param should_detect: The should_detect of this PiiEntityMasking. + :type: bool + """ + self._should_detect = should_detect + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/ai_language/models/pii_entity_remove.py b/src/oci/ai_language/models/pii_entity_remove.py index bd57a4c91e..9a566c5fa1 100644 --- a/src/oci/ai_language/models/pii_entity_remove.py +++ b/src/oci/ai_language/models/pii_entity_remove.py @@ -26,16 +26,30 @@ def __init__(self, **kwargs): Allowed values for this property are: "REPLACE", "MASK", "REMOVE" :type mode: str + :param exclude: + The value to assign to the exclude property of this PiiEntityRemove. + :type exclude: list[str] + + :param should_detect: + The value to assign to the should_detect property of this PiiEntityRemove. + :type should_detect: bool + """ self.swagger_types = { - 'mode': 'str' + 'mode': 'str', + 'exclude': 'list[str]', + 'should_detect': 'bool' } self.attribute_map = { - 'mode': 'mode' + 'mode': 'mode', + 'exclude': 'exclude', + 'should_detect': 'shouldDetect' } self._mode = None + self._exclude = None + self._should_detect = None self._mode = 'REMOVE' def __repr__(self): diff --git a/src/oci/ai_language/models/pii_entity_replace.py b/src/oci/ai_language/models/pii_entity_replace.py index fa335f3d46..0e998e0a40 100644 --- a/src/oci/ai_language/models/pii_entity_replace.py +++ b/src/oci/ai_language/models/pii_entity_replace.py @@ -26,6 +26,14 @@ def __init__(self, **kwargs): Allowed values for this property are: "REPLACE", "MASK", "REMOVE" :type mode: str + :param exclude: + The value to assign to the exclude property of this PiiEntityReplace. + :type exclude: list[str] + + :param should_detect: + The value to assign to the should_detect property of this PiiEntityReplace. + :type should_detect: bool + :param replace_with: The value to assign to the replace_with property of this PiiEntityReplace. :type replace_with: str @@ -33,15 +41,21 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'mode': 'str', + 'exclude': 'list[str]', + 'should_detect': 'bool', 'replace_with': 'str' } self.attribute_map = { 'mode': 'mode', + 'exclude': 'exclude', + 'should_detect': 'shouldDetect', 'replace_with': 'replaceWith' } self._mode = None + self._exclude = None + self._should_detect = None self._replace_with = None self._mode = 'REPLACE' diff --git a/src/oci/ai_language/models/pii_model_details.py b/src/oci/ai_language/models/pii_model_details.py index 25aa6e78c8..9491acec16 100644 --- a/src/oci/ai_language/models/pii_model_details.py +++ b/src/oci/ai_language/models/pii_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PiiModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_health_nlu_model_details.py b/src/oci/ai_language/models/pre_trained_health_nlu_model_details.py index 73a98ab3ac..010eb2b925 100644 --- a/src/oci/ai_language/models/pre_trained_health_nlu_model_details.py +++ b/src/oci/ai_language/models/pre_trained_health_nlu_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedHealthNluModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_key_phrase_extraction_model_details.py b/src/oci/ai_language/models/pre_trained_key_phrase_extraction_model_details.py index bfb75186ce..8dbc9a1e59 100644 --- a/src/oci/ai_language/models/pre_trained_key_phrase_extraction_model_details.py +++ b/src/oci/ai_language/models/pre_trained_key_phrase_extraction_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedKeyPhraseExtractionModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_language_detection_model_details.py b/src/oci/ai_language/models/pre_trained_language_detection_model_details.py index 856f7d9014..ae8270070d 100644 --- a/src/oci/ai_language/models/pre_trained_language_detection_model_details.py +++ b/src/oci/ai_language/models/pre_trained_language_detection_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedLanguageDetectionModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_named_entity_recognition_model_details.py b/src/oci/ai_language/models/pre_trained_named_entity_recognition_model_details.py index 943ce645fb..d4b5ef0fa4 100644 --- a/src/oci/ai_language/models/pre_trained_named_entity_recognition_model_details.py +++ b/src/oci/ai_language/models/pre_trained_named_entity_recognition_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedNamedEntityRecognitionModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_pii_model_details.py b/src/oci/ai_language/models/pre_trained_pii_model_details.py index ff38f85890..447bc9f6af 100644 --- a/src/oci/ai_language/models/pre_trained_pii_model_details.py +++ b/src/oci/ai_language/models/pre_trained_pii_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedPiiModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_sentiment_analysis_model_details.py b/src/oci/ai_language/models/pre_trained_sentiment_analysis_model_details.py index 03a95ed01b..43a3ab2def 100644 --- a/src/oci/ai_language/models/pre_trained_sentiment_analysis_model_details.py +++ b/src/oci/ai_language/models/pre_trained_sentiment_analysis_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedSentimentAnalysisModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_summarization.py b/src/oci/ai_language/models/pre_trained_summarization.py index ee31f289a8..8878bc4609 100644 --- a/src/oci/ai_language/models/pre_trained_summarization.py +++ b/src/oci/ai_language/models/pre_trained_summarization.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedSummarization. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_text_classification_model_details.py b/src/oci/ai_language/models/pre_trained_text_classification_model_details.py index eed40020fe..8bcec2a49e 100644 --- a/src/oci/ai_language/models/pre_trained_text_classification_model_details.py +++ b/src/oci/ai_language/models/pre_trained_text_classification_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedTextClassificationModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/pre_trained_translation_model_details.py b/src/oci/ai_language/models/pre_trained_translation_model_details.py new file mode 100644 index 0000000000..41538ae53d --- /dev/null +++ b/src/oci/ai_language/models/pre_trained_translation_model_details.py @@ -0,0 +1,91 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20221001 + +from .model_details import ModelDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class PreTrainedTranslationModelDetails(ModelDetails): + """ + Possible pre trained translation model information. + """ + + def __init__(self, **kwargs): + """ + Initializes a new PreTrainedTranslationModelDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.ai_language.models.PreTrainedTranslationModelDetails.model_type` attribute + of this class is ``PRE_TRAINED_TRANSLATION`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param language_code: + The value to assign to the language_code property of this PreTrainedTranslationModelDetails. + :type language_code: str + + :param model_type: + The value to assign to the model_type property of this PreTrainedTranslationModelDetails. + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" + :type model_type: str + + :param version: + The value to assign to the version property of this PreTrainedTranslationModelDetails. + :type version: str + + """ + self.swagger_types = { + 'language_code': 'str', + 'model_type': 'str', + 'version': 'str' + } + + self.attribute_map = { + 'language_code': 'languageCode', + 'model_type': 'modelType', + 'version': 'version' + } + + self._language_code = None + self._model_type = None + self._version = None + self._model_type = 'PRE_TRAINED_TRANSLATION' + + @property + def version(self): + """ + Gets the version of this PreTrainedTranslationModelDetails. + Optional pre trained model version. If nothing specified latest pre trained model will be used. + Supported versions can be found at /modelTypes/{modelType} + + + :return: The version of this PreTrainedTranslationModelDetails. + :rtype: str + """ + return self._version + + @version.setter + def version(self, version): + """ + Sets the version of this PreTrainedTranslationModelDetails. + Optional pre trained model version. If nothing specified latest pre trained model will be used. + Supported versions can be found at /modelTypes/{modelType} + + + :param version: The version of this PreTrainedTranslationModelDetails. + :type: str + """ + self._version = version + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/ai_language/models/pre_trained_universal_model.py b/src/oci/ai_language/models/pre_trained_universal_model.py index d419ab5c51..25a200ab29 100644 --- a/src/oci/ai_language/models/pre_trained_universal_model.py +++ b/src/oci/ai_language/models/pre_trained_universal_model.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this PreTrainedUniversalModel. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param version: diff --git a/src/oci/ai_language/models/text_classification_model_details.py b/src/oci/ai_language/models/text_classification_model_details.py index 0363fb1d46..d81ef42bc7 100644 --- a/src/oci/ai_language/models/text_classification_model_details.py +++ b/src/oci/ai_language/models/text_classification_model_details.py @@ -27,7 +27,7 @@ def __init__(self, **kwargs): :param model_type: The value to assign to the model_type property of this TextClassificationModelDetails. - Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_TRANSLATION", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII" + Allowed values for this property are: "NAMED_ENTITY_RECOGNITION", "TEXT_CLASSIFICATION", "PRE_TRAINED_NAMED_ENTITY_RECOGNITION", "PRE_TRAINED_TEXT_CLASSIFICATION", "PRE_TRAINED_SENTIMENT_ANALYSIS", "PRE_TRAINED_KEYPHRASE_EXTRACTION", "PRE_TRAINED_LANGUAGE_DETECTION", "PRE_TRAINED_PII", "PRE_TRAINED_HEALTH_NLU", "PRE_TRAINED_SUMMARIZATION", "PRE_TRAINED_UNIVERSAL", "PII", "PRE_TRAINED_TRANSLATION", "HEALTH_NLU" :type model_type: str :param classification_mode: diff --git a/src/oci/ai_language/models/update_endpoint_details.py b/src/oci/ai_language/models/update_endpoint_details.py index c4b2645fe3..ca3996a2fc 100644 --- a/src/oci/ai_language/models/update_endpoint_details.py +++ b/src/oci/ai_language/models/update_endpoint_details.py @@ -24,6 +24,10 @@ def __init__(self, **kwargs): The value to assign to the display_name property of this UpdateEndpointDetails. :type display_name: str + :param alias: + The value to assign to the alias property of this UpdateEndpointDetails. + :type alias: str + :param description: The value to assign to the description property of this UpdateEndpointDetails. :type description: str @@ -47,6 +51,7 @@ def __init__(self, **kwargs): """ self.swagger_types = { 'display_name': 'str', + 'alias': 'str', 'description': 'str', 'model_id': 'str', 'inference_units': 'int', @@ -56,6 +61,7 @@ def __init__(self, **kwargs): self.attribute_map = { 'display_name': 'displayName', + 'alias': 'alias', 'description': 'description', 'model_id': 'modelId', 'inference_units': 'inferenceUnits', @@ -64,6 +70,7 @@ def __init__(self, **kwargs): } self._display_name = None + self._alias = None self._description = None self._model_id = None self._inference_units = None @@ -94,6 +101,30 @@ def display_name(self, display_name): """ self._display_name = display_name + @property + def alias(self): + """ + Gets the alias of this UpdateEndpointDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :return: The alias of this UpdateEndpointDetails. + :rtype: str + """ + return self._alias + + @alias.setter + def alias(self, alias): + """ + Sets the alias of this UpdateEndpointDetails. + Unique name across user tenancy in a region to identify an endpoint to be used for inferencing. + + + :param alias: The alias of this UpdateEndpointDetails. + :type: str + """ + self._alias = alias + @property def description(self): """ diff --git a/src/oci/auth/signers/oke_workload_identity_resource_principal_signer.py b/src/oci/auth/signers/oke_workload_identity_resource_principal_signer.py index 822caf81b4..6f549624ed 100644 --- a/src/oci/auth/signers/oke_workload_identity_resource_principal_signer.py +++ b/src/oci/auth/signers/oke_workload_identity_resource_principal_signer.py @@ -134,11 +134,18 @@ def _get_resource_principal_session_token(self): "reason": response.reason}, indent=2))) if not response.ok: - raise oci.exceptions.ServiceError( - response.status_code, - response.reason, - response.headers, - "Failed to get RPST token from proxymux") + if response.status_code == 403: + raise oci.exceptions.ServiceError( + response.status_code, + response.reason, + response.headers, + "Please ensure the cluster type is enhanced") + else: + raise oci.exceptions.ServiceError( + response.status_code, + response.reason, + response.headers, + "Failed to get RPST token from proxymux") try: decoded_response = base64.b64decode(response.content).decode("UTF-8") diff --git a/src/oci/core/models/__init__.py b/src/oci/core/models/__init__.py index dd52c5cb97..e839062ee0 100644 --- a/src/oci/core/models/__init__.py +++ b/src/oci/core/models/__init__.py @@ -405,10 +405,13 @@ from .launch_instance_agent_config_details import LaunchInstanceAgentConfigDetails from .launch_instance_availability_config_details import LaunchInstanceAvailabilityConfigDetails from .launch_instance_details import LaunchInstanceDetails +from .launch_instance_licensing_config import LaunchInstanceLicensingConfig from .launch_instance_platform_config import LaunchInstancePlatformConfig from .launch_instance_shape_config_details import LaunchInstanceShapeConfigDetails +from .launch_instance_windows_licensing_config import LaunchInstanceWindowsLicensingConfig from .launch_options import LaunchOptions from .letter_of_authority import LetterOfAuthority +from .licensing_config import LicensingConfig from .list_ip_inventory_details import ListIpInventoryDetails from .local_peering_gateway import LocalPeeringGateway from .loop_back_drg_attachment_network_details import LoopBackDrgAttachmentNetworkDetails @@ -532,6 +535,7 @@ from .update_instance_configuration_details import UpdateInstanceConfigurationDetails from .update_instance_console_connection_details import UpdateInstanceConsoleConnectionDetails from .update_instance_details import UpdateInstanceDetails +from .update_instance_licensing_config import UpdateInstanceLicensingConfig from .update_instance_maintenance_event_details import UpdateInstanceMaintenanceEventDetails from .update_instance_platform_config import UpdateInstancePlatformConfig from .update_instance_pool_details import UpdateInstancePoolDetails @@ -540,6 +544,7 @@ from .update_instance_source_details import UpdateInstanceSourceDetails from .update_instance_source_via_boot_volume_details import UpdateInstanceSourceViaBootVolumeDetails from .update_instance_source_via_image_details import UpdateInstanceSourceViaImageDetails +from .update_instance_windows_licensing_config import UpdateInstanceWindowsLicensingConfig from .update_internet_gateway_details import UpdateInternetGatewayDetails from .update_ipv6_details import UpdateIpv6Details from .update_launch_options import UpdateLaunchOptions @@ -1014,10 +1019,13 @@ "LaunchInstanceAgentConfigDetails": LaunchInstanceAgentConfigDetails, "LaunchInstanceAvailabilityConfigDetails": LaunchInstanceAvailabilityConfigDetails, "LaunchInstanceDetails": LaunchInstanceDetails, + "LaunchInstanceLicensingConfig": LaunchInstanceLicensingConfig, "LaunchInstancePlatformConfig": LaunchInstancePlatformConfig, "LaunchInstanceShapeConfigDetails": LaunchInstanceShapeConfigDetails, + "LaunchInstanceWindowsLicensingConfig": LaunchInstanceWindowsLicensingConfig, "LaunchOptions": LaunchOptions, "LetterOfAuthority": LetterOfAuthority, + "LicensingConfig": LicensingConfig, "ListIpInventoryDetails": ListIpInventoryDetails, "LocalPeeringGateway": LocalPeeringGateway, "LoopBackDrgAttachmentNetworkDetails": LoopBackDrgAttachmentNetworkDetails, @@ -1141,6 +1149,7 @@ "UpdateInstanceConfigurationDetails": UpdateInstanceConfigurationDetails, "UpdateInstanceConsoleConnectionDetails": UpdateInstanceConsoleConnectionDetails, "UpdateInstanceDetails": UpdateInstanceDetails, + "UpdateInstanceLicensingConfig": UpdateInstanceLicensingConfig, "UpdateInstanceMaintenanceEventDetails": UpdateInstanceMaintenanceEventDetails, "UpdateInstancePlatformConfig": UpdateInstancePlatformConfig, "UpdateInstancePoolDetails": UpdateInstancePoolDetails, @@ -1149,6 +1158,7 @@ "UpdateInstanceSourceDetails": UpdateInstanceSourceDetails, "UpdateInstanceSourceViaBootVolumeDetails": UpdateInstanceSourceViaBootVolumeDetails, "UpdateInstanceSourceViaImageDetails": UpdateInstanceSourceViaImageDetails, + "UpdateInstanceWindowsLicensingConfig": UpdateInstanceWindowsLicensingConfig, "UpdateInternetGatewayDetails": UpdateInternetGatewayDetails, "UpdateIpv6Details": UpdateIpv6Details, "UpdateLaunchOptions": UpdateLaunchOptions, diff --git a/src/oci/core/models/instance.py b/src/oci/core/models/instance.py index 80f8b9a4da..00d832c7fd 100644 --- a/src/oci/core/models/instance.py +++ b/src/oci/core/models/instance.py @@ -242,6 +242,10 @@ def __init__(self, **kwargs): The value to assign to the instance_configuration_id property of this Instance. :type instance_configuration_id: str + :param licensing_configs: + The value to assign to the licensing_configs property of this Instance. + :type licensing_configs: list[oci.core.models.LicensingConfig] + """ self.swagger_types = { 'availability_domain': 'str', @@ -276,7 +280,8 @@ def __init__(self, **kwargs): 'agent_config': 'InstanceAgentConfig', 'time_maintenance_reboot_due': 'datetime', 'platform_config': 'PlatformConfig', - 'instance_configuration_id': 'str' + 'instance_configuration_id': 'str', + 'licensing_configs': 'list[LicensingConfig]' } self.attribute_map = { @@ -312,7 +317,8 @@ def __init__(self, **kwargs): 'agent_config': 'agentConfig', 'time_maintenance_reboot_due': 'timeMaintenanceRebootDue', 'platform_config': 'platformConfig', - 'instance_configuration_id': 'instanceConfigurationId' + 'instance_configuration_id': 'instanceConfigurationId', + 'licensing_configs': 'licensingConfigs' } self._availability_domain = None @@ -348,6 +354,7 @@ def __init__(self, **kwargs): self._time_maintenance_reboot_due = None self._platform_config = None self._instance_configuration_id = None + self._licensing_configs = None @property def availability_domain(self): @@ -1293,6 +1300,30 @@ def instance_configuration_id(self, instance_configuration_id): """ self._instance_configuration_id = instance_configuration_id + @property + def licensing_configs(self): + """ + Gets the licensing_configs of this Instance. + List of licensing configurations associated with the instance. + + + :return: The licensing_configs of this Instance. + :rtype: list[oci.core.models.LicensingConfig] + """ + return self._licensing_configs + + @licensing_configs.setter + def licensing_configs(self, licensing_configs): + """ + Sets the licensing_configs of this Instance. + List of licensing configurations associated with the instance. + + + :param licensing_configs: The licensing_configs of this Instance. + :type: list[oci.core.models.LicensingConfig] + """ + self._licensing_configs = licensing_configs + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/core/models/instance_configuration_launch_instance_details.py b/src/oci/core/models/instance_configuration_launch_instance_details.py index 63b6e4355f..7b9763718c 100644 --- a/src/oci/core/models/instance_configuration_launch_instance_details.py +++ b/src/oci/core/models/instance_configuration_launch_instance_details.py @@ -155,6 +155,10 @@ def __init__(self, **kwargs): The value to assign to the preemptible_instance_config property of this InstanceConfigurationLaunchInstanceDetails. :type preemptible_instance_config: oci.core.models.PreemptibleInstanceConfigDetails + :param licensing_configs: + The value to assign to the licensing_configs property of this InstanceConfigurationLaunchInstanceDetails. + :type licensing_configs: list[oci.core.models.LaunchInstanceLicensingConfig] + """ self.swagger_types = { 'availability_domain': 'str', @@ -182,7 +186,8 @@ def __init__(self, **kwargs): 'preferred_maintenance_action': 'str', 'instance_options': 'InstanceConfigurationInstanceOptions', 'availability_config': 'InstanceConfigurationAvailabilityConfig', - 'preemptible_instance_config': 'PreemptibleInstanceConfigDetails' + 'preemptible_instance_config': 'PreemptibleInstanceConfigDetails', + 'licensing_configs': 'list[LaunchInstanceLicensingConfig]' } self.attribute_map = { @@ -211,7 +216,8 @@ def __init__(self, **kwargs): 'preferred_maintenance_action': 'preferredMaintenanceAction', 'instance_options': 'instanceOptions', 'availability_config': 'availabilityConfig', - 'preemptible_instance_config': 'preemptibleInstanceConfig' + 'preemptible_instance_config': 'preemptibleInstanceConfig', + 'licensing_configs': 'licensingConfigs' } self._availability_domain = None @@ -240,6 +246,7 @@ def __init__(self, **kwargs): self._instance_options = None self._availability_config = None self._preemptible_instance_config = None + self._licensing_configs = None @property def availability_domain(self): @@ -1089,6 +1096,30 @@ def preemptible_instance_config(self, preemptible_instance_config): """ self._preemptible_instance_config = preemptible_instance_config + @property + def licensing_configs(self): + """ + Gets the licensing_configs of this InstanceConfigurationLaunchInstanceDetails. + List of licensing configurations associated with target launch values. + + + :return: The licensing_configs of this InstanceConfigurationLaunchInstanceDetails. + :rtype: list[oci.core.models.LaunchInstanceLicensingConfig] + """ + return self._licensing_configs + + @licensing_configs.setter + def licensing_configs(self, licensing_configs): + """ + Sets the licensing_configs of this InstanceConfigurationLaunchInstanceDetails. + List of licensing configurations associated with target launch values. + + + :param licensing_configs: The licensing_configs of this InstanceConfigurationLaunchInstanceDetails. + :type: list[oci.core.models.LaunchInstanceLicensingConfig] + """ + self._licensing_configs = licensing_configs + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/core/models/launch_instance_details.py b/src/oci/core/models/launch_instance_details.py index 8f65e7aa08..5776332862 100644 --- a/src/oci/core/models/launch_instance_details.py +++ b/src/oci/core/models/launch_instance_details.py @@ -141,6 +141,10 @@ def __init__(self, **kwargs): The value to assign to the instance_configuration_id property of this LaunchInstanceDetails. :type instance_configuration_id: str + :param licensing_configs: + The value to assign to the licensing_configs property of this LaunchInstanceDetails. + :type licensing_configs: list[oci.core.models.LaunchInstanceLicensingConfig] + """ self.swagger_types = { 'availability_domain': 'str', @@ -172,7 +176,8 @@ def __init__(self, **kwargs): 'launch_volume_attachments': 'list[LaunchAttachVolumeDetails]', 'is_pv_encryption_in_transit_enabled': 'bool', 'platform_config': 'LaunchInstancePlatformConfig', - 'instance_configuration_id': 'str' + 'instance_configuration_id': 'str', + 'licensing_configs': 'list[LaunchInstanceLicensingConfig]' } self.attribute_map = { @@ -205,7 +210,8 @@ def __init__(self, **kwargs): 'launch_volume_attachments': 'launchVolumeAttachments', 'is_pv_encryption_in_transit_enabled': 'isPvEncryptionInTransitEnabled', 'platform_config': 'platformConfig', - 'instance_configuration_id': 'instanceConfigurationId' + 'instance_configuration_id': 'instanceConfigurationId', + 'licensing_configs': 'licensingConfigs' } self._availability_domain = None @@ -238,6 +244,7 @@ def __init__(self, **kwargs): self._is_pv_encryption_in_transit_enabled = None self._platform_config = None self._instance_configuration_id = None + self._licensing_configs = None @property def availability_domain(self): @@ -1187,6 +1194,30 @@ def instance_configuration_id(self, instance_configuration_id): """ self._instance_configuration_id = instance_configuration_id + @property + def licensing_configs(self): + """ + Gets the licensing_configs of this LaunchInstanceDetails. + List of licensing configurations associated with target launch values. + + + :return: The licensing_configs of this LaunchInstanceDetails. + :rtype: list[oci.core.models.LaunchInstanceLicensingConfig] + """ + return self._licensing_configs + + @licensing_configs.setter + def licensing_configs(self, licensing_configs): + """ + Sets the licensing_configs of this LaunchInstanceDetails. + List of licensing configurations associated with target launch values. + + + :param licensing_configs: The licensing_configs of this LaunchInstanceDetails. + :type: list[oci.core.models.LaunchInstanceLicensingConfig] + """ + self._licensing_configs = licensing_configs + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/core/models/launch_instance_licensing_config.py b/src/oci/core/models/launch_instance_licensing_config.py new file mode 100644 index 0000000000..d461396f4e --- /dev/null +++ b/src/oci/core/models/launch_instance_licensing_config.py @@ -0,0 +1,152 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class LaunchInstanceLicensingConfig(object): + """ + The license config requested for the instance. + """ + + #: A constant which can be used with the type property of a LaunchInstanceLicensingConfig. + #: This constant has a value of "WINDOWS" + TYPE_WINDOWS = "WINDOWS" + + #: A constant which can be used with the license_type property of a LaunchInstanceLicensingConfig. + #: This constant has a value of "OCI_PROVIDED" + LICENSE_TYPE_OCI_PROVIDED = "OCI_PROVIDED" + + #: A constant which can be used with the license_type property of a LaunchInstanceLicensingConfig. + #: This constant has a value of "BRING_YOUR_OWN_LICENSE" + LICENSE_TYPE_BRING_YOUR_OWN_LICENSE = "BRING_YOUR_OWN_LICENSE" + + def __init__(self, **kwargs): + """ + Initializes a new LaunchInstanceLicensingConfig object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.core.models.LaunchInstanceWindowsLicensingConfig` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this LaunchInstanceLicensingConfig. + Allowed values for this property are: "WINDOWS", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type type: str + + :param license_type: + The value to assign to the license_type property of this LaunchInstanceLicensingConfig. + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type license_type: str + + """ + self.swagger_types = { + 'type': 'str', + 'license_type': 'str' + } + + self.attribute_map = { + 'type': 'type', + 'license_type': 'licenseType' + } + + self._type = None + self._license_type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['type'] + + if type == 'WINDOWS': + return 'LaunchInstanceWindowsLicensingConfig' + else: + return 'LaunchInstanceLicensingConfig' + + @property + def type(self): + """ + **[Required]** Gets the type of this LaunchInstanceLicensingConfig. + Operating System type of the Configuration. + + Allowed values for this property are: "WINDOWS", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The type of this LaunchInstanceLicensingConfig. + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """ + Sets the type of this LaunchInstanceLicensingConfig. + Operating System type of the Configuration. + + + :param type: The type of this LaunchInstanceLicensingConfig. + :type: str + """ + allowed_values = ["WINDOWS"] + if not value_allowed_none_or_none_sentinel(type, allowed_values): + type = 'UNKNOWN_ENUM_VALUE' + self._type = type + + @property + def license_type(self): + """ + Gets the license_type of this LaunchInstanceLicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The license_type of this LaunchInstanceLicensingConfig. + :rtype: str + """ + return self._license_type + + @license_type.setter + def license_type(self, license_type): + """ + Sets the license_type of this LaunchInstanceLicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + + :param license_type: The license_type of this LaunchInstanceLicensingConfig. + :type: str + """ + allowed_values = ["OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE"] + if not value_allowed_none_or_none_sentinel(license_type, allowed_values): + license_type = 'UNKNOWN_ENUM_VALUE' + self._license_type = license_type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/core/models/launch_instance_windows_licensing_config.py b/src/oci/core/models/launch_instance_windows_licensing_config.py new file mode 100644 index 0000000000..7324c9353d --- /dev/null +++ b/src/oci/core/models/launch_instance_windows_licensing_config.py @@ -0,0 +1,59 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + +from .launch_instance_licensing_config import LaunchInstanceLicensingConfig +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class LaunchInstanceWindowsLicensingConfig(LaunchInstanceLicensingConfig): + """ + The default windows licensing config. + """ + + def __init__(self, **kwargs): + """ + Initializes a new LaunchInstanceWindowsLicensingConfig object with values from keyword arguments. The default value of the :py:attr:`~oci.core.models.LaunchInstanceWindowsLicensingConfig.type` attribute + of this class is ``WINDOWS`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this LaunchInstanceWindowsLicensingConfig. + Allowed values for this property are: "WINDOWS" + :type type: str + + :param license_type: + The value to assign to the license_type property of this LaunchInstanceWindowsLicensingConfig. + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE" + :type license_type: str + + """ + self.swagger_types = { + 'type': 'str', + 'license_type': 'str' + } + + self.attribute_map = { + 'type': 'type', + 'license_type': 'licenseType' + } + + self._type = None + self._license_type = None + self._type = 'WINDOWS' + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/core/models/licensing_config.py b/src/oci/core/models/licensing_config.py new file mode 100644 index 0000000000..9082393601 --- /dev/null +++ b/src/oci/core/models/licensing_config.py @@ -0,0 +1,166 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class LicensingConfig(object): + """ + Configuration of the Operating System license. + """ + + #: A constant which can be used with the type property of a LicensingConfig. + #: This constant has a value of "WINDOWS" + TYPE_WINDOWS = "WINDOWS" + + #: A constant which can be used with the license_type property of a LicensingConfig. + #: This constant has a value of "OCI_PROVIDED" + LICENSE_TYPE_OCI_PROVIDED = "OCI_PROVIDED" + + #: A constant which can be used with the license_type property of a LicensingConfig. + #: This constant has a value of "BRING_YOUR_OWN_LICENSE" + LICENSE_TYPE_BRING_YOUR_OWN_LICENSE = "BRING_YOUR_OWN_LICENSE" + + def __init__(self, **kwargs): + """ + Initializes a new LicensingConfig object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this LicensingConfig. + Allowed values for this property are: "WINDOWS", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type type: str + + :param license_type: + The value to assign to the license_type property of this LicensingConfig. + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type license_type: str + + :param os_version: + The value to assign to the os_version property of this LicensingConfig. + :type os_version: str + + """ + self.swagger_types = { + 'type': 'str', + 'license_type': 'str', + 'os_version': 'str' + } + + self.attribute_map = { + 'type': 'type', + 'license_type': 'licenseType', + 'os_version': 'osVersion' + } + + self._type = None + self._license_type = None + self._os_version = None + + @property + def type(self): + """ + Gets the type of this LicensingConfig. + Operating System type of the Configuration. + + Allowed values for this property are: "WINDOWS", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The type of this LicensingConfig. + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """ + Sets the type of this LicensingConfig. + Operating System type of the Configuration. + + + :param type: The type of this LicensingConfig. + :type: str + """ + allowed_values = ["WINDOWS"] + if not value_allowed_none_or_none_sentinel(type, allowed_values): + type = 'UNKNOWN_ENUM_VALUE' + self._type = type + + @property + def license_type(self): + """ + Gets the license_type of this LicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The license_type of this LicensingConfig. + :rtype: str + """ + return self._license_type + + @license_type.setter + def license_type(self, license_type): + """ + Sets the license_type of this LicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + + :param license_type: The license_type of this LicensingConfig. + :type: str + """ + allowed_values = ["OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE"] + if not value_allowed_none_or_none_sentinel(license_type, allowed_values): + license_type = 'UNKNOWN_ENUM_VALUE' + self._license_type = license_type + + @property + def os_version(self): + """ + Gets the os_version of this LicensingConfig. + The Operating System version of the license config. + + + :return: The os_version of this LicensingConfig. + :rtype: str + """ + return self._os_version + + @os_version.setter + def os_version(self, os_version): + """ + Sets the os_version of this LicensingConfig. + The Operating System version of the license config. + + + :param os_version: The os_version of this LicensingConfig. + :type: str + """ + self._os_version = os_version + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/core/models/update_instance_details.py b/src/oci/core/models/update_instance_details.py index cff594fb79..139eabaf76 100644 --- a/src/oci/core/models/update_instance_details.py +++ b/src/oci/core/models/update_instance_details.py @@ -105,6 +105,10 @@ def __init__(self, **kwargs): The value to assign to the platform_config property of this UpdateInstanceDetails. :type platform_config: oci.core.models.UpdateInstancePlatformConfig + :param licensing_configs: + The value to assign to the licensing_configs property of this UpdateInstanceDetails. + :type licensing_configs: list[oci.core.models.UpdateInstanceLicensingConfig] + """ self.swagger_types = { 'capacity_reservation_id': 'str', @@ -125,7 +129,8 @@ def __init__(self, **kwargs): 'availability_config': 'UpdateInstanceAvailabilityConfigDetails', 'time_maintenance_reboot_due': 'datetime', 'dedicated_vm_host_id': 'str', - 'platform_config': 'UpdateInstancePlatformConfig' + 'platform_config': 'UpdateInstancePlatformConfig', + 'licensing_configs': 'list[UpdateInstanceLicensingConfig]' } self.attribute_map = { @@ -147,7 +152,8 @@ def __init__(self, **kwargs): 'availability_config': 'availabilityConfig', 'time_maintenance_reboot_due': 'timeMaintenanceRebootDue', 'dedicated_vm_host_id': 'dedicatedVmHostId', - 'platform_config': 'platformConfig' + 'platform_config': 'platformConfig', + 'licensing_configs': 'licensingConfigs' } self._capacity_reservation_id = None @@ -169,6 +175,7 @@ def __init__(self, **kwargs): self._time_maintenance_reboot_due = None self._dedicated_vm_host_id = None self._platform_config = None + self._licensing_configs = None @property def capacity_reservation_id(self): @@ -799,6 +806,30 @@ def platform_config(self, platform_config): """ self._platform_config = platform_config + @property + def licensing_configs(self): + """ + Gets the licensing_configs of this UpdateInstanceDetails. + The list of liscensing configurations with target update values. + + + :return: The licensing_configs of this UpdateInstanceDetails. + :rtype: list[oci.core.models.UpdateInstanceLicensingConfig] + """ + return self._licensing_configs + + @licensing_configs.setter + def licensing_configs(self, licensing_configs): + """ + Sets the licensing_configs of this UpdateInstanceDetails. + The list of liscensing configurations with target update values. + + + :param licensing_configs: The licensing_configs of this UpdateInstanceDetails. + :type: list[oci.core.models.UpdateInstanceLicensingConfig] + """ + self._licensing_configs = licensing_configs + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/core/models/update_instance_licensing_config.py b/src/oci/core/models/update_instance_licensing_config.py new file mode 100644 index 0000000000..7d0e4c255b --- /dev/null +++ b/src/oci/core/models/update_instance_licensing_config.py @@ -0,0 +1,152 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdateInstanceLicensingConfig(object): + """ + The target license config to be updated on the instance. + """ + + #: A constant which can be used with the type property of a UpdateInstanceLicensingConfig. + #: This constant has a value of "WINDOWS" + TYPE_WINDOWS = "WINDOWS" + + #: A constant which can be used with the license_type property of a UpdateInstanceLicensingConfig. + #: This constant has a value of "OCI_PROVIDED" + LICENSE_TYPE_OCI_PROVIDED = "OCI_PROVIDED" + + #: A constant which can be used with the license_type property of a UpdateInstanceLicensingConfig. + #: This constant has a value of "BRING_YOUR_OWN_LICENSE" + LICENSE_TYPE_BRING_YOUR_OWN_LICENSE = "BRING_YOUR_OWN_LICENSE" + + def __init__(self, **kwargs): + """ + Initializes a new UpdateInstanceLicensingConfig object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.core.models.UpdateInstanceWindowsLicensingConfig` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this UpdateInstanceLicensingConfig. + Allowed values for this property are: "WINDOWS" + :type type: str + + :param license_type: + The value to assign to the license_type property of this UpdateInstanceLicensingConfig. + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE" + :type license_type: str + + """ + self.swagger_types = { + 'type': 'str', + 'license_type': 'str' + } + + self.attribute_map = { + 'type': 'type', + 'license_type': 'licenseType' + } + + self._type = None + self._license_type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['type'] + + if type == 'WINDOWS': + return 'UpdateInstanceWindowsLicensingConfig' + else: + return 'UpdateInstanceLicensingConfig' + + @property + def type(self): + """ + **[Required]** Gets the type of this UpdateInstanceLicensingConfig. + Operating system type of the configuration. + + Allowed values for this property are: "WINDOWS" + + + :return: The type of this UpdateInstanceLicensingConfig. + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """ + Sets the type of this UpdateInstanceLicensingConfig. + Operating system type of the configuration. + + + :param type: The type of this UpdateInstanceLicensingConfig. + :type: str + """ + allowed_values = ["WINDOWS"] + if not value_allowed_none_or_none_sentinel(type, allowed_values): + raise ValueError( + f"Invalid value for `type`, must be None or one of {allowed_values}" + ) + self._type = type + + @property + def license_type(self): + """ + Gets the license_type of this UpdateInstanceLicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE" + + + :return: The license_type of this UpdateInstanceLicensingConfig. + :rtype: str + """ + return self._license_type + + @license_type.setter + def license_type(self, license_type): + """ + Sets the license_type of this UpdateInstanceLicensingConfig. + License Type for the OS license. + * `OCI_PROVIDED` - OCI provided license (e.g. metered $/OCPU-hour). + * `BRING_YOUR_OWN_LICENSE` - Bring your own license. + + + :param license_type: The license_type of this UpdateInstanceLicensingConfig. + :type: str + """ + allowed_values = ["OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE"] + if not value_allowed_none_or_none_sentinel(license_type, allowed_values): + raise ValueError( + f"Invalid value for `license_type`, must be None or one of {allowed_values}" + ) + self._license_type = license_type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/core/models/update_instance_windows_licensing_config.py b/src/oci/core/models/update_instance_windows_licensing_config.py new file mode 100644 index 0000000000..780c7fcfba --- /dev/null +++ b/src/oci/core/models/update_instance_windows_licensing_config.py @@ -0,0 +1,59 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + +from .update_instance_licensing_config import UpdateInstanceLicensingConfig +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdateInstanceWindowsLicensingConfig(UpdateInstanceLicensingConfig): + """ + The default windows licensing config. + """ + + def __init__(self, **kwargs): + """ + Initializes a new UpdateInstanceWindowsLicensingConfig object with values from keyword arguments. The default value of the :py:attr:`~oci.core.models.UpdateInstanceWindowsLicensingConfig.type` attribute + of this class is ``WINDOWS`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this UpdateInstanceWindowsLicensingConfig. + Allowed values for this property are: "WINDOWS" + :type type: str + + :param license_type: + The value to assign to the license_type property of this UpdateInstanceWindowsLicensingConfig. + Allowed values for this property are: "OCI_PROVIDED", "BRING_YOUR_OWN_LICENSE" + :type license_type: str + + """ + self.swagger_types = { + 'type': 'str', + 'license_type': 'str' + } + + self.attribute_map = { + 'type': 'type', + 'license_type': 'licenseType' + } + + self._type = None + self._license_type = None + self._type = 'WINDOWS' + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/data_flow/data_flow_client.py b/src/oci/data_flow/data_flow_client.py index e0327c9074..73c3d8260a 100644 --- a/src/oci/data_flow/data_flow_client.py +++ b/src/oci/data_flow/data_flow_client.py @@ -116,6 +116,108 @@ def __init__(self, config, **kwargs): self.retry_strategy = kwargs.get('retry_strategy') self.circuit_breaker_callback = kwargs.get('circuit_breaker_callback') + def cascading_delete_application(self, application_id, **kwargs): + """ + Deletes an application using an `applicationId` and terminates related runs. This operation will timeout in approximate 30 minutes if any related Runs are not terminated successfully. + + + :param str application_id: (required) + The unique ID for an application. + + :param str opc_request_id: (optional) + Unique identifier for the request. If provided, the returned request ID will include this value. + Otherwise, a random request ID will be generated by the service. + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call for a resource, + set the `if-match` parameter to the value of the etag from a previous GET or POST response for that resource. + The resource will be updated or deleted only if the etag you provide matches the resource's current etag value. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. This operation will not retry by default, users can also use the convenient :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` provided by the SDK to enable retries for it. + The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :param bool allow_control_chars: (optional) + allow_control_chars is a boolean to indicate whether or not this request should allow control characters in the response object. + By default, the response will not allow control characters in strings + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + + :example: + Click `here `__ to see an example of how to use cascading_delete_application API. + """ + # Required path and query arguments. These are in camelCase to replace values in service endpoints. + required_arguments = ['applicationId'] + resource_path = "/applications/{applicationId}/actions/cascadingDeleteApplication" + method = "POST" + operation_name = "cascading_delete_application" + api_reference_link = "https://docs.oracle.com/iaas/api/#/en/data-flow/20200129/Application/CascadingDeleteApplication" + + # Don't accept unknown kwargs + expected_kwargs = [ + "allow_control_chars", + "retry_strategy", + "opc_request_id", + "if_match" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + f"cascading_delete_application got unknown kwargs: {extra_kwargs!r}") + + path_params = { + "applicationId": application_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError(f'Parameter {k} cannot be None, whitespace or empty string') + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "opc-request-id": kwargs.get("opc_request_id", missing), + "if-match": kwargs.get("if_match", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.base_client.get_preferred_retry_strategy( + operation_retry_strategy=kwargs.get('retry_strategy'), + client_retry_strategy=self.retry_strategy + ) + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_client_retries_header(header_params) + retry_strategy.add_circuit_breaker_callback(self.circuit_breaker_callback) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + def change_application_compartment(self, application_id, change_application_compartment_details, **kwargs): """ Moves an application into a different compartment. When provided, If-Match is checked against ETag values of the resource. diff --git a/src/oci/data_flow/data_flow_client_composite_operations.py b/src/oci/data_flow/data_flow_client_composite_operations.py index 1e1cb47cf0..9ae4d1111c 100644 --- a/src/oci/data_flow/data_flow_client_composite_operations.py +++ b/src/oci/data_flow/data_flow_client_composite_operations.py @@ -25,6 +25,45 @@ def __init__(self, client, **kwargs): """ self.client = client + def cascading_delete_application_and_wait_for_state(self, application_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.data_flow.DataFlowClient.cascading_delete_application` and waits for the :py:class:`~oci.data_flow.models.WorkRequest` + to enter the given state(s). + + :param str application_id: (required) + The unique ID for an application. + + :param list[str] wait_for_states: + An array of states to wait on. These should be valid values for :py:attr:`~oci.data_flow.models.WorkRequest.status` + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.data_flow.DataFlowClient.cascading_delete_application` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.cascading_delete_application(application_id, **operation_kwargs) + if not wait_for_states: + return operation_result + lowered_wait_for_states = [w.lower() for w in wait_for_states] + if 'opc-work-request-id' not in operation_result.headers: + return operation_result + wait_for_resource_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self.client, + self.client.get_work_request(wait_for_resource_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states, + **waiter_kwargs + ) + result_to_return = waiter_result + + return result_to_return + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def change_private_endpoint_compartment_and_wait_for_state(self, private_endpoint_id, change_private_endpoint_compartment_details, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): """ Calls :py:func:`~oci.data_flow.DataFlowClient.change_private_endpoint_compartment` and waits for the :py:class:`~oci.data_flow.models.WorkRequest` diff --git a/src/oci/data_flow/models/application.py b/src/oci/data_flow/models/application.py index e8a19b3d0d..1eae557a8b 100644 --- a/src/oci/data_flow/models/application.py +++ b/src/oci/data_flow/models/application.py @@ -35,6 +35,10 @@ class Application(object): #: This constant has a value of "ACTIVE" LIFECYCLE_STATE_ACTIVE = "ACTIVE" + #: A constant which can be used with the lifecycle_state property of a Application. + #: This constant has a value of "DELETING" + LIFECYCLE_STATE_DELETING = "DELETING" + #: A constant which can be used with the lifecycle_state property of a Application. #: This constant has a value of "DELETED" LIFECYCLE_STATE_DELETED = "DELETED" @@ -136,7 +140,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this Application. - Allowed values for this property are: "ACTIVE", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "ACTIVE", "DELETING", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -792,7 +796,7 @@ def lifecycle_state(self): **[Required]** Gets the lifecycle_state of this Application. The current state of this application. - Allowed values for this property are: "ACTIVE", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "ACTIVE", "DELETING", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -811,7 +815,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this Application. :type: str """ - allowed_values = ["ACTIVE", "DELETED", "INACTIVE"] + allowed_values = ["ACTIVE", "DELETING", "DELETED", "INACTIVE"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state diff --git a/src/oci/data_flow/models/application_summary.py b/src/oci/data_flow/models/application_summary.py index 10915b58c7..86f687b3f9 100644 --- a/src/oci/data_flow/models/application_summary.py +++ b/src/oci/data_flow/models/application_summary.py @@ -35,6 +35,10 @@ class ApplicationSummary(object): #: This constant has a value of "ACTIVE" LIFECYCLE_STATE_ACTIVE = "ACTIVE" + #: A constant which can be used with the lifecycle_state property of a ApplicationSummary. + #: This constant has a value of "DELETING" + LIFECYCLE_STATE_DELETING = "DELETING" + #: A constant which can be used with the lifecycle_state property of a ApplicationSummary. #: This constant has a value of "DELETED" LIFECYCLE_STATE_DELETED = "DELETED" @@ -88,7 +92,7 @@ def __init__(self, **kwargs): :param lifecycle_state: The value to assign to the lifecycle_state property of this ApplicationSummary. - Allowed values for this property are: "ACTIVE", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "ACTIVE", "DELETING", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str @@ -342,7 +346,7 @@ def lifecycle_state(self): **[Required]** Gets the lifecycle_state of this ApplicationSummary. The current state of this application. - Allowed values for this property are: "ACTIVE", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "ACTIVE", "DELETING", "DELETED", "INACTIVE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -361,7 +365,7 @@ def lifecycle_state(self, lifecycle_state): :param lifecycle_state: The lifecycle_state of this ApplicationSummary. :type: str """ - allowed_values = ["ACTIVE", "DELETED", "INACTIVE"] + allowed_values = ["ACTIVE", "DELETING", "DELETED", "INACTIVE"] if not value_allowed_none_or_none_sentinel(lifecycle_state, allowed_values): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state diff --git a/src/oci/database/database_client.py b/src/oci/database/database_client.py index 8c0f2857e5..6da59f3ddb 100644 --- a/src/oci/database/database_client.py +++ b/src/oci/database/database_client.py @@ -37911,6 +37911,9 @@ def rotate_autonomous_container_database_encryption_key(self, autonomous_contain :param str opc_request_id: (optional) Unique identifier for the request. + :param oci.database.models.RotateAutonomousContainerDatabaseEncryptionKeyDetails rotate_autonomous_container_database_encryption_key_details: (optional) + Key details provided by the user for rotate key operation for Autonomous Database. + :param obj retry_strategy: (optional) A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. @@ -37942,7 +37945,8 @@ def rotate_autonomous_container_database_encryption_key(self, autonomous_contain "retry_strategy", "if_match", "opc_retry_token", - "opc_request_id" + "opc_request_id", + "rotate_autonomous_container_database_encryption_key_details" ] extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] if extra_kwargs: @@ -37984,6 +37988,7 @@ def rotate_autonomous_container_database_encryption_key(self, autonomous_contain method=method, path_params=path_params, header_params=header_params, + body=kwargs.get('rotate_autonomous_container_database_encryption_key_details'), response_type="AutonomousContainerDatabase", allow_control_chars=kwargs.get('allow_control_chars'), operation_name=operation_name, @@ -37995,6 +38000,7 @@ def rotate_autonomous_container_database_encryption_key(self, autonomous_contain method=method, path_params=path_params, header_params=header_params, + body=kwargs.get('rotate_autonomous_container_database_encryption_key_details'), response_type="AutonomousContainerDatabase", allow_control_chars=kwargs.get('allow_control_chars'), operation_name=operation_name, @@ -38028,6 +38034,9 @@ def rotate_autonomous_database_encryption_key(self, autonomous_database_id, **kw :param str opc_request_id: (optional) Unique identifier for the request. + :param oci.database.models.RotateAutonomousDatabaseEncryptionKeyDetails rotate_autonomous_database_encryption_key_details: (optional) + Key details provided by the user for rotate key operation for Autonomous Database. + :param obj retry_strategy: (optional) A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. @@ -38059,7 +38068,8 @@ def rotate_autonomous_database_encryption_key(self, autonomous_database_id, **kw "retry_strategy", "if_match", "opc_retry_token", - "opc_request_id" + "opc_request_id", + "rotate_autonomous_database_encryption_key_details" ] extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] if extra_kwargs: @@ -38101,6 +38111,7 @@ def rotate_autonomous_database_encryption_key(self, autonomous_database_id, **kw method=method, path_params=path_params, header_params=header_params, + body=kwargs.get('rotate_autonomous_database_encryption_key_details'), response_type="AutonomousDatabase", allow_control_chars=kwargs.get('allow_control_chars'), operation_name=operation_name, @@ -38112,6 +38123,7 @@ def rotate_autonomous_database_encryption_key(self, autonomous_database_id, **kw method=method, path_params=path_params, header_params=header_params, + body=kwargs.get('rotate_autonomous_database_encryption_key_details'), response_type="AutonomousDatabase", allow_control_chars=kwargs.get('allow_control_chars'), operation_name=operation_name, diff --git a/src/oci/database/models/__init__.py b/src/oci/database/models/__init__.py index db29367f3d..44655b1638 100644 --- a/src/oci/database/models/__init__.py +++ b/src/oci/database/models/__init__.py @@ -376,6 +376,8 @@ from .resource_pool_summary import ResourcePoolSummary from .restore_autonomous_database_details import RestoreAutonomousDatabaseDetails from .restore_database_details import RestoreDatabaseDetails +from .rotate_autonomous_container_database_encryption_key_details import RotateAutonomousContainerDatabaseEncryptionKeyDetails +from .rotate_autonomous_database_encryption_key_details import RotateAutonomousDatabaseEncryptionKeyDetails from .rotate_autonomous_vm_cluster_ords_certs_details import RotateAutonomousVmClusterOrdsCertsDetails from .rotate_autonomous_vm_cluster_ssl_certs_details import RotateAutonomousVmClusterSslCertsDetails from .rotate_cloud_autonomous_vm_cluster_ords_certs_details import RotateCloudAutonomousVmClusterOrdsCertsDetails @@ -835,6 +837,8 @@ "ResourcePoolSummary": ResourcePoolSummary, "RestoreAutonomousDatabaseDetails": RestoreAutonomousDatabaseDetails, "RestoreDatabaseDetails": RestoreDatabaseDetails, + "RotateAutonomousContainerDatabaseEncryptionKeyDetails": RotateAutonomousContainerDatabaseEncryptionKeyDetails, + "RotateAutonomousDatabaseEncryptionKeyDetails": RotateAutonomousDatabaseEncryptionKeyDetails, "RotateAutonomousVmClusterOrdsCertsDetails": RotateAutonomousVmClusterOrdsCertsDetails, "RotateAutonomousVmClusterSslCertsDetails": RotateAutonomousVmClusterSslCertsDetails, "RotateCloudAutonomousVmClusterOrdsCertsDetails": RotateCloudAutonomousVmClusterOrdsCertsDetails, diff --git a/src/oci/database/models/rotate_autonomous_container_database_encryption_key_details.py b/src/oci/database/models/rotate_autonomous_container_database_encryption_key_details.py new file mode 100644 index 0000000000..e2a5b39df9 --- /dev/null +++ b/src/oci/database/models/rotate_autonomous_container_database_encryption_key_details.py @@ -0,0 +1,76 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RotateAutonomousContainerDatabaseEncryptionKeyDetails(object): + """ + Key details provided by the user for rotate key operation for Autonomous Database. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RotateAutonomousContainerDatabaseEncryptionKeyDetails object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param key_version_id: + The value to assign to the key_version_id property of this RotateAutonomousContainerDatabaseEncryptionKeyDetails. + :type key_version_id: str + + """ + self.swagger_types = { + 'key_version_id': 'str' + } + + self.attribute_map = { + 'key_version_id': 'keyVersionId' + } + + self._key_version_id = None + + @property + def key_version_id(self): + """ + Gets the key_version_id of this RotateAutonomousContainerDatabaseEncryptionKeyDetails. + Key version ocid of the key provided by the user for rotate operation. `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The key_version_id of this RotateAutonomousContainerDatabaseEncryptionKeyDetails. + :rtype: str + """ + return self._key_version_id + + @key_version_id.setter + def key_version_id(self, key_version_id): + """ + Sets the key_version_id of this RotateAutonomousContainerDatabaseEncryptionKeyDetails. + Key version ocid of the key provided by the user for rotate operation. `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param key_version_id: The key_version_id of this RotateAutonomousContainerDatabaseEncryptionKeyDetails. + :type: str + """ + self._key_version_id = key_version_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/database/models/rotate_autonomous_database_encryption_key_details.py b/src/oci/database/models/rotate_autonomous_database_encryption_key_details.py new file mode 100644 index 0000000000..6e48d49689 --- /dev/null +++ b/src/oci/database/models/rotate_autonomous_database_encryption_key_details.py @@ -0,0 +1,76 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20160918 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RotateAutonomousDatabaseEncryptionKeyDetails(object): + """ + Key details provided by the user for rotate key operation for Autonomous Database. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RotateAutonomousDatabaseEncryptionKeyDetails object with values from keyword arguments. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param key_version_id: + The value to assign to the key_version_id property of this RotateAutonomousDatabaseEncryptionKeyDetails. + :type key_version_id: str + + """ + self.swagger_types = { + 'key_version_id': 'str' + } + + self.attribute_map = { + 'key_version_id': 'keyVersionId' + } + + self._key_version_id = None + + @property + def key_version_id(self): + """ + Gets the key_version_id of this RotateAutonomousDatabaseEncryptionKeyDetails. + Key version ocid of the key provided by the user for rotate operation. `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The key_version_id of this RotateAutonomousDatabaseEncryptionKeyDetails. + :rtype: str + """ + return self._key_version_id + + @key_version_id.setter + def key_version_id(self, key_version_id): + """ + Sets the key_version_id of this RotateAutonomousDatabaseEncryptionKeyDetails. + Key version ocid of the key provided by the user for rotate operation. `OCID`__. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param key_version_id: The key_version_id of this RotateAutonomousDatabaseEncryptionKeyDetails. + :type: str + """ + self._key_version_id = key_version_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/disaster_recovery/disaster_recovery_client.py b/src/oci/disaster_recovery/disaster_recovery_client.py index 580d41f84e..0171ef496e 100644 --- a/src/oci/disaster_recovery/disaster_recovery_client.py +++ b/src/oci/disaster_recovery/disaster_recovery_client.py @@ -2099,6 +2099,11 @@ def list_dr_plans(self, dr_protection_group_id, **kwargs): :param str opc_request_id: (optional) The client request ID for tracing. + :param str lifecycle_sub_state: (optional) + A filter to return only DR plans that match the given lifecycle sub-state. + + Allowed values are: "NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING" + :param obj retry_strategy: (optional) A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. @@ -2136,7 +2141,8 @@ def list_dr_plans(self, dr_protection_group_id, **kwargs): "page", "sort_order", "sort_by", - "opc_request_id" + "opc_request_id", + "lifecycle_sub_state" ] extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] if extra_kwargs: @@ -2171,6 +2177,13 @@ def list_dr_plans(self, dr_protection_group_id, **kwargs): f"Invalid value for `sort_by`, must be one of { sort_by_allowed_values }" ) + if 'lifecycle_sub_state' in kwargs: + lifecycle_sub_state_allowed_values = ["NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING"] + if kwargs['lifecycle_sub_state'] not in lifecycle_sub_state_allowed_values: + raise ValueError( + f"Invalid value for `lifecycle_sub_state`, must be one of { lifecycle_sub_state_allowed_values }" + ) + query_params = { "drProtectionGroupId": dr_protection_group_id, "lifecycleState": kwargs.get("lifecycle_state", missing), @@ -2180,7 +2193,8 @@ def list_dr_plans(self, dr_protection_group_id, **kwargs): "limit": kwargs.get("limit", missing), "page": kwargs.get("page", missing), "sortOrder": kwargs.get("sort_order", missing), - "sortBy": kwargs.get("sort_by", missing) + "sortBy": kwargs.get("sort_by", missing), + "lifecycleSubState": kwargs.get("lifecycle_sub_state", missing) } query_params = {k: v for (k, v) in six.iteritems(query_params) if v is not missing and v is not None} @@ -3052,6 +3066,128 @@ def pause_dr_plan_execution(self, pause_dr_plan_execution_details, dr_plan_execu api_reference_link=api_reference_link, required_arguments=required_arguments) + def refresh_dr_plan(self, refresh_dr_plan_details, dr_plan_id, **kwargs): + """ + Refresh DR Plan identified by *drPlanId*. + + + :param oci.disaster_recovery.models.RefreshDrPlanDetails refresh_dr_plan_details: (required) + Details for refreshing a DR plan. + + :param str dr_plan_id: (required) + The OCID of the DR plan. + + Example: `ocid1.drplan.oc1..uniqueID` + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call + for a resource, set the `if-match` parameter to the value of the + etag from a previous GET or POST response for that resource. + The resource will be updated or deleted only if the etag you + provide matches the resource's current etag value. + + :param str opc_retry_token: (optional) + A token that uniquely identifies a request so it can be retried in case of a timeout or + server error without risk of executing that same action again. Retry tokens expire after 24 + hours, but can be invalidated before then due to conflicting operations. For example, if a resource + has been deleted and purged from the system, then a retry of the original creation request + might be rejected. + + :param str opc_request_id: (optional) + The client request ID for tracing. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. This operation uses :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` as default if no retry strategy is provided. + The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :param bool allow_control_chars: (optional) + allow_control_chars is a boolean to indicate whether or not this request should allow control characters in the response object. + By default, the response will not allow control characters in strings + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + + :example: + Click `here `__ to see an example of how to use refresh_dr_plan API. + """ + # Required path and query arguments. These are in camelCase to replace values in service endpoints. + required_arguments = ['drPlanId'] + resource_path = "/drPlans/{drPlanId}/actions/refresh" + method = "POST" + operation_name = "refresh_dr_plan" + api_reference_link = "https://docs.oracle.com/iaas/api/#/en/disaster-recovery/20220125/DrPlan/RefreshDrPlan" + + # Don't accept unknown kwargs + expected_kwargs = [ + "allow_control_chars", + "retry_strategy", + "if_match", + "opc_retry_token", + "opc_request_id" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + f"refresh_dr_plan got unknown kwargs: {extra_kwargs!r}") + + path_params = { + "drPlanId": dr_plan_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError(f'Parameter {k} cannot be None, whitespace or empty string') + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "if-match": kwargs.get("if_match", missing), + "opc-retry-token": kwargs.get("opc_retry_token", missing), + "opc-request-id": kwargs.get("opc_request_id", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.base_client.get_preferred_retry_strategy( + operation_retry_strategy=kwargs.get('retry_strategy'), + client_retry_strategy=self.retry_strategy + ) + if retry_strategy is None: + retry_strategy = retry.DEFAULT_RETRY_STRATEGY + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_retry_token_if_needed(header_params) + self.base_client.add_opc_client_retries_header(header_params) + retry_strategy.add_circuit_breaker_callback(self.circuit_breaker_callback) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=refresh_dr_plan_details, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=refresh_dr_plan_details, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + def resume_dr_plan_execution(self, resume_dr_plan_execution_details, dr_plan_execution_id, **kwargs): """ Resume the DR plan execution identified by *drPlanExecutionId*. @@ -3753,3 +3889,125 @@ def update_dr_protection_group_role(self, update_dr_protection_group_role_detail operation_name=operation_name, api_reference_link=api_reference_link, required_arguments=required_arguments) + + def verify_dr_plan(self, verify_dr_plan_details, dr_plan_id, **kwargs): + """ + Verify DR Plan identified by *drPlanId*. + + + :param oci.disaster_recovery.models.VerifyDrPlanDetails verify_dr_plan_details: (required) + Details for verifying a DR plan. + + :param str dr_plan_id: (required) + The OCID of the DR plan. + + Example: `ocid1.drplan.oc1..uniqueID` + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call + for a resource, set the `if-match` parameter to the value of the + etag from a previous GET or POST response for that resource. + The resource will be updated or deleted only if the etag you + provide matches the resource's current etag value. + + :param str opc_retry_token: (optional) + A token that uniquely identifies a request so it can be retried in case of a timeout or + server error without risk of executing that same action again. Retry tokens expire after 24 + hours, but can be invalidated before then due to conflicting operations. For example, if a resource + has been deleted and purged from the system, then a retry of the original creation request + might be rejected. + + :param str opc_request_id: (optional) + The client request ID for tracing. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. This operation uses :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` as default if no retry strategy is provided. + The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :param bool allow_control_chars: (optional) + allow_control_chars is a boolean to indicate whether or not this request should allow control characters in the response object. + By default, the response will not allow control characters in strings + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + + :example: + Click `here `__ to see an example of how to use verify_dr_plan API. + """ + # Required path and query arguments. These are in camelCase to replace values in service endpoints. + required_arguments = ['drPlanId'] + resource_path = "/drPlans/{drPlanId}/actions/verify" + method = "POST" + operation_name = "verify_dr_plan" + api_reference_link = "https://docs.oracle.com/iaas/api/#/en/disaster-recovery/20220125/DrPlan/VerifyDrPlan" + + # Don't accept unknown kwargs + expected_kwargs = [ + "allow_control_chars", + "retry_strategy", + "if_match", + "opc_retry_token", + "opc_request_id" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + f"verify_dr_plan got unknown kwargs: {extra_kwargs!r}") + + path_params = { + "drPlanId": dr_plan_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError(f'Parameter {k} cannot be None, whitespace or empty string') + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "if-match": kwargs.get("if_match", missing), + "opc-retry-token": kwargs.get("opc_retry_token", missing), + "opc-request-id": kwargs.get("opc_request_id", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.base_client.get_preferred_retry_strategy( + operation_retry_strategy=kwargs.get('retry_strategy'), + client_retry_strategy=self.retry_strategy + ) + if retry_strategy is None: + retry_strategy = retry.DEFAULT_RETRY_STRATEGY + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_retry_token_if_needed(header_params) + self.base_client.add_opc_client_retries_header(header_params) + retry_strategy.add_circuit_breaker_callback(self.circuit_breaker_callback) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=verify_dr_plan_details, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + body=verify_dr_plan_details, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) diff --git a/src/oci/disaster_recovery/disaster_recovery_client_composite_operations.py b/src/oci/disaster_recovery/disaster_recovery_client_composite_operations.py index db229f43c7..7bb465266e 100644 --- a/src/oci/disaster_recovery/disaster_recovery_client_composite_operations.py +++ b/src/oci/disaster_recovery/disaster_recovery_client_composite_operations.py @@ -565,6 +565,50 @@ def pause_dr_plan_execution_and_wait_for_state(self, pause_dr_plan_execution_det except Exception as e: raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def refresh_dr_plan_and_wait_for_state(self, refresh_dr_plan_details, dr_plan_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.disaster_recovery.DisasterRecoveryClient.refresh_dr_plan` and waits for the :py:class:`~oci.disaster_recovery.models.WorkRequest` + to enter the given state(s). + + :param oci.disaster_recovery.models.RefreshDrPlanDetails refresh_dr_plan_details: (required) + Details for refreshing a DR plan. + + :param str dr_plan_id: (required) + The OCID of the DR plan. + + Example: `ocid1.drplan.oc1..uniqueID` + + :param list[str] wait_for_states: + An array of states to wait on. These should be valid values for :py:attr:`~oci.disaster_recovery.models.WorkRequest.status` + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.disaster_recovery.DisasterRecoveryClient.refresh_dr_plan` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.refresh_dr_plan(refresh_dr_plan_details, dr_plan_id, **operation_kwargs) + if not wait_for_states: + return operation_result + lowered_wait_for_states = [w.lower() for w in wait_for_states] + if 'opc-work-request-id' not in operation_result.headers: + return operation_result + wait_for_resource_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self.client, + self.client.get_work_request(wait_for_resource_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states, + **waiter_kwargs + ) + result_to_return = waiter_result + + return result_to_return + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def resume_dr_plan_execution_and_wait_for_state(self, resume_dr_plan_execution_details, dr_plan_execution_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): """ Calls :py:func:`~oci.disaster_recovery.DisasterRecoveryClient.resume_dr_plan_execution` and waits for the :py:class:`~oci.disaster_recovery.models.WorkRequest` @@ -828,3 +872,47 @@ def update_dr_protection_group_role_and_wait_for_state(self, update_dr_protectio return result_to_return except Exception as e: raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + + def verify_dr_plan_and_wait_for_state(self, verify_dr_plan_details, dr_plan_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.disaster_recovery.DisasterRecoveryClient.verify_dr_plan` and waits for the :py:class:`~oci.disaster_recovery.models.WorkRequest` + to enter the given state(s). + + :param oci.disaster_recovery.models.VerifyDrPlanDetails verify_dr_plan_details: (required) + Details for verifying a DR plan. + + :param str dr_plan_id: (required) + The OCID of the DR plan. + + Example: `ocid1.drplan.oc1..uniqueID` + + :param list[str] wait_for_states: + An array of states to wait on. These should be valid values for :py:attr:`~oci.disaster_recovery.models.WorkRequest.status` + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.disaster_recovery.DisasterRecoveryClient.verify_dr_plan` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.verify_dr_plan(verify_dr_plan_details, dr_plan_id, **operation_kwargs) + if not wait_for_states: + return operation_result + lowered_wait_for_states = [w.lower() for w in wait_for_states] + if 'opc-work-request-id' not in operation_result.headers: + return operation_result + wait_for_resource_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self.client, + self.client.get_work_request(wait_for_resource_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states, + **waiter_kwargs + ) + result_to_return = waiter_result + + return result_to_return + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) diff --git a/src/oci/disaster_recovery/models/__init__.py b/src/oci/disaster_recovery/models/__init__.py index ab1f45c94d..9fa3ab329f 100644 --- a/src/oci/disaster_recovery/models/__init__.py +++ b/src/oci/disaster_recovery/models/__init__.py @@ -92,6 +92,8 @@ from .object_storage_script_location import ObjectStorageScriptLocation from .object_store_script_precheck_step import ObjectStoreScriptPrecheckStep from .pause_dr_plan_execution_details import PauseDrPlanExecutionDetails +from .refresh_dr_plan_default_details import RefreshDrPlanDefaultDetails +from .refresh_dr_plan_details import RefreshDrPlanDetails from .resume_dr_plan_execution_details import ResumeDrPlanExecutionDetails from .retry_dr_plan_execution_details import RetryDrPlanExecutionDetails from .run_local_script_user_defined_step import RunLocalScriptUserDefinedStep @@ -142,6 +144,8 @@ from .update_object_store_script_precheck_step_details import UpdateObjectStoreScriptPrecheckStepDetails from .update_run_local_script_user_defined_step_details import UpdateRunLocalScriptUserDefinedStepDetails from .update_run_object_store_script_user_defined_step_details import UpdateRunObjectStoreScriptUserDefinedStepDetails +from .verify_dr_plan_default_details import VerifyDrPlanDefaultDetails +from .verify_dr_plan_details import VerifyDrPlanDetails from .work_request import WorkRequest from .work_request_error import WorkRequestError from .work_request_error_collection import WorkRequestErrorCollection @@ -239,6 +243,8 @@ "ObjectStorageScriptLocation": ObjectStorageScriptLocation, "ObjectStoreScriptPrecheckStep": ObjectStoreScriptPrecheckStep, "PauseDrPlanExecutionDetails": PauseDrPlanExecutionDetails, + "RefreshDrPlanDefaultDetails": RefreshDrPlanDefaultDetails, + "RefreshDrPlanDetails": RefreshDrPlanDetails, "ResumeDrPlanExecutionDetails": ResumeDrPlanExecutionDetails, "RetryDrPlanExecutionDetails": RetryDrPlanExecutionDetails, "RunLocalScriptUserDefinedStep": RunLocalScriptUserDefinedStep, @@ -289,6 +295,8 @@ "UpdateObjectStoreScriptPrecheckStepDetails": UpdateObjectStoreScriptPrecheckStepDetails, "UpdateRunLocalScriptUserDefinedStepDetails": UpdateRunLocalScriptUserDefinedStepDetails, "UpdateRunObjectStoreScriptUserDefinedStepDetails": UpdateRunObjectStoreScriptUserDefinedStepDetails, + "VerifyDrPlanDefaultDetails": VerifyDrPlanDefaultDetails, + "VerifyDrPlanDetails": VerifyDrPlanDetails, "WorkRequest": WorkRequest, "WorkRequestError": WorkRequestError, "WorkRequestErrorCollection": WorkRequestErrorCollection, diff --git a/src/oci/disaster_recovery/models/create_dr_plan_details.py b/src/oci/disaster_recovery/models/create_dr_plan_details.py index a3a74c249a..3468f90abb 100644 --- a/src/oci/disaster_recovery/models/create_dr_plan_details.py +++ b/src/oci/disaster_recovery/models/create_dr_plan_details.py @@ -49,6 +49,10 @@ def __init__(self, **kwargs): The value to assign to the dr_protection_group_id property of this CreateDrPlanDetails. :type dr_protection_group_id: str + :param source_plan_id: + The value to assign to the source_plan_id property of this CreateDrPlanDetails. + :type source_plan_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this CreateDrPlanDetails. :type freeform_tags: dict(str, str) @@ -62,6 +66,7 @@ def __init__(self, **kwargs): 'display_name': 'str', 'type': 'str', 'dr_protection_group_id': 'str', + 'source_plan_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))' } @@ -70,6 +75,7 @@ def __init__(self, **kwargs): 'display_name': 'displayName', 'type': 'type', 'dr_protection_group_id': 'drProtectionGroupId', + 'source_plan_id': 'sourcePlanId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags' } @@ -77,6 +83,7 @@ def __init__(self, **kwargs): self._display_name = None self._type = None self._dr_protection_group_id = None + self._source_plan_id = None self._freeform_tags = None self._defined_tags = None @@ -167,6 +174,34 @@ def dr_protection_group_id(self, dr_protection_group_id): """ self._dr_protection_group_id = dr_protection_group_id + @property + def source_plan_id(self): + """ + Gets the source_plan_id of this CreateDrPlanDetails. + The OCID of the source DR plan that should be cloned. + + Example: `ocid1.drplan.oc1..uniqueID` + + + :return: The source_plan_id of this CreateDrPlanDetails. + :rtype: str + """ + return self._source_plan_id + + @source_plan_id.setter + def source_plan_id(self, source_plan_id): + """ + Sets the source_plan_id of this CreateDrPlanDetails. + The OCID of the source DR plan that should be cloned. + + Example: `ocid1.drplan.oc1..uniqueID` + + + :param source_plan_id: The source_plan_id of this CreateDrPlanDetails. + :type: str + """ + self._source_plan_id = source_plan_id + @property def freeform_tags(self): """ diff --git a/src/oci/disaster_recovery/models/dr_plan.py b/src/oci/disaster_recovery/models/dr_plan.py index 3abbd41047..4a2fb774f8 100644 --- a/src/oci/disaster_recovery/models/dr_plan.py +++ b/src/oci/disaster_recovery/models/dr_plan.py @@ -63,6 +63,22 @@ class DrPlan(object): #: This constant has a value of "NEEDS_ATTENTION" LIFECYCLE_STATE_NEEDS_ATTENTION = "NEEDS_ATTENTION" + #: A constant which can be used with the lifecycle_sub_state property of a DrPlan. + #: This constant has a value of "NEEDS_REFRESH" + LIFECYCLE_SUB_STATE_NEEDS_REFRESH = "NEEDS_REFRESH" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlan. + #: This constant has a value of "NEEDS_VERIFICATION" + LIFECYCLE_SUB_STATE_NEEDS_VERIFICATION = "NEEDS_VERIFICATION" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlan. + #: This constant has a value of "REFRESHING" + LIFECYCLE_SUB_STATE_REFRESHING = "REFRESHING" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlan. + #: This constant has a value of "VERIFYING" + LIFECYCLE_SUB_STATE_VERIFYING = "VERIFYING" + def __init__(self, **kwargs): """ Initializes a new DrPlan object with values from keyword arguments. @@ -106,6 +122,10 @@ def __init__(self, **kwargs): The value to assign to the peer_region property of this DrPlan. :type peer_region: str + :param source_plan_id: + The value to assign to the source_plan_id property of this DrPlan. + :type source_plan_id: str + :param plan_groups: The value to assign to the plan_groups property of this DrPlan. :type plan_groups: list[oci.disaster_recovery.models.DrPlanGroup] @@ -116,6 +136,12 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str + :param lifecycle_sub_state: + The value to assign to the lifecycle_sub_state property of this DrPlan. + Allowed values for this property are: "NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type lifecycle_sub_state: str + :param life_cycle_details: The value to assign to the life_cycle_details property of this DrPlan. :type life_cycle_details: str @@ -143,8 +169,10 @@ def __init__(self, **kwargs): 'dr_protection_group_id': 'str', 'peer_dr_protection_group_id': 'str', 'peer_region': 'str', + 'source_plan_id': 'str', 'plan_groups': 'list[DrPlanGroup]', 'lifecycle_state': 'str', + 'lifecycle_sub_state': 'str', 'life_cycle_details': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', @@ -161,8 +189,10 @@ def __init__(self, **kwargs): 'dr_protection_group_id': 'drProtectionGroupId', 'peer_dr_protection_group_id': 'peerDrProtectionGroupId', 'peer_region': 'peerRegion', + 'source_plan_id': 'sourcePlanId', 'plan_groups': 'planGroups', 'lifecycle_state': 'lifecycleState', + 'lifecycle_sub_state': 'lifecycleSubState', 'life_cycle_details': 'lifeCycleDetails', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', @@ -178,8 +208,10 @@ def __init__(self, **kwargs): self._dr_protection_group_id = None self._peer_dr_protection_group_id = None self._peer_region = None + self._source_plan_id = None self._plan_groups = None self._lifecycle_state = None + self._lifecycle_sub_state = None self._life_cycle_details = None self._freeform_tags = None self._defined_tags = None @@ -443,6 +475,36 @@ def peer_region(self, peer_region): """ self._peer_region = peer_region + @property + def source_plan_id(self): + """ + Gets the source_plan_id of this DrPlan. + If this is a cloned DR plan, the OCID of the source DR plan that was used to clone this DR plan. + If this DR plan was not cloned, then the value for this will be `null`. + + Example: `ocid1.drplan.oc1..uniqueID` + + + :return: The source_plan_id of this DrPlan. + :rtype: str + """ + return self._source_plan_id + + @source_plan_id.setter + def source_plan_id(self, source_plan_id): + """ + Sets the source_plan_id of this DrPlan. + If this is a cloned DR plan, the OCID of the source DR plan that was used to clone this DR plan. + If this DR plan was not cloned, then the value for this will be `null`. + + Example: `ocid1.drplan.oc1..uniqueID` + + + :param source_plan_id: The source_plan_id of this DrPlan. + :type: str + """ + self._source_plan_id = source_plan_id + @property def plan_groups(self): """ @@ -497,6 +559,36 @@ def lifecycle_state(self, lifecycle_state): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state + @property + def lifecycle_sub_state(self): + """ + Gets the lifecycle_sub_state of this DrPlan. + The current state of the DR plan. + + Allowed values for this property are: "NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The lifecycle_sub_state of this DrPlan. + :rtype: str + """ + return self._lifecycle_sub_state + + @lifecycle_sub_state.setter + def lifecycle_sub_state(self, lifecycle_sub_state): + """ + Sets the lifecycle_sub_state of this DrPlan. + The current state of the DR plan. + + + :param lifecycle_sub_state: The lifecycle_sub_state of this DrPlan. + :type: str + """ + allowed_values = ["NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING"] + if not value_allowed_none_or_none_sentinel(lifecycle_sub_state, allowed_values): + lifecycle_sub_state = 'UNKNOWN_ENUM_VALUE' + self._lifecycle_sub_state = lifecycle_sub_state + @property def life_cycle_details(self): """ diff --git a/src/oci/disaster_recovery/models/dr_plan_group.py b/src/oci/disaster_recovery/models/dr_plan_group.py index d676fac520..fdc18bb99e 100644 --- a/src/oci/disaster_recovery/models/dr_plan_group.py +++ b/src/oci/disaster_recovery/models/dr_plan_group.py @@ -31,6 +31,18 @@ class DrPlanGroup(object): #: This constant has a value of "USER_DEFINED_PAUSE" TYPE_USER_DEFINED_PAUSE = "USER_DEFINED_PAUSE" + #: A constant which can be used with the refresh_status property of a DrPlanGroup. + #: This constant has a value of "GROUP_ADDED" + REFRESH_STATUS_GROUP_ADDED = "GROUP_ADDED" + + #: A constant which can be used with the refresh_status property of a DrPlanGroup. + #: This constant has a value of "GROUP_DELETED" + REFRESH_STATUS_GROUP_DELETED = "GROUP_DELETED" + + #: A constant which can be used with the refresh_status property of a DrPlanGroup. + #: This constant has a value of "GROUP_MODIFIED" + REFRESH_STATUS_GROUP_MODIFIED = "GROUP_MODIFIED" + def __init__(self, **kwargs): """ Initializes a new DrPlanGroup object with values from keyword arguments. @@ -46,6 +58,12 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str + :param refresh_status: + The value to assign to the refresh_status property of this DrPlanGroup. + Allowed values for this property are: "GROUP_ADDED", "GROUP_DELETED", "GROUP_MODIFIED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type refresh_status: str + :param display_name: The value to assign to the display_name property of this DrPlanGroup. :type display_name: str @@ -62,6 +80,7 @@ def __init__(self, **kwargs): self.swagger_types = { 'id': 'str', 'type': 'str', + 'refresh_status': 'str', 'display_name': 'str', 'is_pause_enabled': 'bool', 'steps': 'list[DrPlanStep]' @@ -70,6 +89,7 @@ def __init__(self, **kwargs): self.attribute_map = { 'id': 'id', 'type': 'type', + 'refresh_status': 'refreshStatus', 'display_name': 'displayName', 'is_pause_enabled': 'isPauseEnabled', 'steps': 'steps' @@ -77,6 +97,7 @@ def __init__(self, **kwargs): self._id = None self._type = None + self._refresh_status = None self._display_name = None self._is_pause_enabled = None self._steps = None @@ -143,6 +164,40 @@ def type(self, type): type = 'UNKNOWN_ENUM_VALUE' self._type = type + @property + def refresh_status(self): + """ + Gets the refresh_status of this DrPlanGroup. + The DR plan group refresh status. + + Example: `GROUP_MODIFIED` + + Allowed values for this property are: "GROUP_ADDED", "GROUP_DELETED", "GROUP_MODIFIED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The refresh_status of this DrPlanGroup. + :rtype: str + """ + return self._refresh_status + + @refresh_status.setter + def refresh_status(self, refresh_status): + """ + Sets the refresh_status of this DrPlanGroup. + The DR plan group refresh status. + + Example: `GROUP_MODIFIED` + + + :param refresh_status: The refresh_status of this DrPlanGroup. + :type: str + """ + allowed_values = ["GROUP_ADDED", "GROUP_DELETED", "GROUP_MODIFIED"] + if not value_allowed_none_or_none_sentinel(refresh_status, allowed_values): + refresh_status = 'UNKNOWN_ENUM_VALUE' + self._refresh_status = refresh_status + @property def display_name(self): """ diff --git a/src/oci/disaster_recovery/models/dr_plan_step.py b/src/oci/disaster_recovery/models/dr_plan_step.py index f1244cd15c..84db2e5b0f 100644 --- a/src/oci/disaster_recovery/models/dr_plan_step.py +++ b/src/oci/disaster_recovery/models/dr_plan_step.py @@ -387,6 +387,14 @@ class DrPlanStep(object): #: This constant has a value of "OBJECT_STORAGE_BUCKET_FAILOVER_SETUP_REVERSE_REPLICATION_STANDBY" TYPE_OBJECT_STORAGE_BUCKET_FAILOVER_SETUP_REVERSE_REPLICATION_STANDBY = "OBJECT_STORAGE_BUCKET_FAILOVER_SETUP_REVERSE_REPLICATION_STANDBY" + #: A constant which can be used with the refresh_status property of a DrPlanStep. + #: This constant has a value of "STEP_ADDED" + REFRESH_STATUS_STEP_ADDED = "STEP_ADDED" + + #: A constant which can be used with the refresh_status property of a DrPlanStep. + #: This constant has a value of "STEP_DELETED" + REFRESH_STATUS_STEP_DELETED = "STEP_DELETED" + #: A constant which can be used with the error_mode property of a DrPlanStep. #: This constant has a value of "STOP_ON_ERROR" ERROR_MODE_STOP_ON_ERROR = "STOP_ON_ERROR" @@ -418,6 +426,12 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str + :param refresh_status: + The value to assign to the refresh_status property of this DrPlanStep. + Allowed values for this property are: "STEP_ADDED", "STEP_DELETED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type refresh_status: str + :param display_name: The value to assign to the display_name property of this DrPlanStep. :type display_name: str @@ -446,6 +460,7 @@ def __init__(self, **kwargs): 'group_id': 'str', 'member_id': 'str', 'type': 'str', + 'refresh_status': 'str', 'display_name': 'str', 'error_mode': 'str', 'timeout': 'int', @@ -458,6 +473,7 @@ def __init__(self, **kwargs): 'group_id': 'groupId', 'member_id': 'memberId', 'type': 'type', + 'refresh_status': 'refreshStatus', 'display_name': 'displayName', 'error_mode': 'errorMode', 'timeout': 'timeout', @@ -469,6 +485,7 @@ def __init__(self, **kwargs): self._group_id = None self._member_id = None self._type = None + self._refresh_status = None self._display_name = None self._error_mode = None self._timeout = None @@ -589,6 +606,40 @@ def type(self, type): type = 'UNKNOWN_ENUM_VALUE' self._type = type + @property + def refresh_status(self): + """ + Gets the refresh_status of this DrPlanStep. + The DR plan step refresh status. + + Example: `STEP_ADDED` + + Allowed values for this property are: "STEP_ADDED", "STEP_DELETED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The refresh_status of this DrPlanStep. + :rtype: str + """ + return self._refresh_status + + @refresh_status.setter + def refresh_status(self, refresh_status): + """ + Sets the refresh_status of this DrPlanStep. + The DR plan step refresh status. + + Example: `STEP_ADDED` + + + :param refresh_status: The refresh_status of this DrPlanStep. + :type: str + """ + allowed_values = ["STEP_ADDED", "STEP_DELETED"] + if not value_allowed_none_or_none_sentinel(refresh_status, allowed_values): + refresh_status = 'UNKNOWN_ENUM_VALUE' + self._refresh_status = refresh_status + @property def display_name(self): """ diff --git a/src/oci/disaster_recovery/models/dr_plan_summary.py b/src/oci/disaster_recovery/models/dr_plan_summary.py index aa6bf44b9c..4e65b13474 100644 --- a/src/oci/disaster_recovery/models/dr_plan_summary.py +++ b/src/oci/disaster_recovery/models/dr_plan_summary.py @@ -63,6 +63,22 @@ class DrPlanSummary(object): #: This constant has a value of "NEEDS_ATTENTION" LIFECYCLE_STATE_NEEDS_ATTENTION = "NEEDS_ATTENTION" + #: A constant which can be used with the lifecycle_sub_state property of a DrPlanSummary. + #: This constant has a value of "NEEDS_REFRESH" + LIFECYCLE_SUB_STATE_NEEDS_REFRESH = "NEEDS_REFRESH" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlanSummary. + #: This constant has a value of "NEEDS_VERIFICATION" + LIFECYCLE_SUB_STATE_NEEDS_VERIFICATION = "NEEDS_VERIFICATION" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlanSummary. + #: This constant has a value of "REFRESHING" + LIFECYCLE_SUB_STATE_REFRESHING = "REFRESHING" + + #: A constant which can be used with the lifecycle_sub_state property of a DrPlanSummary. + #: This constant has a value of "VERIFYING" + LIFECYCLE_SUB_STATE_VERIFYING = "VERIFYING" + def __init__(self, **kwargs): """ Initializes a new DrPlanSummary object with values from keyword arguments. @@ -112,6 +128,12 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type lifecycle_state: str + :param lifecycle_sub_state: + The value to assign to the lifecycle_sub_state property of this DrPlanSummary. + Allowed values for this property are: "NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type lifecycle_sub_state: str + :param life_cycle_details: The value to assign to the life_cycle_details property of this DrPlanSummary. :type life_cycle_details: str @@ -140,6 +162,7 @@ def __init__(self, **kwargs): 'time_created': 'datetime', 'time_updated': 'datetime', 'lifecycle_state': 'str', + 'lifecycle_sub_state': 'str', 'life_cycle_details': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', @@ -157,6 +180,7 @@ def __init__(self, **kwargs): 'time_created': 'timeCreated', 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', + 'lifecycle_sub_state': 'lifecycleSubState', 'life_cycle_details': 'lifeCycleDetails', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', @@ -173,6 +197,7 @@ def __init__(self, **kwargs): self._time_created = None self._time_updated = None self._lifecycle_state = None + self._lifecycle_sub_state = None self._life_cycle_details = None self._freeform_tags = None self._defined_tags = None @@ -474,6 +499,40 @@ def lifecycle_state(self, lifecycle_state): lifecycle_state = 'UNKNOWN_ENUM_VALUE' self._lifecycle_state = lifecycle_state + @property + def lifecycle_sub_state(self): + """ + Gets the lifecycle_sub_state of this DrPlanSummary. + The current sub state of the DR plan. + + Example: `NEEDS_REFRESH` + + Allowed values for this property are: "NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The lifecycle_sub_state of this DrPlanSummary. + :rtype: str + """ + return self._lifecycle_sub_state + + @lifecycle_sub_state.setter + def lifecycle_sub_state(self, lifecycle_sub_state): + """ + Sets the lifecycle_sub_state of this DrPlanSummary. + The current sub state of the DR plan. + + Example: `NEEDS_REFRESH` + + + :param lifecycle_sub_state: The lifecycle_sub_state of this DrPlanSummary. + :type: str + """ + allowed_values = ["NEEDS_REFRESH", "NEEDS_VERIFICATION", "REFRESHING", "VERIFYING"] + if not value_allowed_none_or_none_sentinel(lifecycle_sub_state, allowed_values): + lifecycle_sub_state = 'UNKNOWN_ENUM_VALUE' + self._lifecycle_sub_state = lifecycle_sub_state + @property def life_cycle_details(self): """ diff --git a/src/oci/disaster_recovery/models/refresh_dr_plan_default_details.py b/src/oci/disaster_recovery/models/refresh_dr_plan_default_details.py new file mode 100644 index 0000000000..3b1d0f844e --- /dev/null +++ b/src/oci/disaster_recovery/models/refresh_dr_plan_default_details.py @@ -0,0 +1,51 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220125 + +from .refresh_dr_plan_details import RefreshDrPlanDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RefreshDrPlanDefaultDetails(RefreshDrPlanDetails): + """ + The default type. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RefreshDrPlanDefaultDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.disaster_recovery.models.RefreshDrPlanDefaultDetails.type` attribute + of this class is ``DEFAULT`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this RefreshDrPlanDefaultDetails. + Allowed values for this property are: "DEFAULT" + :type type: str + + """ + self.swagger_types = { + 'type': 'str' + } + + self.attribute_map = { + 'type': 'type' + } + + self._type = None + self._type = 'DEFAULT' + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/disaster_recovery/models/refresh_dr_plan_details.py b/src/oci/disaster_recovery/models/refresh_dr_plan_details.py new file mode 100644 index 0000000000..34c12efe46 --- /dev/null +++ b/src/oci/disaster_recovery/models/refresh_dr_plan_details.py @@ -0,0 +1,101 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220125 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RefreshDrPlanDetails(object): + """ + The details for refreshing a DR plan. + """ + + #: A constant which can be used with the type property of a RefreshDrPlanDetails. + #: This constant has a value of "DEFAULT" + TYPE_DEFAULT = "DEFAULT" + + def __init__(self, **kwargs): + """ + Initializes a new RefreshDrPlanDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.disaster_recovery.models.RefreshDrPlanDefaultDetails` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this RefreshDrPlanDetails. + Allowed values for this property are: "DEFAULT" + :type type: str + + """ + self.swagger_types = { + 'type': 'str' + } + + self.attribute_map = { + 'type': 'type' + } + + self._type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['type'] + + if type == 'DEFAULT': + return 'RefreshDrPlanDefaultDetails' + else: + return 'RefreshDrPlanDetails' + + @property + def type(self): + """ + **[Required]** Gets the type of this RefreshDrPlanDetails. + The default type. + + Allowed values for this property are: "DEFAULT" + + + :return: The type of this RefreshDrPlanDetails. + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """ + Sets the type of this RefreshDrPlanDetails. + The default type. + + + :param type: The type of this RefreshDrPlanDetails. + :type: str + """ + allowed_values = ["DEFAULT"] + if not value_allowed_none_or_none_sentinel(type, allowed_values): + raise ValueError( + f"Invalid value for `type`, must be None or one of {allowed_values}" + ) + self._type = type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/disaster_recovery/models/verify_dr_plan_default_details.py b/src/oci/disaster_recovery/models/verify_dr_plan_default_details.py new file mode 100644 index 0000000000..83631ad587 --- /dev/null +++ b/src/oci/disaster_recovery/models/verify_dr_plan_default_details.py @@ -0,0 +1,51 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220125 + +from .verify_dr_plan_details import VerifyDrPlanDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class VerifyDrPlanDefaultDetails(VerifyDrPlanDetails): + """ + The default type. + """ + + def __init__(self, **kwargs): + """ + Initializes a new VerifyDrPlanDefaultDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.disaster_recovery.models.VerifyDrPlanDefaultDetails.type` attribute + of this class is ``DEFAULT`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this VerifyDrPlanDefaultDetails. + Allowed values for this property are: "DEFAULT" + :type type: str + + """ + self.swagger_types = { + 'type': 'str' + } + + self.attribute_map = { + 'type': 'type' + } + + self._type = None + self._type = 'DEFAULT' + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/disaster_recovery/models/verify_dr_plan_details.py b/src/oci/disaster_recovery/models/verify_dr_plan_details.py new file mode 100644 index 0000000000..497a5922d4 --- /dev/null +++ b/src/oci/disaster_recovery/models/verify_dr_plan_details.py @@ -0,0 +1,101 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220125 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class VerifyDrPlanDetails(object): + """ + The details for verifying a DR plan. + """ + + #: A constant which can be used with the type property of a VerifyDrPlanDetails. + #: This constant has a value of "DEFAULT" + TYPE_DEFAULT = "DEFAULT" + + def __init__(self, **kwargs): + """ + Initializes a new VerifyDrPlanDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.disaster_recovery.models.VerifyDrPlanDefaultDetails` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this VerifyDrPlanDetails. + Allowed values for this property are: "DEFAULT" + :type type: str + + """ + self.swagger_types = { + 'type': 'str' + } + + self.attribute_map = { + 'type': 'type' + } + + self._type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['type'] + + if type == 'DEFAULT': + return 'VerifyDrPlanDefaultDetails' + else: + return 'VerifyDrPlanDetails' + + @property + def type(self): + """ + **[Required]** Gets the type of this VerifyDrPlanDetails. + The default type. + + Allowed values for this property are: "DEFAULT" + + + :return: The type of this VerifyDrPlanDetails. + :rtype: str + """ + return self._type + + @type.setter + def type(self, type): + """ + Sets the type of this VerifyDrPlanDetails. + The default type. + + + :param type: The type of this VerifyDrPlanDetails. + :type: str + """ + allowed_values = ["DEFAULT"] + if not value_allowed_none_or_none_sentinel(type, allowed_values): + raise ValueError( + f"Invalid value for `type`, must be None or one of {allowed_values}" + ) + self._type = type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/disaster_recovery/models/work_request.py b/src/oci/disaster_recovery/models/work_request.py index f09630f789..0a7afc552c 100644 --- a/src/oci/disaster_recovery/models/work_request.py +++ b/src/oci/disaster_recovery/models/work_request.py @@ -55,6 +55,14 @@ class WorkRequest(object): #: This constant has a value of "DELETE_DR_PLAN" OPERATION_TYPE_DELETE_DR_PLAN = "DELETE_DR_PLAN" + #: A constant which can be used with the operation_type property of a WorkRequest. + #: This constant has a value of "REFRESH_DR_PLAN" + OPERATION_TYPE_REFRESH_DR_PLAN = "REFRESH_DR_PLAN" + + #: A constant which can be used with the operation_type property of a WorkRequest. + #: This constant has a value of "VERIFY_DR_PLAN" + OPERATION_TYPE_VERIFY_DR_PLAN = "VERIFY_DR_PLAN" + #: A constant which can be used with the operation_type property of a WorkRequest. #: This constant has a value of "CREATE_DR_PLAN_EXECUTION" OPERATION_TYPE_CREATE_DR_PLAN_EXECUTION = "CREATE_DR_PLAN_EXECUTION" @@ -126,7 +134,7 @@ def __init__(self, **kwargs): :param operation_type: The value to assign to the operation_type property of this WorkRequest. - Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type operation_type: str @@ -205,7 +213,7 @@ def operation_type(self): **[Required]** Gets the operation_type of this WorkRequest. The type of the work request. - Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -224,7 +232,7 @@ def operation_type(self, operation_type): :param operation_type: The operation_type of this WorkRequest. :type: str """ - allowed_values = ["CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION"] + allowed_values = ["CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION"] if not value_allowed_none_or_none_sentinel(operation_type, allowed_values): operation_type = 'UNKNOWN_ENUM_VALUE' self._operation_type = operation_type diff --git a/src/oci/disaster_recovery/models/work_request_summary.py b/src/oci/disaster_recovery/models/work_request_summary.py index a6247d1c49..6177f78b6e 100644 --- a/src/oci/disaster_recovery/models/work_request_summary.py +++ b/src/oci/disaster_recovery/models/work_request_summary.py @@ -55,6 +55,14 @@ class WorkRequestSummary(object): #: This constant has a value of "DELETE_DR_PLAN" OPERATION_TYPE_DELETE_DR_PLAN = "DELETE_DR_PLAN" + #: A constant which can be used with the operation_type property of a WorkRequestSummary. + #: This constant has a value of "REFRESH_DR_PLAN" + OPERATION_TYPE_REFRESH_DR_PLAN = "REFRESH_DR_PLAN" + + #: A constant which can be used with the operation_type property of a WorkRequestSummary. + #: This constant has a value of "VERIFY_DR_PLAN" + OPERATION_TYPE_VERIFY_DR_PLAN = "VERIFY_DR_PLAN" + #: A constant which can be used with the operation_type property of a WorkRequestSummary. #: This constant has a value of "CREATE_DR_PLAN_EXECUTION" OPERATION_TYPE_CREATE_DR_PLAN_EXECUTION = "CREATE_DR_PLAN_EXECUTION" @@ -126,7 +134,7 @@ def __init__(self, **kwargs): :param operation_type: The value to assign to the operation_type property of this WorkRequestSummary. - Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type operation_type: str @@ -205,7 +213,7 @@ def operation_type(self): **[Required]** Gets the operation_type of this WorkRequestSummary. The type of the work request. - Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -224,7 +232,7 @@ def operation_type(self, operation_type): :param operation_type: The operation_type of this WorkRequestSummary. :type: str """ - allowed_values = ["CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION"] + allowed_values = ["CREATE_DR_PROTECTION_GROUP", "UPDATE_DR_PROTECTION_GROUP", "DELETE_DR_PROTECTION_GROUP", "MOVE_DR_PROTECTION_GROUP", "ASSOCIATE_DR_PROTECTION_GROUP", "DISASSOCIATE_DR_PROTECTION_GROUP", "UPDATE_ROLE_DR_PROTECTION_GROUP", "CREATE_DR_PLAN", "UPDATE_DR_PLAN", "DELETE_DR_PLAN", "REFRESH_DR_PLAN", "VERIFY_DR_PLAN", "CREATE_DR_PLAN_EXECUTION", "UPDATE_DR_PLAN_EXECUTION", "DELETE_DR_PLAN_EXECUTION", "RETRY_DR_PLAN_EXECUTION", "IGNORE_DR_PLAN_EXECUTION", "CANCEL_DR_PLAN_EXECUTION", "PAUSE_DR_PLAN_EXECUTION", "RESUME_DR_PLAN_EXECUTION"] if not value_allowed_none_or_none_sentinel(operation_type, allowed_values): operation_type = 'UNKNOWN_ENUM_VALUE' self._operation_type = operation_type diff --git a/src/oci/fleet_software_update/fleet_software_update_client.py b/src/oci/fleet_software_update/fleet_software_update_client.py index 620fdb9b42..684bc8b714 100644 --- a/src/oci/fleet_software_update/fleet_software_update_client.py +++ b/src/oci/fleet_software_update/fleet_software_update_client.py @@ -3005,7 +3005,7 @@ def list_fsu_actions(self, compartment_id, **kwargs): :param str type: (optional) A filter to return only resources whose type matches the given type. - Allowed values are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :param int limit: (optional) The maximum number of items to return. @@ -3079,7 +3079,7 @@ def list_fsu_actions(self, compartment_id, **kwargs): ) if 'type' in kwargs: - type_allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + type_allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if kwargs['type'] not in type_allowed_values: raise ValueError( f"Invalid value for `type`, must be one of { type_allowed_values }" diff --git a/src/oci/fleet_software_update/models/__init__.py b/src/oci/fleet_software_update/models/__init__.py index 598999d09c..eda78e6ebb 100644 --- a/src/oci/fleet_software_update/models/__init__.py +++ b/src/oci/fleet_software_update/models/__init__.py @@ -37,6 +37,7 @@ from .create_patch_fsu_cycle import CreatePatchFsuCycle from .create_precheck_action_details import CreatePrecheckActionDetails from .create_rollback_action_details import CreateRollbackActionDetails +from .create_rollback_cycle_apply_action_details import CreateRollbackCycleApplyActionDetails from .create_schedule_details import CreateScheduleDetails from .create_sequential_batching_strategy_details import CreateSequentialBatchingStrategyDetails from .create_service_availability_factor_batching_strategy_details import CreateServiceAvailabilityFactorBatchingStrategyDetails @@ -117,6 +118,10 @@ from .remove_fsu_collection_targets_details import RemoveFsuCollectionTargetsDetails from .rollback_action import RollbackAction from .rollback_action_summary import RollbackActionSummary +from .rollback_cycle_action import RollbackCycleAction +from .rollback_cycle_action_summary import RollbackCycleActionSummary +from .rollback_cycle_fsu_job import RollbackCycleFsuJob +from .rollback_cycle_fsu_job_summary import RollbackCycleFsuJobSummary from .rollback_details import RollbackDetails from .rollback_fsu_job import RollbackFsuJob from .rollback_fsu_job_summary import RollbackFsuJobSummary @@ -147,6 +152,7 @@ from .update_patch_fsu_cycle import UpdatePatchFsuCycle from .update_precheck_action_details import UpdatePrecheckActionDetails from .update_rollback_action_details import UpdateRollbackActionDetails +from .update_rollback_cycle_action_details import UpdateRollbackCycleActionDetails from .update_schedule_details import UpdateScheduleDetails from .update_sequential_batching_strategy_details import UpdateSequentialBatchingStrategyDetails from .update_service_availability_factor_batching_strategy_details import UpdateServiceAvailabilityFactorBatchingStrategyDetails @@ -196,6 +202,7 @@ "CreatePatchFsuCycle": CreatePatchFsuCycle, "CreatePrecheckActionDetails": CreatePrecheckActionDetails, "CreateRollbackActionDetails": CreateRollbackActionDetails, + "CreateRollbackCycleApplyActionDetails": CreateRollbackCycleApplyActionDetails, "CreateScheduleDetails": CreateScheduleDetails, "CreateSequentialBatchingStrategyDetails": CreateSequentialBatchingStrategyDetails, "CreateServiceAvailabilityFactorBatchingStrategyDetails": CreateServiceAvailabilityFactorBatchingStrategyDetails, @@ -276,6 +283,10 @@ "RemoveFsuCollectionTargetsDetails": RemoveFsuCollectionTargetsDetails, "RollbackAction": RollbackAction, "RollbackActionSummary": RollbackActionSummary, + "RollbackCycleAction": RollbackCycleAction, + "RollbackCycleActionSummary": RollbackCycleActionSummary, + "RollbackCycleFsuJob": RollbackCycleFsuJob, + "RollbackCycleFsuJobSummary": RollbackCycleFsuJobSummary, "RollbackDetails": RollbackDetails, "RollbackFsuJob": RollbackFsuJob, "RollbackFsuJobSummary": RollbackFsuJobSummary, @@ -306,6 +317,7 @@ "UpdatePatchFsuCycle": UpdatePatchFsuCycle, "UpdatePrecheckActionDetails": UpdatePrecheckActionDetails, "UpdateRollbackActionDetails": UpdateRollbackActionDetails, + "UpdateRollbackCycleActionDetails": UpdateRollbackCycleActionDetails, "UpdateScheduleDetails": UpdateScheduleDetails, "UpdateSequentialBatchingStrategyDetails": UpdateSequentialBatchingStrategyDetails, "UpdateServiceAvailabilityFactorBatchingStrategyDetails": UpdateServiceAvailabilityFactorBatchingStrategyDetails, diff --git a/src/oci/fleet_software_update/models/apply_action.py b/src/oci/fleet_software_update/models/apply_action.py index 70a4456270..36ab76e2b4 100644 --- a/src/oci/fleet_software_update/models/apply_action.py +++ b/src/oci/fleet_software_update/models/apply_action.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this ApplyAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/apply_action_summary.py b/src/oci/fleet_software_update/models/apply_action_summary.py index 72be55964c..a68bfc2229 100644 --- a/src/oci/fleet_software_update/models/apply_action_summary.py +++ b/src/oci/fleet_software_update/models/apply_action_summary.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this ApplyActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/apply_fsu_job.py b/src/oci/fleet_software_update/models/apply_fsu_job.py index e43927aa42..67503ab89c 100644 --- a/src/oci/fleet_software_update/models/apply_fsu_job.py +++ b/src/oci/fleet_software_update/models/apply_fsu_job.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this ApplyFsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/apply_fsu_job_summary.py b/src/oci/fleet_software_update/models/apply_fsu_job_summary.py index fe1e0c4b47..f488e68f60 100644 --- a/src/oci/fleet_software_update/models/apply_fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/apply_fsu_job_summary.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this ApplyFsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/cleanup_action.py b/src/oci/fleet_software_update/models/cleanup_action.py index 6cb74d4560..2aced88c65 100644 --- a/src/oci/fleet_software_update/models/cleanup_action.py +++ b/src/oci/fleet_software_update/models/cleanup_action.py @@ -36,7 +36,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CleanupAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/cleanup_action_summary.py b/src/oci/fleet_software_update/models/cleanup_action_summary.py index 50b5a11ea4..404089aed4 100644 --- a/src/oci/fleet_software_update/models/cleanup_action_summary.py +++ b/src/oci/fleet_software_update/models/cleanup_action_summary.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CleanupActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/cleanup_fsu_job.py b/src/oci/fleet_software_update/models/cleanup_fsu_job.py index bfa6f58832..1e1588f09d 100644 --- a/src/oci/fleet_software_update/models/cleanup_fsu_job.py +++ b/src/oci/fleet_software_update/models/cleanup_fsu_job.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CleanupFsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/cleanup_fsu_job_summary.py b/src/oci/fleet_software_update/models/cleanup_fsu_job_summary.py index 1177de838e..062f89911c 100644 --- a/src/oci/fleet_software_update/models/cleanup_fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/cleanup_fsu_job_summary.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CleanupFsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/create_apply_action_details.py b/src/oci/fleet_software_update/models/create_apply_action_details.py index 261289ecba..a07541f088 100644 --- a/src/oci/fleet_software_update/models/create_apply_action_details.py +++ b/src/oci/fleet_software_update/models/create_apply_action_details.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreateApplyActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: diff --git a/src/oci/fleet_software_update/models/create_cleanup_action_details.py b/src/oci/fleet_software_update/models/create_cleanup_action_details.py index 0aa068932c..1b1d49050b 100644 --- a/src/oci/fleet_software_update/models/create_cleanup_action_details.py +++ b/src/oci/fleet_software_update/models/create_cleanup_action_details.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreateCleanupActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: diff --git a/src/oci/fleet_software_update/models/create_fsu_action_details.py b/src/oci/fleet_software_update/models/create_fsu_action_details.py index 49aae348d5..4088f231d9 100644 --- a/src/oci/fleet_software_update/models/create_fsu_action_details.py +++ b/src/oci/fleet_software_update/models/create_fsu_action_details.py @@ -35,11 +35,16 @@ class CreateFsuActionDetails(object): #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" + #: A constant which can be used with the type property of a CreateFsuActionDetails. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + def __init__(self, **kwargs): """ Initializes a new CreateFsuActionDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input to a service operations then you should favor using a subclass over the base class: + * :class:`~oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails` * :class:`~oci.fleet_software_update.models.CreateApplyActionDetails` * :class:`~oci.fleet_software_update.models.CreateStageActionDetails` * :class:`~oci.fleet_software_update.models.CreateRollbackActionDetails` @@ -58,7 +63,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreateFsuActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: @@ -100,6 +105,9 @@ def get_subtype(object_dictionary): """ type = object_dictionary['type'] + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'CreateRollbackCycleApplyActionDetails' + if type == 'APPLY': return 'CreateApplyActionDetails' @@ -171,7 +179,7 @@ def type(self): **[Required]** Gets the type of this CreateFsuActionDetails. Type of Exadata Fleet Update Action. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :return: The type of this CreateFsuActionDetails. @@ -189,7 +197,7 @@ def type(self, type): :param type: The type of this CreateFsuActionDetails. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(type, allowed_values): raise ValueError( f"Invalid value for `type`, must be None or one of {allowed_values}" diff --git a/src/oci/fleet_software_update/models/create_precheck_action_details.py b/src/oci/fleet_software_update/models/create_precheck_action_details.py index 70528f9fcd..e33123b8e1 100644 --- a/src/oci/fleet_software_update/models/create_precheck_action_details.py +++ b/src/oci/fleet_software_update/models/create_precheck_action_details.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreatePrecheckActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: diff --git a/src/oci/fleet_software_update/models/create_rollback_action_details.py b/src/oci/fleet_software_update/models/create_rollback_action_details.py index 91e38a0202..1599dee542 100644 --- a/src/oci/fleet_software_update/models/create_rollback_action_details.py +++ b/src/oci/fleet_software_update/models/create_rollback_action_details.py @@ -33,7 +33,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreateRollbackActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: diff --git a/src/oci/fleet_software_update/models/create_rollback_cycle_apply_action_details.py b/src/oci/fleet_software_update/models/create_rollback_cycle_apply_action_details.py new file mode 100644 index 0000000000..28b32e9a08 --- /dev/null +++ b/src/oci/fleet_software_update/models/create_rollback_cycle_apply_action_details.py @@ -0,0 +1,111 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .create_fsu_action_details import CreateFsuActionDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class CreateRollbackCycleApplyActionDetails(CreateFsuActionDetails): + """ + Exadata Fleet Update Rollback Action creation details. This action will rollback + the maintenance cycle to the source home after a successful apply FSUAction. + """ + + def __init__(self, **kwargs): + """ + Initializes a new CreateRollbackCycleApplyActionDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.CreateRollbackCycleApplyActionDetails.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param display_name: + The value to assign to the display_name property of this CreateRollbackCycleApplyActionDetails. + :type display_name: str + + :param compartment_id: + The value to assign to the compartment_id property of this CreateRollbackCycleApplyActionDetails. + :type compartment_id: str + + :param type: + The value to assign to the type property of this CreateRollbackCycleApplyActionDetails. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" + :type type: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this CreateRollbackCycleApplyActionDetails. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this CreateRollbackCycleApplyActionDetails. + :type defined_tags: dict(str, dict(str, object)) + + :param fsu_cycle_id: + The value to assign to the fsu_cycle_id property of this CreateRollbackCycleApplyActionDetails. + :type fsu_cycle_id: str + + """ + self.swagger_types = { + 'display_name': 'str', + 'compartment_id': 'str', + 'type': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))', + 'fsu_cycle_id': 'str' + } + + self.attribute_map = { + 'display_name': 'displayName', + 'compartment_id': 'compartmentId', + 'type': 'type', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags', + 'fsu_cycle_id': 'fsuCycleId' + } + + self._display_name = None + self._compartment_id = None + self._type = None + self._freeform_tags = None + self._defined_tags = None + self._fsu_cycle_id = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + @property + def fsu_cycle_id(self): + """ + **[Required]** Gets the fsu_cycle_id of this CreateRollbackCycleApplyActionDetails. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :return: The fsu_cycle_id of this CreateRollbackCycleApplyActionDetails. + :rtype: str + """ + return self._fsu_cycle_id + + @fsu_cycle_id.setter + def fsu_cycle_id(self, fsu_cycle_id): + """ + Sets the fsu_cycle_id of this CreateRollbackCycleApplyActionDetails. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :param fsu_cycle_id: The fsu_cycle_id of this CreateRollbackCycleApplyActionDetails. + :type: str + """ + self._fsu_cycle_id = fsu_cycle_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/create_stage_action_details.py b/src/oci/fleet_software_update/models/create_stage_action_details.py index 7ce15aad51..04712db1f8 100644 --- a/src/oci/fleet_software_update/models/create_stage_action_details.py +++ b/src/oci/fleet_software_update/models/create_stage_action_details.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this CreateStageActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param freeform_tags: diff --git a/src/oci/fleet_software_update/models/db_collection.py b/src/oci/fleet_software_update/models/db_collection.py index b8e07d4bd9..082de250a7 100644 --- a/src/oci/fleet_software_update/models/db_collection.py +++ b/src/oci/fleet_software_update/models/db_collection.py @@ -95,6 +95,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this DbCollection. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this DbCollection. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this DbCollection. :type freeform_tags: dict(str, str) @@ -130,6 +134,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))', @@ -149,6 +154,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags', @@ -167,6 +173,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None diff --git a/src/oci/fleet_software_update/models/db_fsu_collection_summary.py b/src/oci/fleet_software_update/models/db_fsu_collection_summary.py index 25a9458016..707ad4107c 100644 --- a/src/oci/fleet_software_update/models/db_fsu_collection_summary.py +++ b/src/oci/fleet_software_update/models/db_fsu_collection_summary.py @@ -95,6 +95,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this DbFsuCollectionSummary. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this DbFsuCollectionSummary. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this DbFsuCollectionSummary. :type freeform_tags: dict(str, str) @@ -126,6 +130,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))', @@ -144,6 +149,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags', @@ -161,6 +167,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None diff --git a/src/oci/fleet_software_update/models/fsu_action.py b/src/oci/fleet_software_update/models/fsu_action.py index 462e6dcf47..65c4680b5d 100644 --- a/src/oci/fleet_software_update/models/fsu_action.py +++ b/src/oci/fleet_software_update/models/fsu_action.py @@ -35,6 +35,10 @@ class FsuAction(object): #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" + #: A constant which can be used with the type property of a FsuAction. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the lifecycle_state property of a FsuAction. #: This constant has a value of "ACCEPTED" LIFECYCLE_STATE_ACCEPTED = "ACCEPTED" @@ -90,6 +94,7 @@ def __init__(self, **kwargs): * :class:`~oci.fleet_software_update.models.CleanupAction` * :class:`~oci.fleet_software_update.models.PrecheckAction` + * :class:`~oci.fleet_software_update.models.RollbackCycleAction` * :class:`~oci.fleet_software_update.models.StageAction` * :class:`~oci.fleet_software_update.models.ApplyAction` * :class:`~oci.fleet_software_update.models.RollbackAction` @@ -110,7 +115,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this FsuAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str @@ -213,6 +218,9 @@ def get_subtype(object_dictionary): if type == 'PRECHECK': return 'PrecheckAction' + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'RollbackCycleAction' + if type == 'STAGE': return 'StageAction' @@ -302,7 +310,7 @@ def type(self): **[Required]** Gets the type of this FsuAction. Type of Exadata Fleet Update Action. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -321,7 +329,7 @@ def type(self, type): :param type: The type of this FsuAction. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(type, allowed_values): type = 'UNKNOWN_ENUM_VALUE' self._type = type diff --git a/src/oci/fleet_software_update/models/fsu_action_summary.py b/src/oci/fleet_software_update/models/fsu_action_summary.py index d71dc42877..a8d2343d97 100644 --- a/src/oci/fleet_software_update/models/fsu_action_summary.py +++ b/src/oci/fleet_software_update/models/fsu_action_summary.py @@ -35,6 +35,10 @@ class FsuActionSummary(object): #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" + #: A constant which can be used with the type property of a FsuActionSummary. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the lifecycle_state property of a FsuActionSummary. #: This constant has a value of "ACCEPTED" LIFECYCLE_STATE_ACCEPTED = "ACCEPTED" @@ -88,6 +92,7 @@ def __init__(self, **kwargs): Initializes a new FsuActionSummary object with values from keyword arguments. This class has the following subclasses and if you are using this class as input to a service operations then you should favor using a subclass over the base class: + * :class:`~oci.fleet_software_update.models.RollbackCycleActionSummary` * :class:`~oci.fleet_software_update.models.StageActionSummary` * :class:`~oci.fleet_software_update.models.ApplyActionSummary` * :class:`~oci.fleet_software_update.models.CleanupActionSummary` @@ -110,7 +115,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this FsuActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str @@ -207,6 +212,9 @@ def get_subtype(object_dictionary): """ type = object_dictionary['type'] + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'RollbackCycleActionSummary' + if type == 'STAGE': return 'StageActionSummary' @@ -302,7 +310,7 @@ def type(self): **[Required]** Gets the type of this FsuActionSummary. Type of Exadata Fleet Update Action. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -321,7 +329,7 @@ def type(self, type): :param type: The type of this FsuActionSummary. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(type, allowed_values): type = 'UNKNOWN_ENUM_VALUE' self._type = type diff --git a/src/oci/fleet_software_update/models/fsu_collection.py b/src/oci/fleet_software_update/models/fsu_collection.py index dcb91aca00..f250e43ade 100644 --- a/src/oci/fleet_software_update/models/fsu_collection.py +++ b/src/oci/fleet_software_update/models/fsu_collection.py @@ -119,6 +119,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this FsuCollection. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this FsuCollection. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this FsuCollection. :type freeform_tags: dict(str, str) @@ -144,6 +148,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))' @@ -161,6 +166,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags' @@ -177,6 +183,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None @@ -477,6 +484,34 @@ def lifecycle_details(self, lifecycle_details): """ self._lifecycle_details = lifecycle_details + @property + def last_completed_fsu_cycle_id(self): + """ + Gets the last_completed_fsu_cycle_id of this FsuCollection. + The `OCID`__ of last completed FSU Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The last_completed_fsu_cycle_id of this FsuCollection. + :rtype: str + """ + return self._last_completed_fsu_cycle_id + + @last_completed_fsu_cycle_id.setter + def last_completed_fsu_cycle_id(self, last_completed_fsu_cycle_id): + """ + Sets the last_completed_fsu_cycle_id of this FsuCollection. + The `OCID`__ of last completed FSU Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param last_completed_fsu_cycle_id: The last_completed_fsu_cycle_id of this FsuCollection. + :type: str + """ + self._last_completed_fsu_cycle_id = last_completed_fsu_cycle_id + @property def freeform_tags(self): """ diff --git a/src/oci/fleet_software_update/models/fsu_collection_summary.py b/src/oci/fleet_software_update/models/fsu_collection_summary.py index 7fbbba41db..427c581a12 100644 --- a/src/oci/fleet_software_update/models/fsu_collection_summary.py +++ b/src/oci/fleet_software_update/models/fsu_collection_summary.py @@ -119,6 +119,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this FsuCollectionSummary. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this FsuCollectionSummary. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this FsuCollectionSummary. :type freeform_tags: dict(str, str) @@ -144,6 +148,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))' @@ -161,6 +166,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags' @@ -177,6 +183,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None @@ -477,6 +484,34 @@ def lifecycle_details(self, lifecycle_details): """ self._lifecycle_details = lifecycle_details + @property + def last_completed_fsu_cycle_id(self): + """ + Gets the last_completed_fsu_cycle_id of this FsuCollectionSummary. + The `OCID`__ of last completed FSU Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The last_completed_fsu_cycle_id of this FsuCollectionSummary. + :rtype: str + """ + return self._last_completed_fsu_cycle_id + + @last_completed_fsu_cycle_id.setter + def last_completed_fsu_cycle_id(self, last_completed_fsu_cycle_id): + """ + Sets the last_completed_fsu_cycle_id of this FsuCollectionSummary. + The `OCID`__ of last completed FSU Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param last_completed_fsu_cycle_id: The last_completed_fsu_cycle_id of this FsuCollectionSummary. + :type: str + """ + self._last_completed_fsu_cycle_id = last_completed_fsu_cycle_id + @property def freeform_tags(self): """ diff --git a/src/oci/fleet_software_update/models/fsu_cycle.py b/src/oci/fleet_software_update/models/fsu_cycle.py index 69f056e184..c282e778a4 100644 --- a/src/oci/fleet_software_update/models/fsu_cycle.py +++ b/src/oci/fleet_software_update/models/fsu_cycle.py @@ -27,6 +27,26 @@ class FsuCycle(object): #: This constant has a value of "GI" COLLECTION_TYPE_GI = "GI" + #: A constant which can be used with the rollback_cycle_state property of a FsuCycle. + #: This constant has a value of "ABLE_TO_EXECUTE" + ROLLBACK_CYCLE_STATE_ABLE_TO_EXECUTE = "ABLE_TO_EXECUTE" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycle. + #: This constant has a value of "IN_PROGRESS" + ROLLBACK_CYCLE_STATE_IN_PROGRESS = "IN_PROGRESS" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycle. + #: This constant has a value of "FAILED" + ROLLBACK_CYCLE_STATE_FAILED = "FAILED" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycle. + #: This constant has a value of "NEEDS_ATTENTION" + ROLLBACK_CYCLE_STATE_NEEDS_ATTENTION = "NEEDS_ATTENTION" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycle. + #: This constant has a value of "SUCCEEDED" + ROLLBACK_CYCLE_STATE_SUCCEEDED = "SUCCEEDED" + #: A constant which can be used with the last_completed_action property of a FsuCycle. #: This constant has a value of "STAGE" LAST_COMPLETED_ACTION_STAGE = "STAGE" @@ -51,6 +71,10 @@ class FsuCycle(object): #: This constant has a value of "CLEANUP" LAST_COMPLETED_ACTION_CLEANUP = "CLEANUP" + #: A constant which can be used with the last_completed_action property of a FsuCycle. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + LAST_COMPLETED_ACTION_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the lifecycle_state property of a FsuCycle. #: This constant has a value of "CREATING" LIFECYCLE_STATE_CREATING = "CREATING" @@ -132,9 +156,19 @@ def __init__(self, **kwargs): The value to assign to the next_action_to_execute property of this FsuCycle. :type next_action_to_execute: list[oci.fleet_software_update.models.NextActionToExecuteDetails] + :param last_completed_action_id: + The value to assign to the last_completed_action_id property of this FsuCycle. + :type last_completed_action_id: str + + :param rollback_cycle_state: + The value to assign to the rollback_cycle_state property of this FsuCycle. + Allowed values for this property are: "ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type rollback_cycle_state: str + :param last_completed_action: The value to assign to the last_completed_action property of this FsuCycle. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type last_completed_action: str @@ -202,6 +236,8 @@ def __init__(self, **kwargs): 'collection_type': 'str', 'executing_fsu_action_id': 'str', 'next_action_to_execute': 'list[NextActionToExecuteDetails]', + 'last_completed_action_id': 'str', + 'rollback_cycle_state': 'str', 'last_completed_action': 'str', 'goal_version_details': 'FsuGoalVersionDetails', 'batching_strategy': 'BatchingStrategyDetails', @@ -227,6 +263,8 @@ def __init__(self, **kwargs): 'collection_type': 'collectionType', 'executing_fsu_action_id': 'executingFsuActionId', 'next_action_to_execute': 'nextActionToExecute', + 'last_completed_action_id': 'lastCompletedActionId', + 'rollback_cycle_state': 'rollbackCycleState', 'last_completed_action': 'lastCompletedAction', 'goal_version_details': 'goalVersionDetails', 'batching_strategy': 'batchingStrategy', @@ -251,6 +289,8 @@ def __init__(self, **kwargs): self._collection_type = None self._executing_fsu_action_id = None self._next_action_to_execute = None + self._last_completed_action_id = None + self._rollback_cycle_state = None self._last_completed_action = None self._goal_version_details = None self._batching_strategy = None @@ -483,6 +523,68 @@ def next_action_to_execute(self, next_action_to_execute): """ self._next_action_to_execute = next_action_to_execute + @property + def last_completed_action_id(self): + """ + Gets the last_completed_action_id of this FsuCycle. + The `OCID`__ of the latest Action + in the Exadata Fleet Update Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The last_completed_action_id of this FsuCycle. + :rtype: str + """ + return self._last_completed_action_id + + @last_completed_action_id.setter + def last_completed_action_id(self, last_completed_action_id): + """ + Sets the last_completed_action_id of this FsuCycle. + The `OCID`__ of the latest Action + in the Exadata Fleet Update Cycle. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param last_completed_action_id: The last_completed_action_id of this FsuCycle. + :type: str + """ + self._last_completed_action_id = last_completed_action_id + + @property + def rollback_cycle_state(self): + """ + Gets the rollback_cycle_state of this FsuCycle. + Current rollback cycle state if rollback maintenance cycle action has been attempted. + No value would indicate that the Cycle has not run a rollback maintenance cycle action before. + + Allowed values for this property are: "ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The rollback_cycle_state of this FsuCycle. + :rtype: str + """ + return self._rollback_cycle_state + + @rollback_cycle_state.setter + def rollback_cycle_state(self, rollback_cycle_state): + """ + Sets the rollback_cycle_state of this FsuCycle. + Current rollback cycle state if rollback maintenance cycle action has been attempted. + No value would indicate that the Cycle has not run a rollback maintenance cycle action before. + + + :param rollback_cycle_state: The rollback_cycle_state of this FsuCycle. + :type: str + """ + allowed_values = ["ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED"] + if not value_allowed_none_or_none_sentinel(rollback_cycle_state, allowed_values): + rollback_cycle_state = 'UNKNOWN_ENUM_VALUE' + self._rollback_cycle_state = rollback_cycle_state + @property def last_completed_action(self): """ @@ -490,7 +592,7 @@ def last_completed_action(self): The latest Action type that was completed in the Exadata Fleet Update Cycle. No value would indicate that the Cycle has not completed any Action yet. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -510,7 +612,7 @@ def last_completed_action(self, last_completed_action): :param last_completed_action: The last_completed_action of this FsuCycle. :type: str """ - allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(last_completed_action, allowed_values): last_completed_action = 'UNKNOWN_ENUM_VALUE' self._last_completed_action = last_completed_action diff --git a/src/oci/fleet_software_update/models/fsu_cycle_summary.py b/src/oci/fleet_software_update/models/fsu_cycle_summary.py index 8ee135efd3..b5fad6e274 100644 --- a/src/oci/fleet_software_update/models/fsu_cycle_summary.py +++ b/src/oci/fleet_software_update/models/fsu_cycle_summary.py @@ -27,6 +27,26 @@ class FsuCycleSummary(object): #: This constant has a value of "GI" COLLECTION_TYPE_GI = "GI" + #: A constant which can be used with the rollback_cycle_state property of a FsuCycleSummary. + #: This constant has a value of "ABLE_TO_EXECUTE" + ROLLBACK_CYCLE_STATE_ABLE_TO_EXECUTE = "ABLE_TO_EXECUTE" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycleSummary. + #: This constant has a value of "IN_PROGRESS" + ROLLBACK_CYCLE_STATE_IN_PROGRESS = "IN_PROGRESS" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycleSummary. + #: This constant has a value of "FAILED" + ROLLBACK_CYCLE_STATE_FAILED = "FAILED" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycleSummary. + #: This constant has a value of "NEEDS_ATTENTION" + ROLLBACK_CYCLE_STATE_NEEDS_ATTENTION = "NEEDS_ATTENTION" + + #: A constant which can be used with the rollback_cycle_state property of a FsuCycleSummary. + #: This constant has a value of "SUCCEEDED" + ROLLBACK_CYCLE_STATE_SUCCEEDED = "SUCCEEDED" + #: A constant which can be used with the last_completed_action property of a FsuCycleSummary. #: This constant has a value of "STAGE" LAST_COMPLETED_ACTION_STAGE = "STAGE" @@ -51,6 +71,10 @@ class FsuCycleSummary(object): #: This constant has a value of "CLEANUP" LAST_COMPLETED_ACTION_CLEANUP = "CLEANUP" + #: A constant which can be used with the last_completed_action property of a FsuCycleSummary. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + LAST_COMPLETED_ACTION_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the lifecycle_state property of a FsuCycleSummary. #: This constant has a value of "CREATING" LIFECYCLE_STATE_CREATING = "CREATING" @@ -128,9 +152,19 @@ def __init__(self, **kwargs): The value to assign to the next_action_to_execute property of this FsuCycleSummary. :type next_action_to_execute: list[oci.fleet_software_update.models.NextActionToExecuteDetails] + :param last_completed_action_id: + The value to assign to the last_completed_action_id property of this FsuCycleSummary. + :type last_completed_action_id: str + + :param rollback_cycle_state: + The value to assign to the rollback_cycle_state property of this FsuCycleSummary. + Allowed values for this property are: "ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type rollback_cycle_state: str + :param last_completed_action: The value to assign to the last_completed_action property of this FsuCycleSummary. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type last_completed_action: str @@ -186,6 +220,8 @@ def __init__(self, **kwargs): 'collection_type': 'str', 'executing_fsu_action_id': 'str', 'next_action_to_execute': 'list[NextActionToExecuteDetails]', + 'last_completed_action_id': 'str', + 'rollback_cycle_state': 'str', 'last_completed_action': 'str', 'goal_version_details': 'FsuGoalVersionDetails', 'diagnostics_collection': 'DiagnosticsCollectionDetails', @@ -208,6 +244,8 @@ def __init__(self, **kwargs): 'collection_type': 'collectionType', 'executing_fsu_action_id': 'executingFsuActionId', 'next_action_to_execute': 'nextActionToExecute', + 'last_completed_action_id': 'lastCompletedActionId', + 'rollback_cycle_state': 'rollbackCycleState', 'last_completed_action': 'lastCompletedAction', 'goal_version_details': 'goalVersionDetails', 'diagnostics_collection': 'diagnosticsCollection', @@ -229,6 +267,8 @@ def __init__(self, **kwargs): self._collection_type = None self._executing_fsu_action_id = None self._next_action_to_execute = None + self._last_completed_action_id = None + self._rollback_cycle_state = None self._last_completed_action = None self._goal_version_details = None self._diagnostics_collection = None @@ -445,6 +485,64 @@ def next_action_to_execute(self, next_action_to_execute): """ self._next_action_to_execute = next_action_to_execute + @property + def last_completed_action_id(self): + """ + Gets the last_completed_action_id of this FsuCycleSummary. + OCID identifier for the latest Action the Exadata Fleet Update Cycle. + No value would indicate that the Cycle has not completed any Action yet. + + + :return: The last_completed_action_id of this FsuCycleSummary. + :rtype: str + """ + return self._last_completed_action_id + + @last_completed_action_id.setter + def last_completed_action_id(self, last_completed_action_id): + """ + Sets the last_completed_action_id of this FsuCycleSummary. + OCID identifier for the latest Action the Exadata Fleet Update Cycle. + No value would indicate that the Cycle has not completed any Action yet. + + + :param last_completed_action_id: The last_completed_action_id of this FsuCycleSummary. + :type: str + """ + self._last_completed_action_id = last_completed_action_id + + @property + def rollback_cycle_state(self): + """ + Gets the rollback_cycle_state of this FsuCycleSummary. + Current rollback cycle state if rollback maintenance cycle action has been attempted. + No value would indicate that the Cycle has not run a rollback maintenance cycle action before. + + Allowed values for this property are: "ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The rollback_cycle_state of this FsuCycleSummary. + :rtype: str + """ + return self._rollback_cycle_state + + @rollback_cycle_state.setter + def rollback_cycle_state(self, rollback_cycle_state): + """ + Sets the rollback_cycle_state of this FsuCycleSummary. + Current rollback cycle state if rollback maintenance cycle action has been attempted. + No value would indicate that the Cycle has not run a rollback maintenance cycle action before. + + + :param rollback_cycle_state: The rollback_cycle_state of this FsuCycleSummary. + :type: str + """ + allowed_values = ["ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED"] + if not value_allowed_none_or_none_sentinel(rollback_cycle_state, allowed_values): + rollback_cycle_state = 'UNKNOWN_ENUM_VALUE' + self._rollback_cycle_state = rollback_cycle_state + @property def last_completed_action(self): """ @@ -452,7 +550,7 @@ def last_completed_action(self): The latest Action type that was completed in the Exadata Fleet Update Cycle. No value would indicate that the Cycle has not completed any Action yet. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -472,7 +570,7 @@ def last_completed_action(self, last_completed_action): :param last_completed_action: The last_completed_action of this FsuCycleSummary. :type: str """ - allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(last_completed_action, allowed_values): last_completed_action = 'UNKNOWN_ENUM_VALUE' self._last_completed_action = last_completed_action diff --git a/src/oci/fleet_software_update/models/fsu_job.py b/src/oci/fleet_software_update/models/fsu_job.py index 48befe75fd..95c98dd479 100644 --- a/src/oci/fleet_software_update/models/fsu_job.py +++ b/src/oci/fleet_software_update/models/fsu_job.py @@ -31,6 +31,10 @@ class FsuJob(object): #: This constant has a value of "ROLLBACK_AND_REMOVE_TARGET" TYPE_ROLLBACK_AND_REMOVE_TARGET = "ROLLBACK_AND_REMOVE_TARGET" + #: A constant which can be used with the type property of a FsuJob. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the type property of a FsuJob. #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" @@ -81,6 +85,7 @@ def __init__(self, **kwargs): to a service operations then you should favor using a subclass over the base class: * :class:`~oci.fleet_software_update.models.ApplyFsuJob` + * :class:`~oci.fleet_software_update.models.RollbackCycleFsuJob` * :class:`~oci.fleet_software_update.models.StageFsuJob` * :class:`~oci.fleet_software_update.models.PrecheckFsuJob` * :class:`~oci.fleet_software_update.models.RollbackFsuJob` @@ -98,7 +103,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this FsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str @@ -216,6 +221,9 @@ def get_subtype(object_dictionary): if type == 'APPLY': return 'ApplyFsuJob' + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'RollbackCycleFsuJob' + if type == 'STAGE': return 'StageFsuJob' @@ -284,7 +292,7 @@ def type(self): **[Required]** Gets the type of this FsuJob. Exadata Fleet Update Job type. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -303,7 +311,7 @@ def type(self, type): :param type: The type of this FsuJob. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP"] if not value_allowed_none_or_none_sentinel(type, allowed_values): type = 'UNKNOWN_ENUM_VALUE' self._type = type diff --git a/src/oci/fleet_software_update/models/fsu_job_summary.py b/src/oci/fleet_software_update/models/fsu_job_summary.py index a4a00f5797..9af7543d93 100644 --- a/src/oci/fleet_software_update/models/fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/fsu_job_summary.py @@ -31,6 +31,10 @@ class FsuJobSummary(object): #: This constant has a value of "ROLLBACK_AND_REMOVE_TARGET" TYPE_ROLLBACK_AND_REMOVE_TARGET = "ROLLBACK_AND_REMOVE_TARGET" + #: A constant which can be used with the type property of a FsuJobSummary. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + #: A constant which can be used with the type property of a FsuJobSummary. #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" @@ -83,6 +87,7 @@ def __init__(self, **kwargs): * :class:`~oci.fleet_software_update.models.StageFsuJobSummary` * :class:`~oci.fleet_software_update.models.PrecheckFsuJobSummary` * :class:`~oci.fleet_software_update.models.ApplyFsuJobSummary` + * :class:`~oci.fleet_software_update.models.RollbackCycleFsuJobSummary` * :class:`~oci.fleet_software_update.models.CleanupFsuJobSummary` * :class:`~oci.fleet_software_update.models.RollbackFsuJobSummary` @@ -98,7 +103,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this FsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str @@ -222,6 +227,9 @@ def get_subtype(object_dictionary): if type == 'APPLY': return 'ApplyFsuJobSummary' + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'RollbackCycleFsuJobSummary' + if type == 'CLEANUP': return 'CleanupFsuJobSummary' @@ -284,7 +292,7 @@ def type(self): **[Required]** Gets the type of this FsuJobSummary. Exadata Fleet Update Job type. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -303,7 +311,7 @@ def type(self, type): :param type: The type of this FsuJobSummary. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP"] if not value_allowed_none_or_none_sentinel(type, allowed_values): type = 'UNKNOWN_ENUM_VALUE' self._type = type diff --git a/src/oci/fleet_software_update/models/gi_collection.py b/src/oci/fleet_software_update/models/gi_collection.py index f816cb9457..78faaf0bfd 100644 --- a/src/oci/fleet_software_update/models/gi_collection.py +++ b/src/oci/fleet_software_update/models/gi_collection.py @@ -83,6 +83,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this GiCollection. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this GiCollection. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this GiCollection. :type freeform_tags: dict(str, str) @@ -118,6 +122,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))', @@ -137,6 +142,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags', @@ -155,6 +161,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None diff --git a/src/oci/fleet_software_update/models/gi_fsu_collection_summary.py b/src/oci/fleet_software_update/models/gi_fsu_collection_summary.py index 1a30dfdb65..eb5ec85599 100644 --- a/src/oci/fleet_software_update/models/gi_fsu_collection_summary.py +++ b/src/oci/fleet_software_update/models/gi_fsu_collection_summary.py @@ -83,6 +83,10 @@ def __init__(self, **kwargs): The value to assign to the lifecycle_details property of this GiFsuCollectionSummary. :type lifecycle_details: str + :param last_completed_fsu_cycle_id: + The value to assign to the last_completed_fsu_cycle_id property of this GiFsuCollectionSummary. + :type last_completed_fsu_cycle_id: str + :param freeform_tags: The value to assign to the freeform_tags property of this GiFsuCollectionSummary. :type freeform_tags: dict(str, str) @@ -114,6 +118,7 @@ def __init__(self, **kwargs): 'time_updated': 'datetime', 'lifecycle_state': 'str', 'lifecycle_details': 'str', + 'last_completed_fsu_cycle_id': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', 'system_tags': 'dict(str, dict(str, object))', @@ -132,6 +137,7 @@ def __init__(self, **kwargs): 'time_updated': 'timeUpdated', 'lifecycle_state': 'lifecycleState', 'lifecycle_details': 'lifecycleDetails', + 'last_completed_fsu_cycle_id': 'lastCompletedFsuCycleId', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', 'system_tags': 'systemTags', @@ -149,6 +155,7 @@ def __init__(self, **kwargs): self._time_updated = None self._lifecycle_state = None self._lifecycle_details = None + self._last_completed_fsu_cycle_id = None self._freeform_tags = None self._defined_tags = None self._system_tags = None diff --git a/src/oci/fleet_software_update/models/next_action_to_execute_details.py b/src/oci/fleet_software_update/models/next_action_to_execute_details.py index 2b33fe3ecc..4e48d6a835 100644 --- a/src/oci/fleet_software_update/models/next_action_to_execute_details.py +++ b/src/oci/fleet_software_update/models/next_action_to_execute_details.py @@ -39,6 +39,10 @@ class NextActionToExecuteDetails(object): #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" + #: A constant which can be used with the type property of a NextActionToExecuteDetails. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + def __init__(self, **kwargs): """ Initializes a new NextActionToExecuteDetails object with values from keyword arguments. @@ -46,7 +50,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this NextActionToExecuteDetails. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type type: str @@ -74,7 +78,7 @@ def type(self): **[Required]** Gets the type of this NextActionToExecuteDetails. Type of Exadata Fleet Update Action - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -93,7 +97,7 @@ def type(self, type): :param type: The type of this NextActionToExecuteDetails. :type: str """ - allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(type, allowed_values): type = 'UNKNOWN_ENUM_VALUE' self._type = type diff --git a/src/oci/fleet_software_update/models/patch_fsu_cycle.py b/src/oci/fleet_software_update/models/patch_fsu_cycle.py index 19ddf3967c..e723e34886 100644 --- a/src/oci/fleet_software_update/models/patch_fsu_cycle.py +++ b/src/oci/fleet_software_update/models/patch_fsu_cycle.py @@ -55,9 +55,18 @@ def __init__(self, **kwargs): The value to assign to the next_action_to_execute property of this PatchFsuCycle. :type next_action_to_execute: list[oci.fleet_software_update.models.NextActionToExecuteDetails] + :param last_completed_action_id: + The value to assign to the last_completed_action_id property of this PatchFsuCycle. + :type last_completed_action_id: str + + :param rollback_cycle_state: + The value to assign to the rollback_cycle_state property of this PatchFsuCycle. + Allowed values for this property are: "ABLE_TO_EXECUTE", "IN_PROGRESS", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED" + :type rollback_cycle_state: str + :param last_completed_action: The value to assign to the last_completed_action property of this PatchFsuCycle. - Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK_STAGE", "PRECHECK_APPLY", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type last_completed_action: str :param goal_version_details: @@ -139,6 +148,8 @@ def __init__(self, **kwargs): 'collection_type': 'str', 'executing_fsu_action_id': 'str', 'next_action_to_execute': 'list[NextActionToExecuteDetails]', + 'last_completed_action_id': 'str', + 'rollback_cycle_state': 'str', 'last_completed_action': 'str', 'goal_version_details': 'FsuGoalVersionDetails', 'batching_strategy': 'BatchingStrategyDetails', @@ -168,6 +179,8 @@ def __init__(self, **kwargs): 'collection_type': 'collectionType', 'executing_fsu_action_id': 'executingFsuActionId', 'next_action_to_execute': 'nextActionToExecute', + 'last_completed_action_id': 'lastCompletedActionId', + 'rollback_cycle_state': 'rollbackCycleState', 'last_completed_action': 'lastCompletedAction', 'goal_version_details': 'goalVersionDetails', 'batching_strategy': 'batchingStrategy', @@ -196,6 +209,8 @@ def __init__(self, **kwargs): self._collection_type = None self._executing_fsu_action_id = None self._next_action_to_execute = None + self._last_completed_action_id = None + self._rollback_cycle_state = None self._last_completed_action = None self._goal_version_details = None self._batching_strategy = None diff --git a/src/oci/fleet_software_update/models/precheck_action.py b/src/oci/fleet_software_update/models/precheck_action.py index e3d0989c79..920786b7ae 100644 --- a/src/oci/fleet_software_update/models/precheck_action.py +++ b/src/oci/fleet_software_update/models/precheck_action.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this PrecheckAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/precheck_action_summary.py b/src/oci/fleet_software_update/models/precheck_action_summary.py index 951963c5c7..d8e69aedfa 100644 --- a/src/oci/fleet_software_update/models/precheck_action_summary.py +++ b/src/oci/fleet_software_update/models/precheck_action_summary.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this PrecheckActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/precheck_fsu_job.py b/src/oci/fleet_software_update/models/precheck_fsu_job.py index 0714b362e6..90ef2bcb65 100644 --- a/src/oci/fleet_software_update/models/precheck_fsu_job.py +++ b/src/oci/fleet_software_update/models/precheck_fsu_job.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this PrecheckFsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/precheck_fsu_job_summary.py b/src/oci/fleet_software_update/models/precheck_fsu_job_summary.py index ea25976b77..3a777c6a33 100644 --- a/src/oci/fleet_software_update/models/precheck_fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/precheck_fsu_job_summary.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this PrecheckFsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/rollback_action.py b/src/oci/fleet_software_update/models/rollback_action.py index 8ca3361b2c..6aae701933 100644 --- a/src/oci/fleet_software_update/models/rollback_action.py +++ b/src/oci/fleet_software_update/models/rollback_action.py @@ -36,7 +36,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this RollbackAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/rollback_action_summary.py b/src/oci/fleet_software_update/models/rollback_action_summary.py index 26f324cdf5..23e173334f 100644 --- a/src/oci/fleet_software_update/models/rollback_action_summary.py +++ b/src/oci/fleet_software_update/models/rollback_action_summary.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this RollbackActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/rollback_cycle_action.py b/src/oci/fleet_software_update/models/rollback_cycle_action.py new file mode 100644 index 0000000000..80165320dd --- /dev/null +++ b/src/oci/fleet_software_update/models/rollback_cycle_action.py @@ -0,0 +1,226 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .fsu_action import FsuAction +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RollbackCycleAction(FsuAction): + """ + Rollback Cycle Exadata Fleet Update Action details. + This will rollback all the targets in the maintenance cycle with the Collection in place. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RollbackCycleAction object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.RollbackCycleAction.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param id: + The value to assign to the id property of this RollbackCycleAction. + :type id: str + + :param display_name: + The value to assign to the display_name property of this RollbackCycleAction. + :type display_name: str + + :param compartment_id: + The value to assign to the compartment_id property of this RollbackCycleAction. + :type compartment_id: str + + :param type: + The value to assign to the type property of this RollbackCycleAction. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" + :type type: str + + :param time_created: + The value to assign to the time_created property of this RollbackCycleAction. + :type time_created: datetime + + :param time_started: + The value to assign to the time_started property of this RollbackCycleAction. + :type time_started: datetime + + :param time_finished: + The value to assign to the time_finished property of this RollbackCycleAction. + :type time_finished: datetime + + :param time_updated: + The value to assign to the time_updated property of this RollbackCycleAction. + :type time_updated: datetime + + :param lifecycle_state: + The value to assign to the lifecycle_state property of this RollbackCycleAction. + Allowed values for this property are: "ACCEPTED", "IN_PROGRESS", "WAITING", "UPDATING", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", "CANCELING", "CANCELED", "UNKNOWN", "DELETING", "DELETED" + :type lifecycle_state: str + + :param lifecycle_details: + The value to assign to the lifecycle_details property of this RollbackCycleAction. + :type lifecycle_details: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this RollbackCycleAction. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this RollbackCycleAction. + :type defined_tags: dict(str, dict(str, object)) + + :param system_tags: + The value to assign to the system_tags property of this RollbackCycleAction. + :type system_tags: dict(str, dict(str, object)) + + :param fsu_cycle_id: + The value to assign to the fsu_cycle_id property of this RollbackCycleAction. + :type fsu_cycle_id: str + + :param related_fsu_action_id: + The value to assign to the related_fsu_action_id property of this RollbackCycleAction. + :type related_fsu_action_id: str + + :param progress: + The value to assign to the progress property of this RollbackCycleAction. + :type progress: oci.fleet_software_update.models.FsuActionProgressDetails + + """ + self.swagger_types = { + 'id': 'str', + 'display_name': 'str', + 'compartment_id': 'str', + 'type': 'str', + 'time_created': 'datetime', + 'time_started': 'datetime', + 'time_finished': 'datetime', + 'time_updated': 'datetime', + 'lifecycle_state': 'str', + 'lifecycle_details': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))', + 'system_tags': 'dict(str, dict(str, object))', + 'fsu_cycle_id': 'str', + 'related_fsu_action_id': 'str', + 'progress': 'FsuActionProgressDetails' + } + + self.attribute_map = { + 'id': 'id', + 'display_name': 'displayName', + 'compartment_id': 'compartmentId', + 'type': 'type', + 'time_created': 'timeCreated', + 'time_started': 'timeStarted', + 'time_finished': 'timeFinished', + 'time_updated': 'timeUpdated', + 'lifecycle_state': 'lifecycleState', + 'lifecycle_details': 'lifecycleDetails', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags', + 'system_tags': 'systemTags', + 'fsu_cycle_id': 'fsuCycleId', + 'related_fsu_action_id': 'relatedFsuActionId', + 'progress': 'progress' + } + + self._id = None + self._display_name = None + self._compartment_id = None + self._type = None + self._time_created = None + self._time_started = None + self._time_finished = None + self._time_updated = None + self._lifecycle_state = None + self._lifecycle_details = None + self._freeform_tags = None + self._defined_tags = None + self._system_tags = None + self._fsu_cycle_id = None + self._related_fsu_action_id = None + self._progress = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + @property + def fsu_cycle_id(self): + """ + **[Required]** Gets the fsu_cycle_id of this RollbackCycleAction. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :return: The fsu_cycle_id of this RollbackCycleAction. + :rtype: str + """ + return self._fsu_cycle_id + + @fsu_cycle_id.setter + def fsu_cycle_id(self, fsu_cycle_id): + """ + Sets the fsu_cycle_id of this RollbackCycleAction. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :param fsu_cycle_id: The fsu_cycle_id of this RollbackCycleAction. + :type: str + """ + self._fsu_cycle_id = fsu_cycle_id + + @property + def related_fsu_action_id(self): + """ + Gets the related_fsu_action_id of this RollbackCycleAction. + OCID identifier for the Exadata Fleet Update Action. + + + :return: The related_fsu_action_id of this RollbackCycleAction. + :rtype: str + """ + return self._related_fsu_action_id + + @related_fsu_action_id.setter + def related_fsu_action_id(self, related_fsu_action_id): + """ + Sets the related_fsu_action_id of this RollbackCycleAction. + OCID identifier for the Exadata Fleet Update Action. + + + :param related_fsu_action_id: The related_fsu_action_id of this RollbackCycleAction. + :type: str + """ + self._related_fsu_action_id = related_fsu_action_id + + @property + def progress(self): + """ + Gets the progress of this RollbackCycleAction. + + :return: The progress of this RollbackCycleAction. + :rtype: oci.fleet_software_update.models.FsuActionProgressDetails + """ + return self._progress + + @progress.setter + def progress(self, progress): + """ + Sets the progress of this RollbackCycleAction. + + :param progress: The progress of this RollbackCycleAction. + :type: oci.fleet_software_update.models.FsuActionProgressDetails + """ + self._progress = progress + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/rollback_cycle_action_summary.py b/src/oci/fleet_software_update/models/rollback_cycle_action_summary.py new file mode 100644 index 0000000000..e31066bc76 --- /dev/null +++ b/src/oci/fleet_software_update/models/rollback_cycle_action_summary.py @@ -0,0 +1,225 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .fsu_action_summary import FsuActionSummary +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RollbackCycleActionSummary(FsuActionSummary): + """ + Rollback Cycle Exadata Fleet Update Action summary. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RollbackCycleActionSummary object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.RollbackCycleActionSummary.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param id: + The value to assign to the id property of this RollbackCycleActionSummary. + :type id: str + + :param display_name: + The value to assign to the display_name property of this RollbackCycleActionSummary. + :type display_name: str + + :param compartment_id: + The value to assign to the compartment_id property of this RollbackCycleActionSummary. + :type compartment_id: str + + :param type: + The value to assign to the type property of this RollbackCycleActionSummary. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" + :type type: str + + :param time_created: + The value to assign to the time_created property of this RollbackCycleActionSummary. + :type time_created: datetime + + :param time_started: + The value to assign to the time_started property of this RollbackCycleActionSummary. + :type time_started: datetime + + :param time_finished: + The value to assign to the time_finished property of this RollbackCycleActionSummary. + :type time_finished: datetime + + :param time_updated: + The value to assign to the time_updated property of this RollbackCycleActionSummary. + :type time_updated: datetime + + :param lifecycle_state: + The value to assign to the lifecycle_state property of this RollbackCycleActionSummary. + Allowed values for this property are: "ACCEPTED", "IN_PROGRESS", "WAITING", "UPDATING", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", "CANCELING", "CANCELED", "UNKNOWN", "DELETING", "DELETED" + :type lifecycle_state: str + + :param lifecycle_details: + The value to assign to the lifecycle_details property of this RollbackCycleActionSummary. + :type lifecycle_details: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this RollbackCycleActionSummary. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this RollbackCycleActionSummary. + :type defined_tags: dict(str, dict(str, object)) + + :param system_tags: + The value to assign to the system_tags property of this RollbackCycleActionSummary. + :type system_tags: dict(str, dict(str, object)) + + :param fsu_cycle_id: + The value to assign to the fsu_cycle_id property of this RollbackCycleActionSummary. + :type fsu_cycle_id: str + + :param related_fsu_action_id: + The value to assign to the related_fsu_action_id property of this RollbackCycleActionSummary. + :type related_fsu_action_id: str + + :param progress: + The value to assign to the progress property of this RollbackCycleActionSummary. + :type progress: oci.fleet_software_update.models.FsuActionProgressDetails + + """ + self.swagger_types = { + 'id': 'str', + 'display_name': 'str', + 'compartment_id': 'str', + 'type': 'str', + 'time_created': 'datetime', + 'time_started': 'datetime', + 'time_finished': 'datetime', + 'time_updated': 'datetime', + 'lifecycle_state': 'str', + 'lifecycle_details': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))', + 'system_tags': 'dict(str, dict(str, object))', + 'fsu_cycle_id': 'str', + 'related_fsu_action_id': 'str', + 'progress': 'FsuActionProgressDetails' + } + + self.attribute_map = { + 'id': 'id', + 'display_name': 'displayName', + 'compartment_id': 'compartmentId', + 'type': 'type', + 'time_created': 'timeCreated', + 'time_started': 'timeStarted', + 'time_finished': 'timeFinished', + 'time_updated': 'timeUpdated', + 'lifecycle_state': 'lifecycleState', + 'lifecycle_details': 'lifecycleDetails', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags', + 'system_tags': 'systemTags', + 'fsu_cycle_id': 'fsuCycleId', + 'related_fsu_action_id': 'relatedFsuActionId', + 'progress': 'progress' + } + + self._id = None + self._display_name = None + self._compartment_id = None + self._type = None + self._time_created = None + self._time_started = None + self._time_finished = None + self._time_updated = None + self._lifecycle_state = None + self._lifecycle_details = None + self._freeform_tags = None + self._defined_tags = None + self._system_tags = None + self._fsu_cycle_id = None + self._related_fsu_action_id = None + self._progress = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + @property + def fsu_cycle_id(self): + """ + **[Required]** Gets the fsu_cycle_id of this RollbackCycleActionSummary. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :return: The fsu_cycle_id of this RollbackCycleActionSummary. + :rtype: str + """ + return self._fsu_cycle_id + + @fsu_cycle_id.setter + def fsu_cycle_id(self, fsu_cycle_id): + """ + Sets the fsu_cycle_id of this RollbackCycleActionSummary. + OCID identifier for the Exadata Fleet Update Cycle the Action will be part of. + + + :param fsu_cycle_id: The fsu_cycle_id of this RollbackCycleActionSummary. + :type: str + """ + self._fsu_cycle_id = fsu_cycle_id + + @property + def related_fsu_action_id(self): + """ + Gets the related_fsu_action_id of this RollbackCycleActionSummary. + OCID identifier for the Exadata Fleet Update Action. + + + :return: The related_fsu_action_id of this RollbackCycleActionSummary. + :rtype: str + """ + return self._related_fsu_action_id + + @related_fsu_action_id.setter + def related_fsu_action_id(self, related_fsu_action_id): + """ + Sets the related_fsu_action_id of this RollbackCycleActionSummary. + OCID identifier for the Exadata Fleet Update Action. + + + :param related_fsu_action_id: The related_fsu_action_id of this RollbackCycleActionSummary. + :type: str + """ + self._related_fsu_action_id = related_fsu_action_id + + @property + def progress(self): + """ + Gets the progress of this RollbackCycleActionSummary. + + :return: The progress of this RollbackCycleActionSummary. + :rtype: oci.fleet_software_update.models.FsuActionProgressDetails + """ + return self._progress + + @progress.setter + def progress(self, progress): + """ + Sets the progress of this RollbackCycleActionSummary. + + :param progress: The progress of this RollbackCycleActionSummary. + :type: oci.fleet_software_update.models.FsuActionProgressDetails + """ + self._progress = progress + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/rollback_cycle_fsu_job.py b/src/oci/fleet_software_update/models/rollback_cycle_fsu_job.py new file mode 100644 index 0000000000..a45cd83748 --- /dev/null +++ b/src/oci/fleet_software_update/models/rollback_cycle_fsu_job.py @@ -0,0 +1,278 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .fsu_job import FsuJob +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RollbackCycleFsuJob(FsuJob): + """ + Rollback Maintenance Cycle Exadata Fleet Update Job resource. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RollbackCycleFsuJob object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.RollbackCycleFsuJob.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param id: + The value to assign to the id property of this RollbackCycleFsuJob. + :type id: str + + :param display_name: + The value to assign to the display_name property of this RollbackCycleFsuJob. + :type display_name: str + + :param type: + The value to assign to the type property of this RollbackCycleFsuJob. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" + :type type: str + + :param compartment_id: + The value to assign to the compartment_id property of this RollbackCycleFsuJob. + :type compartment_id: str + + :param fsu_action_id: + The value to assign to the fsu_action_id property of this RollbackCycleFsuJob. + :type fsu_action_id: str + + :param progress: + The value to assign to the progress property of this RollbackCycleFsuJob. + :type progress: oci.fleet_software_update.models.JobProgressDetails + + :param time_created: + The value to assign to the time_created property of this RollbackCycleFsuJob. + :type time_created: datetime + + :param time_started: + The value to assign to the time_started property of this RollbackCycleFsuJob. + :type time_started: datetime + + :param time_updated: + The value to assign to the time_updated property of this RollbackCycleFsuJob. + :type time_updated: datetime + + :param time_finished: + The value to assign to the time_finished property of this RollbackCycleFsuJob. + :type time_finished: datetime + + :param lifecycle_state: + The value to assign to the lifecycle_state property of this RollbackCycleFsuJob. + Allowed values for this property are: "ACCEPTED", "IN_PROGRESS", "UNKNOWN", "TERMINATED", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", "WAITING", "CANCELING", "CANCELED" + :type lifecycle_state: str + + :param lifecycle_details: + The value to assign to the lifecycle_details property of this RollbackCycleFsuJob. + :type lifecycle_details: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this RollbackCycleFsuJob. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this RollbackCycleFsuJob. + :type defined_tags: dict(str, dict(str, object)) + + :param system_tags: + The value to assign to the system_tags property of this RollbackCycleFsuJob. + :type system_tags: dict(str, dict(str, object)) + + :param fsu_collection_id: + The value to assign to the fsu_collection_id property of this RollbackCycleFsuJob. + :type fsu_collection_id: str + + :param fsu_cycle_id: + The value to assign to the fsu_cycle_id property of this RollbackCycleFsuJob. + :type fsu_cycle_id: str + + :param target_id: + The value to assign to the target_id property of this RollbackCycleFsuJob. + :type target_id: str + + :param schedule: + The value to assign to the schedule property of this RollbackCycleFsuJob. + :type schedule: oci.fleet_software_update.models.ScheduleDetails + + """ + self.swagger_types = { + 'id': 'str', + 'display_name': 'str', + 'type': 'str', + 'compartment_id': 'str', + 'fsu_action_id': 'str', + 'progress': 'JobProgressDetails', + 'time_created': 'datetime', + 'time_started': 'datetime', + 'time_updated': 'datetime', + 'time_finished': 'datetime', + 'lifecycle_state': 'str', + 'lifecycle_details': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))', + 'system_tags': 'dict(str, dict(str, object))', + 'fsu_collection_id': 'str', + 'fsu_cycle_id': 'str', + 'target_id': 'str', + 'schedule': 'ScheduleDetails' + } + + self.attribute_map = { + 'id': 'id', + 'display_name': 'displayName', + 'type': 'type', + 'compartment_id': 'compartmentId', + 'fsu_action_id': 'fsuActionId', + 'progress': 'progress', + 'time_created': 'timeCreated', + 'time_started': 'timeStarted', + 'time_updated': 'timeUpdated', + 'time_finished': 'timeFinished', + 'lifecycle_state': 'lifecycleState', + 'lifecycle_details': 'lifecycleDetails', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags', + 'system_tags': 'systemTags', + 'fsu_collection_id': 'fsuCollectionId', + 'fsu_cycle_id': 'fsuCycleId', + 'target_id': 'targetId', + 'schedule': 'schedule' + } + + self._id = None + self._display_name = None + self._type = None + self._compartment_id = None + self._fsu_action_id = None + self._progress = None + self._time_created = None + self._time_started = None + self._time_updated = None + self._time_finished = None + self._lifecycle_state = None + self._lifecycle_details = None + self._freeform_tags = None + self._defined_tags = None + self._system_tags = None + self._fsu_collection_id = None + self._fsu_cycle_id = None + self._target_id = None + self._schedule = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + @property + def fsu_collection_id(self): + """ + **[Required]** Gets the fsu_collection_id of this RollbackCycleFsuJob. + The `OCID`__ of the Exadata Fleet Update Collection that the job is executing on. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The fsu_collection_id of this RollbackCycleFsuJob. + :rtype: str + """ + return self._fsu_collection_id + + @fsu_collection_id.setter + def fsu_collection_id(self, fsu_collection_id): + """ + Sets the fsu_collection_id of this RollbackCycleFsuJob. + The `OCID`__ of the Exadata Fleet Update Collection that the job is executing on. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param fsu_collection_id: The fsu_collection_id of this RollbackCycleFsuJob. + :type: str + """ + self._fsu_collection_id = fsu_collection_id + + @property + def fsu_cycle_id(self): + """ + **[Required]** Gets the fsu_cycle_id of this RollbackCycleFsuJob. + The `OCID`__ of the Exadata Fleet Update Cycle that this job is part of. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The fsu_cycle_id of this RollbackCycleFsuJob. + :rtype: str + """ + return self._fsu_cycle_id + + @fsu_cycle_id.setter + def fsu_cycle_id(self, fsu_cycle_id): + """ + Sets the fsu_cycle_id of this RollbackCycleFsuJob. + The `OCID`__ of the Exadata Fleet Update Cycle that this job is part of. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param fsu_cycle_id: The fsu_cycle_id of this RollbackCycleFsuJob. + :type: str + """ + self._fsu_cycle_id = fsu_cycle_id + + @property + def target_id(self): + """ + Gets the target_id of this RollbackCycleFsuJob. + OCID of Target resource on which the job is executing the action. + + + :return: The target_id of this RollbackCycleFsuJob. + :rtype: str + """ + return self._target_id + + @target_id.setter + def target_id(self, target_id): + """ + Sets the target_id of this RollbackCycleFsuJob. + OCID of Target resource on which the job is executing the action. + + + :param target_id: The target_id of this RollbackCycleFsuJob. + :type: str + """ + self._target_id = target_id + + @property + def schedule(self): + """ + Gets the schedule of this RollbackCycleFsuJob. + + :return: The schedule of this RollbackCycleFsuJob. + :rtype: oci.fleet_software_update.models.ScheduleDetails + """ + return self._schedule + + @schedule.setter + def schedule(self, schedule): + """ + Sets the schedule of this RollbackCycleFsuJob. + + :param schedule: The schedule of this RollbackCycleFsuJob. + :type: oci.fleet_software_update.models.ScheduleDetails + """ + self._schedule = schedule + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/rollback_cycle_fsu_job_summary.py b/src/oci/fleet_software_update/models/rollback_cycle_fsu_job_summary.py new file mode 100644 index 0000000000..b886e2ecfe --- /dev/null +++ b/src/oci/fleet_software_update/models/rollback_cycle_fsu_job_summary.py @@ -0,0 +1,251 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .fsu_job_summary import FsuJobSummary +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class RollbackCycleFsuJobSummary(FsuJobSummary): + """ + Summary of Rollback Cycle Targets Exadata Fleet Update Job resource. + """ + + def __init__(self, **kwargs): + """ + Initializes a new RollbackCycleFsuJobSummary object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.RollbackCycleFsuJobSummary.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param id: + The value to assign to the id property of this RollbackCycleFsuJobSummary. + :type id: str + + :param display_name: + The value to assign to the display_name property of this RollbackCycleFsuJobSummary. + :type display_name: str + + :param type: + The value to assign to the type property of this RollbackCycleFsuJobSummary. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" + :type type: str + + :param compartment_id: + The value to assign to the compartment_id property of this RollbackCycleFsuJobSummary. + :type compartment_id: str + + :param fsu_action_id: + The value to assign to the fsu_action_id property of this RollbackCycleFsuJobSummary. + :type fsu_action_id: str + + :param progress: + The value to assign to the progress property of this RollbackCycleFsuJobSummary. + :type progress: oci.fleet_software_update.models.JobProgress + + :param time_created: + The value to assign to the time_created property of this RollbackCycleFsuJobSummary. + :type time_created: datetime + + :param time_started: + The value to assign to the time_started property of this RollbackCycleFsuJobSummary. + :type time_started: datetime + + :param time_updated: + The value to assign to the time_updated property of this RollbackCycleFsuJobSummary. + :type time_updated: datetime + + :param time_finished: + The value to assign to the time_finished property of this RollbackCycleFsuJobSummary. + :type time_finished: datetime + + :param lifecycle_state: + The value to assign to the lifecycle_state property of this RollbackCycleFsuJobSummary. + Allowed values for this property are: "ACCEPTED", "IN_PROGRESS", "UNKNOWN", "TERMINATED", "FAILED", "NEEDS_ATTENTION", "SUCCEEDED", "WAITING", "CANCELING", "CANCELED" + :type lifecycle_state: str + + :param lifecycle_details: + The value to assign to the lifecycle_details property of this RollbackCycleFsuJobSummary. + :type lifecycle_details: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this RollbackCycleFsuJobSummary. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this RollbackCycleFsuJobSummary. + :type defined_tags: dict(str, dict(str, object)) + + :param system_tags: + The value to assign to the system_tags property of this RollbackCycleFsuJobSummary. + :type system_tags: dict(str, dict(str, object)) + + :param fsu_collection_id: + The value to assign to the fsu_collection_id property of this RollbackCycleFsuJobSummary. + :type fsu_collection_id: str + + :param fsu_cycle_id: + The value to assign to the fsu_cycle_id property of this RollbackCycleFsuJobSummary. + :type fsu_cycle_id: str + + :param target_id: + The value to assign to the target_id property of this RollbackCycleFsuJobSummary. + :type target_id: str + + """ + self.swagger_types = { + 'id': 'str', + 'display_name': 'str', + 'type': 'str', + 'compartment_id': 'str', + 'fsu_action_id': 'str', + 'progress': 'JobProgress', + 'time_created': 'datetime', + 'time_started': 'datetime', + 'time_updated': 'datetime', + 'time_finished': 'datetime', + 'lifecycle_state': 'str', + 'lifecycle_details': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))', + 'system_tags': 'dict(str, dict(str, object))', + 'fsu_collection_id': 'str', + 'fsu_cycle_id': 'str', + 'target_id': 'str' + } + + self.attribute_map = { + 'id': 'id', + 'display_name': 'displayName', + 'type': 'type', + 'compartment_id': 'compartmentId', + 'fsu_action_id': 'fsuActionId', + 'progress': 'progress', + 'time_created': 'timeCreated', + 'time_started': 'timeStarted', + 'time_updated': 'timeUpdated', + 'time_finished': 'timeFinished', + 'lifecycle_state': 'lifecycleState', + 'lifecycle_details': 'lifecycleDetails', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags', + 'system_tags': 'systemTags', + 'fsu_collection_id': 'fsuCollectionId', + 'fsu_cycle_id': 'fsuCycleId', + 'target_id': 'targetId' + } + + self._id = None + self._display_name = None + self._type = None + self._compartment_id = None + self._fsu_action_id = None + self._progress = None + self._time_created = None + self._time_started = None + self._time_updated = None + self._time_finished = None + self._lifecycle_state = None + self._lifecycle_details = None + self._freeform_tags = None + self._defined_tags = None + self._system_tags = None + self._fsu_collection_id = None + self._fsu_cycle_id = None + self._target_id = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + @property + def fsu_collection_id(self): + """ + **[Required]** Gets the fsu_collection_id of this RollbackCycleFsuJobSummary. + The `OCID`__ of the Exadata Fleet Update Collection that the job is executing on. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The fsu_collection_id of this RollbackCycleFsuJobSummary. + :rtype: str + """ + return self._fsu_collection_id + + @fsu_collection_id.setter + def fsu_collection_id(self, fsu_collection_id): + """ + Sets the fsu_collection_id of this RollbackCycleFsuJobSummary. + The `OCID`__ of the Exadata Fleet Update Collection that the job is executing on. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param fsu_collection_id: The fsu_collection_id of this RollbackCycleFsuJobSummary. + :type: str + """ + self._fsu_collection_id = fsu_collection_id + + @property + def fsu_cycle_id(self): + """ + **[Required]** Gets the fsu_cycle_id of this RollbackCycleFsuJobSummary. + The `OCID`__ of the Exadata Fleet Update Cycle that this job is part of. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :return: The fsu_cycle_id of this RollbackCycleFsuJobSummary. + :rtype: str + """ + return self._fsu_cycle_id + + @fsu_cycle_id.setter + def fsu_cycle_id(self, fsu_cycle_id): + """ + Sets the fsu_cycle_id of this RollbackCycleFsuJobSummary. + The `OCID`__ of the Exadata Fleet Update Cycle that this job is part of. + + __ https://docs.cloud.oracle.com/Content/General/Concepts/identifiers.htm + + + :param fsu_cycle_id: The fsu_cycle_id of this RollbackCycleFsuJobSummary. + :type: str + """ + self._fsu_cycle_id = fsu_cycle_id + + @property + def target_id(self): + """ + Gets the target_id of this RollbackCycleFsuJobSummary. + OCID of Target resource on which the job is executing the action. + + + :return: The target_id of this RollbackCycleFsuJobSummary. + :rtype: str + """ + return self._target_id + + @target_id.setter + def target_id(self, target_id): + """ + Sets the target_id of this RollbackCycleFsuJobSummary. + OCID of Target resource on which the job is executing the action. + + + :param target_id: The target_id of this RollbackCycleFsuJobSummary. + :type: str + """ + self._target_id = target_id + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/rollback_fsu_job.py b/src/oci/fleet_software_update/models/rollback_fsu_job.py index 6e13eef748..0cc77e9267 100644 --- a/src/oci/fleet_software_update/models/rollback_fsu_job.py +++ b/src/oci/fleet_software_update/models/rollback_fsu_job.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this RollbackFsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/rollback_fsu_job_summary.py b/src/oci/fleet_software_update/models/rollback_fsu_job_summary.py index 71b7f473e1..fe1582502b 100644 --- a/src/oci/fleet_software_update/models/rollback_fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/rollback_fsu_job_summary.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this RollbackFsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/stage_action.py b/src/oci/fleet_software_update/models/stage_action.py index bf2c2f3243..f2822b2372 100644 --- a/src/oci/fleet_software_update/models/stage_action.py +++ b/src/oci/fleet_software_update/models/stage_action.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this StageAction. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/stage_action_summary.py b/src/oci/fleet_software_update/models/stage_action_summary.py index 62b4d0954f..4d89d0c2eb 100644 --- a/src/oci/fleet_software_update/models/stage_action_summary.py +++ b/src/oci/fleet_software_update/models/stage_action_summary.py @@ -35,7 +35,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this StageActionSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param time_created: diff --git a/src/oci/fleet_software_update/models/stage_fsu_job.py b/src/oci/fleet_software_update/models/stage_fsu_job.py index 208bda502b..527d49ba69 100644 --- a/src/oci/fleet_software_update/models/stage_fsu_job.py +++ b/src/oci/fleet_software_update/models/stage_fsu_job.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this StageFsuJob. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/stage_fsu_job_summary.py b/src/oci/fleet_software_update/models/stage_fsu_job_summary.py index 4d686a0657..93800576ec 100644 --- a/src/oci/fleet_software_update/models/stage_fsu_job_summary.py +++ b/src/oci/fleet_software_update/models/stage_fsu_job_summary.py @@ -31,7 +31,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this StageFsuJobSummary. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "ROLLBACK_MAINTENANCE_CYCLE", "CLEANUP" :type type: str :param compartment_id: diff --git a/src/oci/fleet_software_update/models/update_apply_action_details.py b/src/oci/fleet_software_update/models/update_apply_action_details.py index ca7675e1fd..9a7c072fdf 100644 --- a/src/oci/fleet_software_update/models/update_apply_action_details.py +++ b/src/oci/fleet_software_update/models/update_apply_action_details.py @@ -23,7 +23,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdateApplyActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: diff --git a/src/oci/fleet_software_update/models/update_cleanup_action_details.py b/src/oci/fleet_software_update/models/update_cleanup_action_details.py index 4fb11a1eb9..1586bfb622 100644 --- a/src/oci/fleet_software_update/models/update_cleanup_action_details.py +++ b/src/oci/fleet_software_update/models/update_cleanup_action_details.py @@ -23,7 +23,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdateCleanupActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: diff --git a/src/oci/fleet_software_update/models/update_fsu_action_details.py b/src/oci/fleet_software_update/models/update_fsu_action_details.py index c057868e0c..ad39aab441 100644 --- a/src/oci/fleet_software_update/models/update_fsu_action_details.py +++ b/src/oci/fleet_software_update/models/update_fsu_action_details.py @@ -35,11 +35,16 @@ class UpdateFsuActionDetails(object): #: This constant has a value of "CLEANUP" TYPE_CLEANUP = "CLEANUP" + #: A constant which can be used with the type property of a UpdateFsuActionDetails. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE" + TYPE_ROLLBACK_MAINTENANCE_CYCLE = "ROLLBACK_MAINTENANCE_CYCLE" + def __init__(self, **kwargs): """ Initializes a new UpdateFsuActionDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input to a service operations then you should favor using a subclass over the base class: + * :class:`~oci.fleet_software_update.models.UpdateRollbackCycleActionDetails` * :class:`~oci.fleet_software_update.models.UpdateStageActionDetails` * :class:`~oci.fleet_software_update.models.UpdateApplyActionDetails` * :class:`~oci.fleet_software_update.models.UpdateRollbackActionDetails` @@ -50,7 +55,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdateFsuActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: @@ -93,6 +98,9 @@ def get_subtype(object_dictionary): """ type = object_dictionary['type'] + if type == 'ROLLBACK_MAINTENANCE_CYCLE': + return 'UpdateRollbackCycleActionDetails' + if type == 'STAGE': return 'UpdateStageActionDetails' @@ -117,7 +125,7 @@ def type(self): Type of Exadata Fleet Update Action to update. Specifying this option will not change the Action type. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :return: The type of this UpdateFsuActionDetails. @@ -136,7 +144,7 @@ def type(self, type): :param type: The type of this UpdateFsuActionDetails. :type: str """ - allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP"] + allowed_values = ["STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE"] if not value_allowed_none_or_none_sentinel(type, allowed_values): raise ValueError( f"Invalid value for `type`, must be None or one of {allowed_values}" diff --git a/src/oci/fleet_software_update/models/update_precheck_action_details.py b/src/oci/fleet_software_update/models/update_precheck_action_details.py index daf9f3ab4f..d9d17d4151 100644 --- a/src/oci/fleet_software_update/models/update_precheck_action_details.py +++ b/src/oci/fleet_software_update/models/update_precheck_action_details.py @@ -23,7 +23,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdatePrecheckActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: diff --git a/src/oci/fleet_software_update/models/update_rollback_action_details.py b/src/oci/fleet_software_update/models/update_rollback_action_details.py index 4c22856799..f81b237f62 100644 --- a/src/oci/fleet_software_update/models/update_rollback_action_details.py +++ b/src/oci/fleet_software_update/models/update_rollback_action_details.py @@ -23,7 +23,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdateRollbackActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: diff --git a/src/oci/fleet_software_update/models/update_rollback_cycle_action_details.py b/src/oci/fleet_software_update/models/update_rollback_cycle_action_details.py new file mode 100644 index 0000000000..7842bbc5f5 --- /dev/null +++ b/src/oci/fleet_software_update/models/update_rollback_cycle_action_details.py @@ -0,0 +1,72 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20220528 + +from .update_fsu_action_details import UpdateFsuActionDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdateRollbackCycleActionDetails(UpdateFsuActionDetails): + """ + Rollback Cycle Exadata Fleet Update Action update details. + """ + + def __init__(self, **kwargs): + """ + Initializes a new UpdateRollbackCycleActionDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.fleet_software_update.models.UpdateRollbackCycleActionDetails.type` attribute + of this class is ``ROLLBACK_MAINTENANCE_CYCLE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param type: + The value to assign to the type property of this UpdateRollbackCycleActionDetails. + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" + :type type: str + + :param display_name: + The value to assign to the display_name property of this UpdateRollbackCycleActionDetails. + :type display_name: str + + :param freeform_tags: + The value to assign to the freeform_tags property of this UpdateRollbackCycleActionDetails. + :type freeform_tags: dict(str, str) + + :param defined_tags: + The value to assign to the defined_tags property of this UpdateRollbackCycleActionDetails. + :type defined_tags: dict(str, dict(str, object)) + + """ + self.swagger_types = { + 'type': 'str', + 'display_name': 'str', + 'freeform_tags': 'dict(str, str)', + 'defined_tags': 'dict(str, dict(str, object))' + } + + self.attribute_map = { + 'type': 'type', + 'display_name': 'displayName', + 'freeform_tags': 'freeformTags', + 'defined_tags': 'definedTags' + } + + self._type = None + self._display_name = None + self._freeform_tags = None + self._defined_tags = None + self._type = 'ROLLBACK_MAINTENANCE_CYCLE' + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/fleet_software_update/models/update_stage_action_details.py b/src/oci/fleet_software_update/models/update_stage_action_details.py index bbba1d2475..004738f2fe 100644 --- a/src/oci/fleet_software_update/models/update_stage_action_details.py +++ b/src/oci/fleet_software_update/models/update_stage_action_details.py @@ -23,7 +23,7 @@ def __init__(self, **kwargs): :param type: The value to assign to the type property of this UpdateStageActionDetails. - Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP" + Allowed values for this property are: "STAGE", "PRECHECK", "APPLY", "ROLLBACK_AND_REMOVE_TARGET", "CLEANUP", "ROLLBACK_MAINTENANCE_CYCLE" :type type: str :param display_name: diff --git a/src/oci/fleet_software_update/models/work_request.py b/src/oci/fleet_software_update/models/work_request.py index 6a4d600743..0f08f599f8 100644 --- a/src/oci/fleet_software_update/models/work_request.py +++ b/src/oci/fleet_software_update/models/work_request.py @@ -67,6 +67,10 @@ class WorkRequest(object): #: This constant has a value of "CLONE_MAINTENANCE_CYCLE" OPERATION_TYPE_CLONE_MAINTENANCE_CYCLE = "CLONE_MAINTENANCE_CYCLE" + #: A constant which can be used with the operation_type property of a WorkRequest. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE_ACTION" + OPERATION_TYPE_ROLLBACK_MAINTENANCE_CYCLE_ACTION = "ROLLBACK_MAINTENANCE_CYCLE_ACTION" + #: A constant which can be used with the operation_type property of a WorkRequest. #: This constant has a value of "CREATE_ACTION" OPERATION_TYPE_CREATE_ACTION = "CREATE_ACTION" @@ -146,7 +150,7 @@ def __init__(self, **kwargs): :param operation_type: The value to assign to the operation_type property of this WorkRequest. - Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type operation_type: str @@ -225,7 +229,7 @@ def operation_type(self): **[Required]** Gets the operation_type of this WorkRequest. Type of the work request. - Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -244,7 +248,7 @@ def operation_type(self, operation_type): :param operation_type: The operation_type of this WorkRequest. :type: str """ - allowed_values = ["CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION"] + allowed_values = ["CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION"] if not value_allowed_none_or_none_sentinel(operation_type, allowed_values): operation_type = 'UNKNOWN_ENUM_VALUE' self._operation_type = operation_type diff --git a/src/oci/fleet_software_update/models/work_request_summary.py b/src/oci/fleet_software_update/models/work_request_summary.py index 0a39335d66..fb03a309cf 100644 --- a/src/oci/fleet_software_update/models/work_request_summary.py +++ b/src/oci/fleet_software_update/models/work_request_summary.py @@ -67,6 +67,10 @@ class WorkRequestSummary(object): #: This constant has a value of "CLONE_MAINTENANCE_CYCLE" OPERATION_TYPE_CLONE_MAINTENANCE_CYCLE = "CLONE_MAINTENANCE_CYCLE" + #: A constant which can be used with the operation_type property of a WorkRequestSummary. + #: This constant has a value of "ROLLBACK_MAINTENANCE_CYCLE_ACTION" + OPERATION_TYPE_ROLLBACK_MAINTENANCE_CYCLE_ACTION = "ROLLBACK_MAINTENANCE_CYCLE_ACTION" + #: A constant which can be used with the operation_type property of a WorkRequestSummary. #: This constant has a value of "CREATE_ACTION" OPERATION_TYPE_CREATE_ACTION = "CREATE_ACTION" @@ -146,7 +150,7 @@ def __init__(self, **kwargs): :param operation_type: The value to assign to the operation_type property of this WorkRequestSummary. - Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type operation_type: str @@ -225,7 +229,7 @@ def operation_type(self): **[Required]** Gets the operation_type of this WorkRequestSummary. Type of the work request. - Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. + Allowed values for this property are: "CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION", 'UNKNOWN_ENUM_VALUE'. Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. @@ -244,7 +248,7 @@ def operation_type(self, operation_type): :param operation_type: The operation_type of this WorkRequestSummary. :type: str """ - allowed_values = ["CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION"] + allowed_values = ["CREATE_DISCOVERY", "DELETE_DISCOVERY", "CREATE_COLLECTION", "UPDATE_COLLECTION", "DELETE_COLLECTION", "MOVE_COLLECTION", "ADD_TARGETS_TO_COLLECTION", "REMOVE_TARGETS_IN_COLLECTION", "CREATE_MAINTENANCE_CYCLE", "UPDATE_MAINTENANCE_CYCLE", "DELETE_MAINTENANCE_CYCLE", "MOVE_MAINTENANCE_CYCLE", "CLONE_MAINTENANCE_CYCLE", "ROLLBACK_MAINTENANCE_CYCLE_ACTION", "CREATE_ACTION", "UPDATE_ACTION", "DELETE_ACTION", "MOVE_ACTION", "PATCH_ACTION", "CLEANUP_ACTION", "ROLLBACK_AND_REMOVE_ACTION", "APPLY_ACTION", "PRECHECK_ACTION", "STAGE_ACTION"] if not value_allowed_none_or_none_sentinel(operation_type, allowed_values): operation_type = 'UNKNOWN_ENUM_VALUE' self._operation_type = operation_type diff --git a/src/oci/object_storage/transfer/internal/multipart_object_assembler.py b/src/oci/object_storage/transfer/internal/multipart_object_assembler.py index 8ccc992ca1..e4eeef5ac2 100644 --- a/src/oci/object_storage/transfer/internal/multipart_object_assembler.py +++ b/src/oci/object_storage/transfer/internal/multipart_object_assembler.py @@ -74,6 +74,12 @@ def __init__(self, :param int part_size (optional): Override the default part size of 128 MiB, value is in bytes. + :param str opc_checksum_algorithm (optional): + The optional checksum algorithm to use to compute and store the checksum of the body of the HTTP request + (or the parts in case of multipart uploads), in addition to the default MD5 checksum. + + Allowed values are: "CRC32C", "SHA256", "SHA384" + :param str if_match (optional): The entity tag of the object to match. @@ -129,6 +135,9 @@ def __init__(self, self.part_size = DEFAULT_PART_SIZE if 'part_size' in kwargs: self.part_size = kwargs['part_size'] + self.opc_checksum_algorithm = None + if 'opc_checksum_algorithm' in kwargs: + self.opc_checksum_algorithm = kwargs['opc_checksum_algorithm'] self.if_match = None if 'if_match' in kwargs: self.if_match = kwargs['if_match'] @@ -420,6 +429,9 @@ def new_upload(self, **kwargs): if self.opc_sse_kms_key_id: kwargs['opc_sse_kms_key_id'] = self.opc_sse_kms_key_id + if self.opc_checksum_algorithm: + kwargs['opc_checksum_algorithm'] = self.opc_checksum_algorithm + # pass on SSE-C values (if any) kwargs.update(self.ssec_params) @@ -452,6 +464,9 @@ def _upload_part(self, part_num, part, **kwargs): # supply SSE-C key (if any) information to upload-part new_kwargs.update(self.ssec_params) + if self.opc_checksum_algorithm: + new_kwargs['opc_checksum_algorithm'] = self.opc_checksum_algorithm + # TODO: Calculate the hash without needing to read the file chunk twice. # Calculate the hash before uploading. The hash will be used # to determine if the part needs to be uploaded. It will also diff --git a/src/oci/version.py b/src/oci/version.py index 198264fdcb..b44fc3fa92 100644 --- a/src/oci/version.py +++ b/src/oci/version.py @@ -2,4 +2,4 @@ # Copyright (c) 2016, 2024, Oracle and/or its affiliates. All rights reserved. # This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license. -__version__ = "2.139.0" +__version__ = "2.140.0" diff --git a/src/oci/visual_builder/models/__init__.py b/src/oci/visual_builder/models/__init__.py index 8e3767fbbf..fdf72c27af 100644 --- a/src/oci/visual_builder/models/__init__.py +++ b/src/oci/visual_builder/models/__init__.py @@ -8,14 +8,16 @@ from .application_summary import ApplicationSummary from .application_summary_collection import ApplicationSummaryCollection -from .attachment_details import AttachmentDetails from .change_vb_instance_compartment_details import ChangeVbInstanceCompartmentDetails from .create_custom_endpoint_details import CreateCustomEndpointDetails from .create_vb_instance_details import CreateVbInstanceDetails from .custom_endpoint_details import CustomEndpointDetails -from .idcs_info_details import IdcsInfoDetails +from .network_endpoint_details import NetworkEndpointDetails +from .private_endpoint_details import PrivateEndpointDetails from .request_summarized_applications_details import RequestSummarizedApplicationsDetails from .update_custom_endpoint_details import UpdateCustomEndpointDetails +from .update_network_endpoint_details import UpdateNetworkEndpointDetails +from .update_private_endpoint_details import UpdatePrivateEndpointDetails from .update_vb_instance_details import UpdateVbInstanceDetails from .vb_instance import VbInstance from .vb_instance_summary import VbInstanceSummary @@ -33,14 +35,16 @@ visual_builder_type_mapping = { "ApplicationSummary": ApplicationSummary, "ApplicationSummaryCollection": ApplicationSummaryCollection, - "AttachmentDetails": AttachmentDetails, "ChangeVbInstanceCompartmentDetails": ChangeVbInstanceCompartmentDetails, "CreateCustomEndpointDetails": CreateCustomEndpointDetails, "CreateVbInstanceDetails": CreateVbInstanceDetails, "CustomEndpointDetails": CustomEndpointDetails, - "IdcsInfoDetails": IdcsInfoDetails, + "NetworkEndpointDetails": NetworkEndpointDetails, + "PrivateEndpointDetails": PrivateEndpointDetails, "RequestSummarizedApplicationsDetails": RequestSummarizedApplicationsDetails, "UpdateCustomEndpointDetails": UpdateCustomEndpointDetails, + "UpdateNetworkEndpointDetails": UpdateNetworkEndpointDetails, + "UpdatePrivateEndpointDetails": UpdatePrivateEndpointDetails, "UpdateVbInstanceDetails": UpdateVbInstanceDetails, "VbInstance": VbInstance, "VbInstanceSummary": VbInstanceSummary, diff --git a/src/oci/visual_builder/models/attachment_details.py b/src/oci/visual_builder/models/attachment_details.py deleted file mode 100644 index cd0fef33f4..0000000000 --- a/src/oci/visual_builder/models/attachment_details.py +++ /dev/null @@ -1,218 +0,0 @@ -# coding: utf-8 -# Copyright (c) 2016, 2024, 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. - -# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 - - -from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 -from oci.decorators import init_model_state_from_kwargs - - -@init_model_state_from_kwargs -class AttachmentDetails(object): - """ - Description of an attachments for this instance - """ - - #: A constant which can be used with the target_role property of a AttachmentDetails. - #: This constant has a value of "PARENT" - TARGET_ROLE_PARENT = "PARENT" - - #: A constant which can be used with the target_role property of a AttachmentDetails. - #: This constant has a value of "CHILD" - TARGET_ROLE_CHILD = "CHILD" - - def __init__(self, **kwargs): - """ - Initializes a new AttachmentDetails object with values from keyword arguments. - The following keyword arguments are supported (corresponding to the getters/setters of this class): - - :param target_role: - The value to assign to the target_role property of this AttachmentDetails. - Allowed values for this property are: "PARENT", "CHILD", 'UNKNOWN_ENUM_VALUE'. - Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. - :type target_role: str - - :param is_implicit: - The value to assign to the is_implicit property of this AttachmentDetails. - :type is_implicit: bool - - :param target_id: - The value to assign to the target_id property of this AttachmentDetails. - :type target_id: str - - :param target_instance_url: - The value to assign to the target_instance_url property of this AttachmentDetails. - :type target_instance_url: str - - :param target_service_type: - The value to assign to the target_service_type property of this AttachmentDetails. - :type target_service_type: str - - """ - self.swagger_types = { - 'target_role': 'str', - 'is_implicit': 'bool', - 'target_id': 'str', - 'target_instance_url': 'str', - 'target_service_type': 'str' - } - - self.attribute_map = { - 'target_role': 'targetRole', - 'is_implicit': 'isImplicit', - 'target_id': 'targetId', - 'target_instance_url': 'targetInstanceUrl', - 'target_service_type': 'targetServiceType' - } - - self._target_role = None - self._is_implicit = None - self._target_id = None - self._target_instance_url = None - self._target_service_type = None - - @property - def target_role(self): - """ - **[Required]** Gets the target_role of this AttachmentDetails. - The role of the target attachment. - * `PARENT` - The target instance is the parent of this attachment. - * `CHILD` - The target instance is the child of this attachment. - - Allowed values for this property are: "PARENT", "CHILD", 'UNKNOWN_ENUM_VALUE'. - Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. - - - :return: The target_role of this AttachmentDetails. - :rtype: str - """ - return self._target_role - - @target_role.setter - def target_role(self, target_role): - """ - Sets the target_role of this AttachmentDetails. - The role of the target attachment. - * `PARENT` - The target instance is the parent of this attachment. - * `CHILD` - The target instance is the child of this attachment. - - - :param target_role: The target_role of this AttachmentDetails. - :type: str - """ - allowed_values = ["PARENT", "CHILD"] - if not value_allowed_none_or_none_sentinel(target_role, allowed_values): - target_role = 'UNKNOWN_ENUM_VALUE' - self._target_role = target_role - - @property - def is_implicit(self): - """ - **[Required]** Gets the is_implicit of this AttachmentDetails. - * If role == `PARENT`, the attached instance was created by this service instance - * If role == `CHILD`, this instance was created from attached instance on behalf of a user - - - :return: The is_implicit of this AttachmentDetails. - :rtype: bool - """ - return self._is_implicit - - @is_implicit.setter - def is_implicit(self, is_implicit): - """ - Sets the is_implicit of this AttachmentDetails. - * If role == `PARENT`, the attached instance was created by this service instance - * If role == `CHILD`, this instance was created from attached instance on behalf of a user - - - :param is_implicit: The is_implicit of this AttachmentDetails. - :type: bool - """ - self._is_implicit = is_implicit - - @property - def target_id(self): - """ - **[Required]** Gets the target_id of this AttachmentDetails. - The OCID of the target instance (which could be any other OCI PaaS/SaaS resource), to which this instance is attached. - - - :return: The target_id of this AttachmentDetails. - :rtype: str - """ - return self._target_id - - @target_id.setter - def target_id(self, target_id): - """ - Sets the target_id of this AttachmentDetails. - The OCID of the target instance (which could be any other OCI PaaS/SaaS resource), to which this instance is attached. - - - :param target_id: The target_id of this AttachmentDetails. - :type: str - """ - self._target_id = target_id - - @property - def target_instance_url(self): - """ - **[Required]** Gets the target_instance_url of this AttachmentDetails. - The dataplane instance URL of the attached instance - - - :return: The target_instance_url of this AttachmentDetails. - :rtype: str - """ - return self._target_instance_url - - @target_instance_url.setter - def target_instance_url(self, target_instance_url): - """ - Sets the target_instance_url of this AttachmentDetails. - The dataplane instance URL of the attached instance - - - :param target_instance_url: The target_instance_url of this AttachmentDetails. - :type: str - """ - self._target_instance_url = target_instance_url - - @property - def target_service_type(self): - """ - **[Required]** Gets the target_service_type of this AttachmentDetails. - The type of the target instance, such as \"FUSION\". - - - :return: The target_service_type of this AttachmentDetails. - :rtype: str - """ - return self._target_service_type - - @target_service_type.setter - def target_service_type(self, target_service_type): - """ - Sets the target_service_type of this AttachmentDetails. - The type of the target instance, such as \"FUSION\". - - - :param target_service_type: The target_service_type of this AttachmentDetails. - :type: str - """ - self._target_service_type = target_service_type - - def __repr__(self): - return formatted_flat_dict(self) - - def __eq__(self, other): - if other is None: - return False - - return self.__dict__ == other.__dict__ - - def __ne__(self, other): - return not self == other diff --git a/src/oci/visual_builder/models/create_vb_instance_details.py b/src/oci/visual_builder/models/create_vb_instance_details.py index 1fa053441f..7d9d6c1417 100644 --- a/src/oci/visual_builder/models/create_vb_instance_details.py +++ b/src/oci/visual_builder/models/create_vb_instance_details.py @@ -73,6 +73,10 @@ def __init__(self, **kwargs): Allowed values for this property are: "UCM", "GOV", "VB4SAAS" :type consumption_model: str + :param network_endpoint_details: + The value to assign to the network_endpoint_details property of this CreateVbInstanceDetails. + :type network_endpoint_details: oci.visual_builder.models.NetworkEndpointDetails + """ self.swagger_types = { 'display_name': 'str', @@ -84,7 +88,8 @@ def __init__(self, **kwargs): 'is_visual_builder_enabled': 'bool', 'custom_endpoint': 'CreateCustomEndpointDetails', 'alternate_custom_endpoints': 'list[CreateCustomEndpointDetails]', - 'consumption_model': 'str' + 'consumption_model': 'str', + 'network_endpoint_details': 'NetworkEndpointDetails' } self.attribute_map = { @@ -97,7 +102,8 @@ def __init__(self, **kwargs): 'is_visual_builder_enabled': 'isVisualBuilderEnabled', 'custom_endpoint': 'customEndpoint', 'alternate_custom_endpoints': 'alternateCustomEndpoints', - 'consumption_model': 'consumptionModel' + 'consumption_model': 'consumptionModel', + 'network_endpoint_details': 'networkEndpointDetails' } self._display_name = None @@ -110,6 +116,7 @@ def __init__(self, **kwargs): self._custom_endpoint = None self._alternate_custom_endpoints = None self._consumption_model = None + self._network_endpoint_details = None @property def display_name(self): @@ -364,6 +371,26 @@ def consumption_model(self, consumption_model): ) self._consumption_model = consumption_model + @property + def network_endpoint_details(self): + """ + Gets the network_endpoint_details of this CreateVbInstanceDetails. + + :return: The network_endpoint_details of this CreateVbInstanceDetails. + :rtype: oci.visual_builder.models.NetworkEndpointDetails + """ + return self._network_endpoint_details + + @network_endpoint_details.setter + def network_endpoint_details(self, network_endpoint_details): + """ + Sets the network_endpoint_details of this CreateVbInstanceDetails. + + :param network_endpoint_details: The network_endpoint_details of this CreateVbInstanceDetails. + :type: oci.visual_builder.models.NetworkEndpointDetails + """ + self._network_endpoint_details = network_endpoint_details + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/visual_builder/models/idcs_info_details.py b/src/oci/visual_builder/models/idcs_info_details.py deleted file mode 100644 index 5f38eb381f..0000000000 --- a/src/oci/visual_builder/models/idcs_info_details.py +++ /dev/null @@ -1,198 +0,0 @@ -# coding: utf-8 -# Copyright (c) 2016, 2024, 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. - -# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 - - -from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 -from oci.decorators import init_model_state_from_kwargs - - -@init_model_state_from_kwargs -class IdcsInfoDetails(object): - """ - Information for IDCS access - """ - - def __init__(self, **kwargs): - """ - Initializes a new IdcsInfoDetails object with values from keyword arguments. - The following keyword arguments are supported (corresponding to the getters/setters of this class): - - :param idcs_app_location_url: - The value to assign to the idcs_app_location_url property of this IdcsInfoDetails. - :type idcs_app_location_url: str - - :param idcs_app_display_name: - The value to assign to the idcs_app_display_name property of this IdcsInfoDetails. - :type idcs_app_display_name: str - - :param idcs_app_id: - The value to assign to the idcs_app_id property of this IdcsInfoDetails. - :type idcs_app_id: str - - :param idcs_app_name: - The value to assign to the idcs_app_name property of this IdcsInfoDetails. - :type idcs_app_name: str - - :param instance_primary_audience_url: - The value to assign to the instance_primary_audience_url property of this IdcsInfoDetails. - :type instance_primary_audience_url: str - - """ - self.swagger_types = { - 'idcs_app_location_url': 'str', - 'idcs_app_display_name': 'str', - 'idcs_app_id': 'str', - 'idcs_app_name': 'str', - 'instance_primary_audience_url': 'str' - } - - self.attribute_map = { - 'idcs_app_location_url': 'idcsAppLocationUrl', - 'idcs_app_display_name': 'idcsAppDisplayName', - 'idcs_app_id': 'idcsAppId', - 'idcs_app_name': 'idcsAppName', - 'instance_primary_audience_url': 'instancePrimaryAudienceUrl' - } - - self._idcs_app_location_url = None - self._idcs_app_display_name = None - self._idcs_app_id = None - self._idcs_app_name = None - self._instance_primary_audience_url = None - - @property - def idcs_app_location_url(self): - """ - **[Required]** Gets the idcs_app_location_url of this IdcsInfoDetails. - URL for the location of the IDCS Application (used by IDCS APIs) - - - :return: The idcs_app_location_url of this IdcsInfoDetails. - :rtype: str - """ - return self._idcs_app_location_url - - @idcs_app_location_url.setter - def idcs_app_location_url(self, idcs_app_location_url): - """ - Sets the idcs_app_location_url of this IdcsInfoDetails. - URL for the location of the IDCS Application (used by IDCS APIs) - - - :param idcs_app_location_url: The idcs_app_location_url of this IdcsInfoDetails. - :type: str - """ - self._idcs_app_location_url = idcs_app_location_url - - @property - def idcs_app_display_name(self): - """ - **[Required]** Gets the idcs_app_display_name of this IdcsInfoDetails. - The IDCS application display name associated with the instance - - - :return: The idcs_app_display_name of this IdcsInfoDetails. - :rtype: str - """ - return self._idcs_app_display_name - - @idcs_app_display_name.setter - def idcs_app_display_name(self, idcs_app_display_name): - """ - Sets the idcs_app_display_name of this IdcsInfoDetails. - The IDCS application display name associated with the instance - - - :param idcs_app_display_name: The idcs_app_display_name of this IdcsInfoDetails. - :type: str - """ - self._idcs_app_display_name = idcs_app_display_name - - @property - def idcs_app_id(self): - """ - **[Required]** Gets the idcs_app_id of this IdcsInfoDetails. - The IDCS application ID associated with the instance - - - :return: The idcs_app_id of this IdcsInfoDetails. - :rtype: str - """ - return self._idcs_app_id - - @idcs_app_id.setter - def idcs_app_id(self, idcs_app_id): - """ - Sets the idcs_app_id of this IdcsInfoDetails. - The IDCS application ID associated with the instance - - - :param idcs_app_id: The idcs_app_id of this IdcsInfoDetails. - :type: str - """ - self._idcs_app_id = idcs_app_id - - @property - def idcs_app_name(self): - """ - **[Required]** Gets the idcs_app_name of this IdcsInfoDetails. - The IDCS application name associated with the instance - - - :return: The idcs_app_name of this IdcsInfoDetails. - :rtype: str - """ - return self._idcs_app_name - - @idcs_app_name.setter - def idcs_app_name(self, idcs_app_name): - """ - Sets the idcs_app_name of this IdcsInfoDetails. - The IDCS application name associated with the instance - - - :param idcs_app_name: The idcs_app_name of this IdcsInfoDetails. - :type: str - """ - self._idcs_app_name = idcs_app_name - - @property - def instance_primary_audience_url(self): - """ - **[Required]** Gets the instance_primary_audience_url of this IdcsInfoDetails. - The URL used as the primary audience for visual builder flows in this instance - type: string - - - :return: The instance_primary_audience_url of this IdcsInfoDetails. - :rtype: str - """ - return self._instance_primary_audience_url - - @instance_primary_audience_url.setter - def instance_primary_audience_url(self, instance_primary_audience_url): - """ - Sets the instance_primary_audience_url of this IdcsInfoDetails. - The URL used as the primary audience for visual builder flows in this instance - type: string - - - :param instance_primary_audience_url: The instance_primary_audience_url of this IdcsInfoDetails. - :type: str - """ - self._instance_primary_audience_url = instance_primary_audience_url - - def __repr__(self): - return formatted_flat_dict(self) - - def __eq__(self, other): - if other is None: - return False - - return self.__dict__ == other.__dict__ - - def __ne__(self, other): - return not self == other diff --git a/src/oci/visual_builder/models/network_endpoint_details.py b/src/oci/visual_builder/models/network_endpoint_details.py new file mode 100644 index 0000000000..f8bae56b23 --- /dev/null +++ b/src/oci/visual_builder/models/network_endpoint_details.py @@ -0,0 +1,102 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class NetworkEndpointDetails(object): + """ + Base representation of a network endpoint. + In input payload to update an Visual Builder instance endpoint details, an empty payload will clear out any existing configuration for Public Visual Builder instance. + """ + + #: A constant which can be used with the network_endpoint_type property of a NetworkEndpointDetails. + #: This constant has a value of "PRIVATE" + NETWORK_ENDPOINT_TYPE_PRIVATE = "PRIVATE" + + def __init__(self, **kwargs): + """ + Initializes a new NetworkEndpointDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.visual_builder.models.PrivateEndpointDetails` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param network_endpoint_type: + The value to assign to the network_endpoint_type property of this NetworkEndpointDetails. + Allowed values for this property are: "PRIVATE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + :type network_endpoint_type: str + + """ + self.swagger_types = { + 'network_endpoint_type': 'str' + } + + self.attribute_map = { + 'network_endpoint_type': 'networkEndpointType' + } + + self._network_endpoint_type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['networkEndpointType'] + + if type == 'PRIVATE': + return 'PrivateEndpointDetails' + else: + return 'NetworkEndpointDetails' + + @property + def network_endpoint_type(self): + """ + **[Required]** Gets the network_endpoint_type of this NetworkEndpointDetails. + The type of network endpoint. + + Allowed values for this property are: "PRIVATE", 'UNKNOWN_ENUM_VALUE'. + Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. + + + :return: The network_endpoint_type of this NetworkEndpointDetails. + :rtype: str + """ + return self._network_endpoint_type + + @network_endpoint_type.setter + def network_endpoint_type(self, network_endpoint_type): + """ + Sets the network_endpoint_type of this NetworkEndpointDetails. + The type of network endpoint. + + + :param network_endpoint_type: The network_endpoint_type of this NetworkEndpointDetails. + :type: str + """ + allowed_values = ["PRIVATE"] + if not value_allowed_none_or_none_sentinel(network_endpoint_type, allowed_values): + network_endpoint_type = 'UNKNOWN_ENUM_VALUE' + self._network_endpoint_type = network_endpoint_type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/visual_builder/models/private_endpoint_details.py b/src/oci/visual_builder/models/private_endpoint_details.py new file mode 100644 index 0000000000..e78a947be6 --- /dev/null +++ b/src/oci/visual_builder/models/private_endpoint_details.py @@ -0,0 +1,144 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 + +from .network_endpoint_details import NetworkEndpointDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class PrivateEndpointDetails(NetworkEndpointDetails): + """ + Private endpoint configuration details. + """ + + def __init__(self, **kwargs): + """ + Initializes a new PrivateEndpointDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.visual_builder.models.PrivateEndpointDetails.network_endpoint_type` attribute + of this class is ``PRIVATE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param network_endpoint_type: + The value to assign to the network_endpoint_type property of this PrivateEndpointDetails. + Allowed values for this property are: "PRIVATE" + :type network_endpoint_type: str + + :param subnet_id: + The value to assign to the subnet_id property of this PrivateEndpointDetails. + :type subnet_id: str + + :param network_security_group_ids: + The value to assign to the network_security_group_ids property of this PrivateEndpointDetails. + :type network_security_group_ids: list[str] + + :param private_endpoint_ip: + The value to assign to the private_endpoint_ip property of this PrivateEndpointDetails. + :type private_endpoint_ip: str + + """ + self.swagger_types = { + 'network_endpoint_type': 'str', + 'subnet_id': 'str', + 'network_security_group_ids': 'list[str]', + 'private_endpoint_ip': 'str' + } + + self.attribute_map = { + 'network_endpoint_type': 'networkEndpointType', + 'subnet_id': 'subnetId', + 'network_security_group_ids': 'networkSecurityGroupIds', + 'private_endpoint_ip': 'privateEndpointIp' + } + + self._network_endpoint_type = None + self._subnet_id = None + self._network_security_group_ids = None + self._private_endpoint_ip = None + self._network_endpoint_type = 'PRIVATE' + + @property + def subnet_id(self): + """ + **[Required]** Gets the subnet_id of this PrivateEndpointDetails. + The subnet OCID for the private endpoint. + + + :return: The subnet_id of this PrivateEndpointDetails. + :rtype: str + """ + return self._subnet_id + + @subnet_id.setter + def subnet_id(self, subnet_id): + """ + Sets the subnet_id of this PrivateEndpointDetails. + The subnet OCID for the private endpoint. + + + :param subnet_id: The subnet_id of this PrivateEndpointDetails. + :type: str + """ + self._subnet_id = subnet_id + + @property + def network_security_group_ids(self): + """ + Gets the network_security_group_ids of this PrivateEndpointDetails. + Network Security Group OCIDs for the Private Endpoint. + + + :return: The network_security_group_ids of this PrivateEndpointDetails. + :rtype: list[str] + """ + return self._network_security_group_ids + + @network_security_group_ids.setter + def network_security_group_ids(self, network_security_group_ids): + """ + Sets the network_security_group_ids of this PrivateEndpointDetails. + Network Security Group OCIDs for the Private Endpoint. + + + :param network_security_group_ids: The network_security_group_ids of this PrivateEndpointDetails. + :type: list[str] + """ + self._network_security_group_ids = network_security_group_ids + + @property + def private_endpoint_ip(self): + """ + Gets the private_endpoint_ip of this PrivateEndpointDetails. + The IP address to be assigned to Private Endpoint + + + :return: The private_endpoint_ip of this PrivateEndpointDetails. + :rtype: str + """ + return self._private_endpoint_ip + + @private_endpoint_ip.setter + def private_endpoint_ip(self, private_endpoint_ip): + """ + Sets the private_endpoint_ip of this PrivateEndpointDetails. + The IP address to be assigned to Private Endpoint + + + :param private_endpoint_ip: The private_endpoint_ip of this PrivateEndpointDetails. + :type: str + """ + self._private_endpoint_ip = private_endpoint_ip + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/visual_builder/models/update_network_endpoint_details.py b/src/oci/visual_builder/models/update_network_endpoint_details.py new file mode 100644 index 0000000000..eb4b60af8c --- /dev/null +++ b/src/oci/visual_builder/models/update_network_endpoint_details.py @@ -0,0 +1,102 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 + + +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdateNetworkEndpointDetails(object): + """ + Base representation of a network endpoint. + In input payload to update an Visual Builder instance endpoint details, an empty payload will clear out any existing configuration for Public Visual Builder instance. + """ + + #: A constant which can be used with the network_endpoint_type property of a UpdateNetworkEndpointDetails. + #: This constant has a value of "PRIVATE" + NETWORK_ENDPOINT_TYPE_PRIVATE = "PRIVATE" + + def __init__(self, **kwargs): + """ + Initializes a new UpdateNetworkEndpointDetails object with values from keyword arguments. This class has the following subclasses and if you are using this class as input + to a service operations then you should favor using a subclass over the base class: + + * :class:`~oci.visual_builder.models.UpdatePrivateEndpointDetails` + + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param network_endpoint_type: + The value to assign to the network_endpoint_type property of this UpdateNetworkEndpointDetails. + Allowed values for this property are: "PRIVATE" + :type network_endpoint_type: str + + """ + self.swagger_types = { + 'network_endpoint_type': 'str' + } + + self.attribute_map = { + 'network_endpoint_type': 'networkEndpointType' + } + + self._network_endpoint_type = None + + @staticmethod + def get_subtype(object_dictionary): + """ + Given the hash representation of a subtype of this class, + use the info in the hash to return the class of the subtype. + """ + type = object_dictionary['networkEndpointType'] + + if type == 'PRIVATE': + return 'UpdatePrivateEndpointDetails' + else: + return 'UpdateNetworkEndpointDetails' + + @property + def network_endpoint_type(self): + """ + **[Required]** Gets the network_endpoint_type of this UpdateNetworkEndpointDetails. + The type of network endpoint. + + Allowed values for this property are: "PRIVATE" + + + :return: The network_endpoint_type of this UpdateNetworkEndpointDetails. + :rtype: str + """ + return self._network_endpoint_type + + @network_endpoint_type.setter + def network_endpoint_type(self, network_endpoint_type): + """ + Sets the network_endpoint_type of this UpdateNetworkEndpointDetails. + The type of network endpoint. + + + :param network_endpoint_type: The network_endpoint_type of this UpdateNetworkEndpointDetails. + :type: str + """ + allowed_values = ["PRIVATE"] + if not value_allowed_none_or_none_sentinel(network_endpoint_type, allowed_values): + raise ValueError( + f"Invalid value for `network_endpoint_type`, must be None or one of {allowed_values}" + ) + self._network_endpoint_type = network_endpoint_type + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/visual_builder/models/update_private_endpoint_details.py b/src/oci/visual_builder/models/update_private_endpoint_details.py new file mode 100644 index 0000000000..08e3b14db6 --- /dev/null +++ b/src/oci/visual_builder/models/update_private_endpoint_details.py @@ -0,0 +1,113 @@ +# coding: utf-8 +# Copyright (c) 2016, 2024, 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. + +# NOTE: This class is auto generated by OracleSDKGenerator. DO NOT EDIT. API Version: 20210601 + +from .update_network_endpoint_details import UpdateNetworkEndpointDetails +from oci.util import formatted_flat_dict, NONE_SENTINEL, value_allowed_none_or_none_sentinel # noqa: F401 +from oci.decorators import init_model_state_from_kwargs + + +@init_model_state_from_kwargs +class UpdatePrivateEndpointDetails(UpdateNetworkEndpointDetails): + """ + Private endpoint update configuration details. + """ + + def __init__(self, **kwargs): + """ + Initializes a new UpdatePrivateEndpointDetails object with values from keyword arguments. The default value of the :py:attr:`~oci.visual_builder.models.UpdatePrivateEndpointDetails.network_endpoint_type` attribute + of this class is ``PRIVATE`` and it should not be changed. + The following keyword arguments are supported (corresponding to the getters/setters of this class): + + :param network_endpoint_type: + The value to assign to the network_endpoint_type property of this UpdatePrivateEndpointDetails. + Allowed values for this property are: "PRIVATE" + :type network_endpoint_type: str + + :param subnet_id: + The value to assign to the subnet_id property of this UpdatePrivateEndpointDetails. + :type subnet_id: str + + :param network_security_group_ids: + The value to assign to the network_security_group_ids property of this UpdatePrivateEndpointDetails. + :type network_security_group_ids: list[str] + + """ + self.swagger_types = { + 'network_endpoint_type': 'str', + 'subnet_id': 'str', + 'network_security_group_ids': 'list[str]' + } + + self.attribute_map = { + 'network_endpoint_type': 'networkEndpointType', + 'subnet_id': 'subnetId', + 'network_security_group_ids': 'networkSecurityGroupIds' + } + + self._network_endpoint_type = None + self._subnet_id = None + self._network_security_group_ids = None + self._network_endpoint_type = 'PRIVATE' + + @property + def subnet_id(self): + """ + Gets the subnet_id of this UpdatePrivateEndpointDetails. + The subnet OCID for the private endpoint. If provided then a new Private Endpoint will be created and a new Private Endpoint IP may be generated. + + + :return: The subnet_id of this UpdatePrivateEndpointDetails. + :rtype: str + """ + return self._subnet_id + + @subnet_id.setter + def subnet_id(self, subnet_id): + """ + Sets the subnet_id of this UpdatePrivateEndpointDetails. + The subnet OCID for the private endpoint. If provided then a new Private Endpoint will be created and a new Private Endpoint IP may be generated. + + + :param subnet_id: The subnet_id of this UpdatePrivateEndpointDetails. + :type: str + """ + self._subnet_id = subnet_id + + @property + def network_security_group_ids(self): + """ + Gets the network_security_group_ids of this UpdatePrivateEndpointDetails. + Network Security Group OCIDs for the Private Endpoint. + + + :return: The network_security_group_ids of this UpdatePrivateEndpointDetails. + :rtype: list[str] + """ + return self._network_security_group_ids + + @network_security_group_ids.setter + def network_security_group_ids(self, network_security_group_ids): + """ + Sets the network_security_group_ids of this UpdatePrivateEndpointDetails. + Network Security Group OCIDs for the Private Endpoint. + + + :param network_security_group_ids: The network_security_group_ids of this UpdatePrivateEndpointDetails. + :type: list[str] + """ + self._network_security_group_ids = network_security_group_ids + + def __repr__(self): + return formatted_flat_dict(self) + + def __eq__(self, other): + if other is None: + return False + + return self.__dict__ == other.__dict__ + + def __ne__(self, other): + return not self == other diff --git a/src/oci/visual_builder/models/update_vb_instance_details.py b/src/oci/visual_builder/models/update_vb_instance_details.py index abd16169c8..90326a6af6 100644 --- a/src/oci/visual_builder/models/update_vb_instance_details.py +++ b/src/oci/visual_builder/models/update_vb_instance_details.py @@ -52,6 +52,10 @@ def __init__(self, **kwargs): The value to assign to the alternate_custom_endpoints property of this UpdateVbInstanceDetails. :type alternate_custom_endpoints: list[oci.visual_builder.models.UpdateCustomEndpointDetails] + :param network_endpoint_details: + The value to assign to the network_endpoint_details property of this UpdateVbInstanceDetails. + :type network_endpoint_details: oci.visual_builder.models.UpdateNetworkEndpointDetails + """ self.swagger_types = { 'display_name': 'str', @@ -61,7 +65,8 @@ def __init__(self, **kwargs): 'node_count': 'int', 'is_visual_builder_enabled': 'bool', 'custom_endpoint': 'UpdateCustomEndpointDetails', - 'alternate_custom_endpoints': 'list[UpdateCustomEndpointDetails]' + 'alternate_custom_endpoints': 'list[UpdateCustomEndpointDetails]', + 'network_endpoint_details': 'UpdateNetworkEndpointDetails' } self.attribute_map = { @@ -72,7 +77,8 @@ def __init__(self, **kwargs): 'node_count': 'nodeCount', 'is_visual_builder_enabled': 'isVisualBuilderEnabled', 'custom_endpoint': 'customEndpoint', - 'alternate_custom_endpoints': 'alternateCustomEndpoints' + 'alternate_custom_endpoints': 'alternateCustomEndpoints', + 'network_endpoint_details': 'networkEndpointDetails' } self._display_name = None @@ -83,6 +89,7 @@ def __init__(self, **kwargs): self._is_visual_builder_enabled = None self._custom_endpoint = None self._alternate_custom_endpoints = None + self._network_endpoint_details = None @property def display_name(self): @@ -282,6 +289,26 @@ def alternate_custom_endpoints(self, alternate_custom_endpoints): """ self._alternate_custom_endpoints = alternate_custom_endpoints + @property + def network_endpoint_details(self): + """ + Gets the network_endpoint_details of this UpdateVbInstanceDetails. + + :return: The network_endpoint_details of this UpdateVbInstanceDetails. + :rtype: oci.visual_builder.models.UpdateNetworkEndpointDetails + """ + return self._network_endpoint_details + + @network_endpoint_details.setter + def network_endpoint_details(self, network_endpoint_details): + """ + Sets the network_endpoint_details of this UpdateVbInstanceDetails. + + :param network_endpoint_details: The network_endpoint_details of this UpdateVbInstanceDetails. + :type: oci.visual_builder.models.UpdateNetworkEndpointDetails + """ + self._network_endpoint_details = network_endpoint_details + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/visual_builder/models/vb_instance.py b/src/oci/visual_builder/models/vb_instance.py index 9d0e7fd505..1161eccc67 100644 --- a/src/oci/visual_builder/models/vb_instance.py +++ b/src/oci/visual_builder/models/vb_instance.py @@ -128,14 +128,6 @@ def __init__(self, **kwargs): Any unrecognized values returned by a service will be mapped to 'UNKNOWN_ENUM_VALUE'. :type consumption_model: str - :param idcs_info: - The value to assign to the idcs_info property of this VbInstance. - :type idcs_info: oci.visual_builder.models.IdcsInfoDetails - - :param attachments: - The value to assign to the attachments property of this VbInstance. - :type attachments: list[oci.visual_builder.models.AttachmentDetails] - :param service_nat_gateway_ip: The value to assign to the service_nat_gateway_ip property of this VbInstance. :type service_nat_gateway_ip: str @@ -152,6 +144,10 @@ def __init__(self, **kwargs): The value to assign to the management_vcn_id property of this VbInstance. :type management_vcn_id: str + :param network_endpoint_details: + The value to assign to the network_endpoint_details property of this VbInstance. + :type network_endpoint_details: oci.visual_builder.models.NetworkEndpointDetails + """ self.swagger_types = { 'id': 'str', @@ -170,12 +166,11 @@ def __init__(self, **kwargs): 'custom_endpoint': 'CustomEndpointDetails', 'alternate_custom_endpoints': 'list[CustomEndpointDetails]', 'consumption_model': 'str', - 'idcs_info': 'IdcsInfoDetails', - 'attachments': 'list[AttachmentDetails]', 'service_nat_gateway_ip': 'str', 'management_nat_gateway_ip': 'str', 'service_vcn_id': 'str', - 'management_vcn_id': 'str' + 'management_vcn_id': 'str', + 'network_endpoint_details': 'NetworkEndpointDetails' } self.attribute_map = { @@ -195,12 +190,11 @@ def __init__(self, **kwargs): 'custom_endpoint': 'customEndpoint', 'alternate_custom_endpoints': 'alternateCustomEndpoints', 'consumption_model': 'consumptionModel', - 'idcs_info': 'idcsInfo', - 'attachments': 'attachments', 'service_nat_gateway_ip': 'serviceNatGatewayIp', 'management_nat_gateway_ip': 'managementNatGatewayIp', 'service_vcn_id': 'serviceVcnId', - 'management_vcn_id': 'managementVcnId' + 'management_vcn_id': 'managementVcnId', + 'network_endpoint_details': 'networkEndpointDetails' } self._id = None @@ -219,12 +213,11 @@ def __init__(self, **kwargs): self._custom_endpoint = None self._alternate_custom_endpoints = None self._consumption_model = None - self._idcs_info = None - self._attachments = None self._service_nat_gateway_ip = None self._management_nat_gateway_ip = None self._service_vcn_id = None self._management_vcn_id = None + self._network_endpoint_details = None @property def id(self): @@ -624,50 +617,6 @@ def consumption_model(self, consumption_model): consumption_model = 'UNKNOWN_ENUM_VALUE' self._consumption_model = consumption_model - @property - def idcs_info(self): - """ - Gets the idcs_info of this VbInstance. - - :return: The idcs_info of this VbInstance. - :rtype: oci.visual_builder.models.IdcsInfoDetails - """ - return self._idcs_info - - @idcs_info.setter - def idcs_info(self, idcs_info): - """ - Sets the idcs_info of this VbInstance. - - :param idcs_info: The idcs_info of this VbInstance. - :type: oci.visual_builder.models.IdcsInfoDetails - """ - self._idcs_info = idcs_info - - @property - def attachments(self): - """ - Gets the attachments of this VbInstance. - A list of associated attachments to other services - - - :return: The attachments of this VbInstance. - :rtype: list[oci.visual_builder.models.AttachmentDetails] - """ - return self._attachments - - @attachments.setter - def attachments(self, attachments): - """ - Sets the attachments of this VbInstance. - A list of associated attachments to other services - - - :param attachments: The attachments of this VbInstance. - :type: list[oci.visual_builder.models.AttachmentDetails] - """ - self._attachments = attachments - @property def service_nat_gateway_ip(self): """ @@ -764,6 +713,26 @@ def management_vcn_id(self, management_vcn_id): """ self._management_vcn_id = management_vcn_id + @property + def network_endpoint_details(self): + """ + Gets the network_endpoint_details of this VbInstance. + + :return: The network_endpoint_details of this VbInstance. + :rtype: oci.visual_builder.models.NetworkEndpointDetails + """ + return self._network_endpoint_details + + @network_endpoint_details.setter + def network_endpoint_details(self, network_endpoint_details): + """ + Sets the network_endpoint_details of this VbInstance. + + :param network_endpoint_details: The network_endpoint_details of this VbInstance. + :type: oci.visual_builder.models.NetworkEndpointDetails + """ + self._network_endpoint_details = network_endpoint_details + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/visual_builder/models/vb_instance_summary.py b/src/oci/visual_builder/models/vb_instance_summary.py index 987b873d20..d3f6cb1dae 100644 --- a/src/oci/visual_builder/models/vb_instance_summary.py +++ b/src/oci/visual_builder/models/vb_instance_summary.py @@ -128,6 +128,10 @@ def __init__(self, **kwargs): The value to assign to the system_tags property of this VbInstanceSummary. :type system_tags: dict(str, dict(str, object)) + :param network_endpoint_details: + The value to assign to the network_endpoint_details property of this VbInstanceSummary. + :type network_endpoint_details: oci.visual_builder.models.NetworkEndpointDetails + """ self.swagger_types = { 'id': 'str', @@ -145,7 +149,8 @@ def __init__(self, **kwargs): 'consumption_model': 'str', 'freeform_tags': 'dict(str, str)', 'defined_tags': 'dict(str, dict(str, object))', - 'system_tags': 'dict(str, dict(str, object))' + 'system_tags': 'dict(str, dict(str, object))', + 'network_endpoint_details': 'NetworkEndpointDetails' } self.attribute_map = { @@ -164,7 +169,8 @@ def __init__(self, **kwargs): 'consumption_model': 'consumptionModel', 'freeform_tags': 'freeformTags', 'defined_tags': 'definedTags', - 'system_tags': 'systemTags' + 'system_tags': 'systemTags', + 'network_endpoint_details': 'networkEndpointDetails' } self._id = None @@ -183,6 +189,7 @@ def __init__(self, **kwargs): self._freeform_tags = None self._defined_tags = None self._system_tags = None + self._network_endpoint_details = None @property def id(self): @@ -582,6 +589,26 @@ def system_tags(self, system_tags): """ self._system_tags = system_tags + @property + def network_endpoint_details(self): + """ + Gets the network_endpoint_details of this VbInstanceSummary. + + :return: The network_endpoint_details of this VbInstanceSummary. + :rtype: oci.visual_builder.models.NetworkEndpointDetails + """ + return self._network_endpoint_details + + @network_endpoint_details.setter + def network_endpoint_details(self, network_endpoint_details): + """ + Sets the network_endpoint_details of this VbInstanceSummary. + + :param network_endpoint_details: The network_endpoint_details of this VbInstanceSummary. + :type: oci.visual_builder.models.NetworkEndpointDetails + """ + self._network_endpoint_details = network_endpoint_details + def __repr__(self): return formatted_flat_dict(self) diff --git a/src/oci/visual_builder/vb_instance_client.py b/src/oci/visual_builder/vb_instance_client.py index ab2c5341a3..5864d7bb24 100644 --- a/src/oci/visual_builder/vb_instance_client.py +++ b/src/oci/visual_builder/vb_instance_client.py @@ -1128,6 +1128,122 @@ def list_work_requests(self, compartment_id, **kwargs): api_reference_link=api_reference_link, required_arguments=required_arguments) + def reconfigure_private_endpoint_vb_instance(self, vb_instance_id, **kwargs): + """ + Reconfigures the Private Endpoint associated with the private visual builder instance. Use this action in case the Private Endpoint is not working and needs to be reset. + The VB instance has to be in ACTIVE state and should be a private instance to perform this operation. + If the previous state is not ACTIVE, then the state of the vbInstance will not be changed and a 409 response returned. + + + :param str vb_instance_id: (required) + Unique Vb Instance identifier. + + :param str if_match: (optional) + For optimistic concurrency control. In the PUT or DELETE call + for a resource, set the `if-match` parameter to the value of the + etag from a previous GET or POST response for that resource. + The resource will be updated or deleted only if the etag you + provide matches the resource's current etag value. + + :param str opc_request_id: (optional) + The client request ID for tracing. + + :param str opc_retry_token: (optional) + A token that uniquely identifies a request so it can be retried in case + of a timeout or server error without risk of executing that same action + again. Retry tokens expire after 24 hours, but can be invalidated before + then due to conflicting operations. For example, if a resource has been + deleted and purged from the system, then a retry of the original creation + request might be rejected. + + :param obj retry_strategy: (optional) + A retry strategy to apply to this specific operation/call. This will override any retry strategy set at the client-level. + + This should be one of the strategies available in the :py:mod:`~oci.retry` module. This operation will not retry by default, users can also use the convenient :py:data:`~oci.retry.DEFAULT_RETRY_STRATEGY` provided by the SDK to enable retries for it. + The specifics of the default retry strategy are described `here `__. + + To have this operation explicitly not perform any retries, pass an instance of :py:class:`~oci.retry.NoneRetryStrategy`. + + :param bool allow_control_chars: (optional) + allow_control_chars is a boolean to indicate whether or not this request should allow control characters in the response object. + By default, the response will not allow control characters in strings + + :return: A :class:`~oci.response.Response` object with data of type None + :rtype: :class:`~oci.response.Response` + + :example: + Click `here `__ to see an example of how to use reconfigure_private_endpoint_vb_instance API. + """ + # Required path and query arguments. These are in camelCase to replace values in service endpoints. + required_arguments = ['vbInstanceId'] + resource_path = "/vbInstances/{vbInstanceId}/actions/reconfigurePrivateEndpoint" + method = "POST" + operation_name = "reconfigure_private_endpoint_vb_instance" + api_reference_link = "https://docs.oracle.com/iaas/api/#/en/visual-builder/20210601/VbInstance/ReconfigurePrivateEndpointVbInstance" + + # Don't accept unknown kwargs + expected_kwargs = [ + "allow_control_chars", + "retry_strategy", + "if_match", + "opc_request_id", + "opc_retry_token" + ] + extra_kwargs = [_key for _key in six.iterkeys(kwargs) if _key not in expected_kwargs] + if extra_kwargs: + raise ValueError( + f"reconfigure_private_endpoint_vb_instance got unknown kwargs: {extra_kwargs!r}") + + path_params = { + "vbInstanceId": vb_instance_id + } + + path_params = {k: v for (k, v) in six.iteritems(path_params) if v is not missing} + + for (k, v) in six.iteritems(path_params): + if v is None or (isinstance(v, six.string_types) and len(v.strip()) == 0): + raise ValueError(f'Parameter {k} cannot be None, whitespace or empty string') + + header_params = { + "accept": "application/json", + "content-type": "application/json", + "if-match": kwargs.get("if_match", missing), + "opc-request-id": kwargs.get("opc_request_id", missing), + "opc-retry-token": kwargs.get("opc_retry_token", missing) + } + header_params = {k: v for (k, v) in six.iteritems(header_params) if v is not missing and v is not None} + + retry_strategy = self.base_client.get_preferred_retry_strategy( + operation_retry_strategy=kwargs.get('retry_strategy'), + client_retry_strategy=self.retry_strategy + ) + + if retry_strategy: + if not isinstance(retry_strategy, retry.NoneRetryStrategy): + self.base_client.add_opc_retry_token_if_needed(header_params) + self.base_client.add_opc_client_retries_header(header_params) + retry_strategy.add_circuit_breaker_callback(self.circuit_breaker_callback) + return retry_strategy.make_retrying_call( + self.base_client.call_api, + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + else: + return self.base_client.call_api( + resource_path=resource_path, + method=method, + path_params=path_params, + header_params=header_params, + allow_control_chars=kwargs.get('allow_control_chars'), + operation_name=operation_name, + api_reference_link=api_reference_link, + required_arguments=required_arguments) + def request_summarized_applications(self, request_summarized_applications_details, vb_instance_id, **kwargs): """ Summarizes the applications for a vb instance. diff --git a/src/oci/visual_builder/vb_instance_client_composite_operations.py b/src/oci/visual_builder/vb_instance_client_composite_operations.py index cb9e7ada0e..614530ca04 100644 --- a/src/oci/visual_builder/vb_instance_client_composite_operations.py +++ b/src/oci/visual_builder/vb_instance_client_composite_operations.py @@ -153,6 +153,45 @@ def delete_vb_instance_and_wait_for_state(self, vb_instance_id, wait_for_states= except Exception as e: raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def reconfigure_private_endpoint_vb_instance_and_wait_for_state(self, vb_instance_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): + """ + Calls :py:func:`~oci.visual_builder.VbInstanceClient.reconfigure_private_endpoint_vb_instance` and waits for the :py:class:`~oci.visual_builder.models.WorkRequest` + to enter the given state(s). + + :param str vb_instance_id: (required) + Unique Vb Instance identifier. + + :param list[str] wait_for_states: + An array of states to wait on. These should be valid values for :py:attr:`~oci.visual_builder.models.WorkRequest.status` + + :param dict operation_kwargs: + A dictionary of keyword arguments to pass to :py:func:`~oci.visual_builder.VbInstanceClient.reconfigure_private_endpoint_vb_instance` + + :param dict waiter_kwargs: + A dictionary of keyword arguments to pass to the :py:func:`oci.wait_until` function. For example, you could pass ``max_interval_seconds`` or ``max_interval_seconds`` + as dictionary keys to modify how long the waiter function will wait between retries and the maximum amount of time it will wait + """ + operation_result = self.client.reconfigure_private_endpoint_vb_instance(vb_instance_id, **operation_kwargs) + if not wait_for_states: + return operation_result + lowered_wait_for_states = [w.lower() for w in wait_for_states] + if 'opc-work-request-id' not in operation_result.headers: + return operation_result + wait_for_resource_id = operation_result.headers['opc-work-request-id'] + + try: + waiter_result = oci.wait_until( + self.client, + self.client.get_work_request(wait_for_resource_id), + evaluate_response=lambda r: getattr(r.data, 'status') and getattr(r.data, 'status').lower() in lowered_wait_for_states, + **waiter_kwargs + ) + result_to_return = waiter_result + + return result_to_return + except Exception as e: + raise oci.exceptions.CompositeOperationError(partial_results=[operation_result], cause=e) + def start_vb_instance_and_wait_for_state(self, vb_instance_id, wait_for_states=[], operation_kwargs={}, waiter_kwargs={}): """ Calls :py:func:`~oci.visual_builder.VbInstanceClient.start_vb_instance` and waits for the :py:class:`~oci.visual_builder.models.WorkRequest`