oci 2.136.0__py3-none-any.whl → 2.137.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- oci/_vendor/jwt/__init__.py +65 -26
- oci/_vendor/jwt/algorithms.py +404 -130
- oci/_vendor/jwt/api_jwk.py +108 -0
- oci/_vendor/jwt/api_jws.py +153 -106
- oci/_vendor/jwt/api_jwt.py +146 -137
- oci/_vendor/jwt/exceptions.py +13 -6
- oci/_vendor/jwt/help.py +16 -15
- oci/_vendor/jwt/jwks_client.py +64 -0
- oci/_vendor/jwt/utils.py +101 -54
- oci/access_governance_cp/access_governance_cp_client.py +8 -8
- oci/adm/application_dependency_management_client.py +36 -36
- oci/ai_anomaly_detection/anomaly_detection_client.py +36 -36
- oci/ai_document/ai_service_document_client.py +26 -26
- oci/ai_language/ai_service_language_client.py +44 -44
- oci/ai_speech/ai_service_speech_client.py +19 -19
- oci/ai_vision/ai_service_vision_client.py +25 -25
- oci/analytics/analytics_client.py +24 -24
- oci/announcements_service/announcement_client.py +5 -5
- oci/announcements_service/announcement_subscription_client.py +9 -9
- oci/announcements_service/announcements_preferences_client.py +4 -4
- oci/announcements_service/service_client.py +1 -1
- oci/apigateway/api_gateway_client.py +21 -21
- oci/apigateway/deployment_client.py +6 -6
- oci/apigateway/gateway_client.py +6 -6
- oci/apigateway/subscribers_client.py +6 -6
- oci/apigateway/usage_plans_client.py +6 -6
- oci/apigateway/work_requests_client.py +5 -5
- oci/apm_config/config_client.py +9 -9
- oci/apm_control_plane/apm_domain_client.py +14 -14
- oci/apm_synthetics/apm_synthetic_client.py +28 -28
- oci/apm_traces/attributes_client.py +8 -8
- oci/apm_traces/query_client.py +2 -2
- oci/apm_traces/trace_client.py +4 -4
- oci/appmgmt_control/appmgmt_control_client.py +8 -8
- oci/artifacts/artifacts_client.py +32 -32
- oci/audit/audit_client.py +3 -3
- oci/auth/security_token_container.py +1 -1
- oci/autoscaling/auto_scaling_client.py +11 -11
- oci/bastion/bastion_client.py +15 -15
- oci/bds/bds_client.py +72 -72
- oci/blockchain/blockchain_platform_client.py +27 -27
- oci/budget/budget_client.py +10 -10
- oci/capacity_management/capacity_management_client.py +32 -32
- oci/certificates/certificates_client.py +5 -5
- oci/certificates_management/certificates_management_client.py +32 -32
- oci/cims/incident_client.py +8 -8
- oci/cloud_bridge/common_client.py +5 -5
- oci/cloud_bridge/discovery_client.py +160 -14
- oci/cloud_bridge/inventory_client.py +20 -20
- oci/cloud_bridge/models/__init__.py +48 -2
- oci/cloud_bridge/models/asset.py +19 -3
- oci/cloud_bridge/models/asset_source.py +11 -3
- oci/cloud_bridge/models/asset_source_credentials.py +17 -7
- oci/cloud_bridge/models/asset_source_summary.py +11 -3
- oci/cloud_bridge/models/asset_summary.py +11 -3
- oci/cloud_bridge/models/aws_asset_source.py +359 -0
- oci/cloud_bridge/models/aws_asset_source_summary.py +205 -0
- oci/cloud_bridge/models/aws_ebs_asset.py +170 -0
- oci/cloud_bridge/models/aws_ebs_properties.py +382 -0
- oci/cloud_bridge/models/aws_ec2_asset.py +278 -0
- oci/cloud_bridge/models/aws_ec2_properties.py +1056 -0
- oci/cloud_bridge/models/create_asset_details.py +19 -3
- oci/cloud_bridge/models/create_asset_source_details.py +11 -3
- oci/cloud_bridge/models/create_aws_asset_source_details.py +323 -0
- oci/cloud_bridge/models/create_aws_ebs_asset_details.py +134 -0
- oci/cloud_bridge/models/create_aws_ec2_asset_details.py +242 -0
- oci/cloud_bridge/models/create_vm_ware_asset_source_details.py +2 -2
- oci/cloud_bridge/models/create_vmware_vm_asset_details.py +5 -5
- oci/cloud_bridge/models/group_identifier.py +103 -0
- oci/cloud_bridge/models/import_inventory_via_assets_details.py +13 -5
- oci/cloud_bridge/models/instance_network_interface.py +498 -0
- oci/cloud_bridge/models/instance_network_interface_association.py +196 -0
- oci/cloud_bridge/models/instance_network_interface_attachment.py +227 -0
- oci/cloud_bridge/models/instance_private_ip_address.py +161 -0
- oci/cloud_bridge/models/instance_state.py +103 -0
- oci/cloud_bridge/models/monthly_cost_summary.py +103 -0
- oci/cloud_bridge/models/placement.py +289 -0
- oci/cloud_bridge/models/supported_cloud_region_collection.py +72 -0
- oci/cloud_bridge/models/supported_cloud_region_summary.py +244 -0
- oci/cloud_bridge/models/tag.py +103 -0
- oci/cloud_bridge/models/update_asset_details.py +19 -3
- oci/cloud_bridge/models/update_asset_source_details.py +47 -4
- oci/cloud_bridge/models/update_aws_asset_source_details.py +240 -0
- oci/cloud_bridge/models/update_aws_ebs_asset_details.py +106 -0
- oci/cloud_bridge/models/update_aws_ec2_asset_details.py +214 -0
- oci/cloud_bridge/models/update_vm_asset_details.py +1 -1
- oci/cloud_bridge/models/update_vm_ware_asset_source_details.py +11 -39
- oci/cloud_bridge/models/update_vmware_vm_asset_details.py +1 -1
- oci/cloud_bridge/models/vm_asset.py +3 -3
- oci/cloud_bridge/models/vm_ware_asset_source.py +2 -2
- oci/cloud_bridge/models/vm_ware_asset_source_summary.py +2 -2
- oci/cloud_bridge/models/vmware_vm_asset.py +5 -5
- oci/cloud_bridge/models/volume_attachment.py +196 -0
- oci/cloud_bridge/models/work_request.py +15 -3
- oci/cloud_bridge/models/work_request_summary.py +15 -3
- oci/cloud_bridge/ocb_agent_svc_client.py +22 -138
- oci/cloud_bridge/ocb_agent_svc_client_composite_operations.py +0 -48
- oci/cloud_guard/cloud_guard_client.py +155 -155
- oci/cloud_migrations/migration_client.py +43 -43
- oci/cluster_placement_groups/cluster_placement_groups_cp_client.py +13 -13
- oci/compute_cloud_at_customer/compute_cloud_at_customer_client.py +12 -12
- oci/compute_instance_agent/compute_instance_agent_client.py +6 -6
- oci/compute_instance_agent/plugin_client.py +2 -2
- oci/compute_instance_agent/pluginconfig_client.py +1 -1
- oci/container_engine/container_engine_client.py +88 -88
- oci/container_engine/models/install_addon_details.py +33 -2
- oci/container_instances/container_instance_client.py +18 -18
- oci/core/blockstorage_client.py +60 -60
- oci/core/compute_client.py +102 -102
- oci/core/compute_management_client.py +32 -32
- oci/core/models/__init__.py +2 -0
- oci/core/models/virtual_circuit.py +29 -2
- oci/core/models/virtual_circuit_redundancy_metadata.py +202 -0
- oci/core/virtual_network_client.py +247 -247
- oci/dashboard_service/dashboard_client.py +6 -6
- oci/dashboard_service/dashboard_group_client.py +6 -6
- oci/data_catalog/data_catalog_client.py +149 -149
- oci/data_flow/data_flow_client.py +42 -42
- oci/data_integration/data_integration_client.py +163 -163
- oci/data_labeling_service/data_labeling_management_client.py +17 -17
- oci/data_labeling_service_dataplane/data_labeling_client.py +15 -15
- oci/data_safe/data_safe_client.py +292 -292
- oci/data_science/data_science_client.py +217 -93
- oci/data_science/data_science_client_composite_operations.py +41 -0
- oci/data_science/models/__init__.py +8 -0
- oci/data_science/models/backup_operation_details.py +154 -0
- oci/data_science/models/backup_setting.py +158 -0
- oci/data_science/models/create_model_details.py +56 -2
- oci/data_science/models/model.py +141 -2
- oci/data_science/models/model_summary.py +31 -0
- oci/data_science/models/retention_operation_details.py +267 -0
- oci/data_science/models/retention_setting.py +158 -0
- oci/data_science/models/update_model_details.py +56 -2
- oci/data_science/models/work_request.py +7 -3
- oci/data_science/models/work_request_summary.py +7 -3
- oci/database/database_client.py +396 -396
- oci/database/models/__init__.py +14 -0
- oci/database/models/autonomous_database.py +58 -0
- oci/database/models/autonomous_database_encryption_key_details.py +133 -0
- oci/database/models/autonomous_database_encryption_key_history_entry.py +99 -0
- oci/database/models/autonomous_database_summary.py +58 -0
- oci/database/models/aws_key_details.py +175 -0
- oci/database/models/azure_key_details.py +113 -0
- oci/database/models/create_autonomous_database_base.py +27 -0
- oci/database/models/create_autonomous_database_clone_details.py +7 -0
- oci/database/models/create_autonomous_database_details.py +7 -0
- oci/database/models/create_autonomous_database_from_backup_details.py +7 -0
- oci/database/models/create_autonomous_database_from_backup_timestamp_details.py +7 -0
- oci/database/models/create_cross_region_autonomous_database_data_guard_details.py +7 -0
- oci/database/models/create_cross_region_disaster_recovery_details.py +7 -0
- oci/database/models/create_cross_tenancy_disaster_recovery_details.py +7 -0
- oci/database/models/create_refreshable_autonomous_database_clone_details.py +7 -0
- oci/database/models/oci_key_details.py +119 -0
- oci/database/models/okv_key_details.py +206 -0
- oci/database/models/oracle_managed_key_details.py +51 -0
- oci/database/models/undelete_autonomous_database_details.py +7 -0
- oci/database/models/update_autonomous_database_details.py +29 -2
- oci/database_management/db_management_client.py +211 -211
- oci/database_management/diagnosability_client.py +4 -4
- oci/database_management/managed_my_sql_databases_client.py +7 -7
- oci/database_management/perfhub_client.py +1 -1
- oci/database_management/sql_tuning_client.py +17 -17
- oci/database_migration/database_migration_client.py +42 -42
- oci/database_tools/database_tools_client.py +23 -23
- oci/delegate_access_control/delegate_access_control_client.py +26 -26
- oci/delegate_access_control/work_request_client.py +4 -4
- oci/demand_signal/occ_demand_signal_client.py +7 -7
- oci/desktops/desktop_service_client.py +21 -21
- oci/devops/devops_client.py +141 -141
- oci/disaster_recovery/disaster_recovery_client.py +29 -29
- oci/dns/dns_client.py +54 -54
- oci/dts/appliance_export_job_client.py +6 -6
- oci/dts/shipping_vendors_client.py +1 -1
- oci/dts/transfer_appliance_client.py +8 -8
- oci/dts/transfer_appliance_entitlement_client.py +3 -3
- oci/dts/transfer_device_client.py +5 -5
- oci/dts/transfer_job_client.py +6 -6
- oci/dts/transfer_package_client.py +7 -7
- oci/em_warehouse/em_warehouse_client.py +13 -13
- oci/email/email_client.py +31 -31
- oci/email_data_plane/email_dp_client.py +1 -1
- oci/events/events_client.py +6 -6
- oci/file_storage/file_storage_client.py +3599 -1776
- oci/file_storage/file_storage_client_composite_operations.py +881 -223
- oci/file_storage/models/__init__.py +2 -0
- oci/file_storage/models/create_export_details.py +31 -0
- oci/file_storage/models/create_file_system_details.py +31 -0
- oci/file_storage/models/create_filesystem_snapshot_policy_details.py +33 -2
- oci/file_storage/models/create_ldap_bind_account_details.py +7 -0
- oci/file_storage/models/create_mount_target_details.py +31 -0
- oci/file_storage/models/create_outbound_connector_details.py +33 -2
- oci/file_storage/models/create_replication_details.py +33 -2
- oci/file_storage/models/create_snapshot_details.py +33 -2
- oci/file_storage/models/export.py +33 -2
- oci/file_storage/models/export_summary.py +33 -2
- oci/file_storage/models/file_system.py +31 -0
- oci/file_storage/models/file_system_summary.py +31 -0
- oci/file_storage/models/filesystem_snapshot_policy.py +31 -0
- oci/file_storage/models/filesystem_snapshot_policy_summary.py +31 -0
- oci/file_storage/models/ldap_bind_account.py +7 -0
- oci/file_storage/models/ldap_bind_account_summary.py +7 -0
- oci/file_storage/models/mount_target.py +31 -0
- oci/file_storage/models/mount_target_summary.py +31 -0
- oci/file_storage/models/outbound_connector.py +31 -0
- oci/file_storage/models/outbound_connector_summary.py +31 -0
- oci/file_storage/models/replication.py +31 -0
- oci/file_storage/models/replication_summary.py +31 -0
- oci/file_storage/models/resource_lock.py +185 -0
- oci/file_storage/models/snapshot.py +31 -0
- oci/file_storage/models/snapshot_summary.py +31 -0
- oci/fleet_apps_management/fleet_apps_management_admin_client.py +2261 -294
- oci/fleet_apps_management/fleet_apps_management_admin_client_composite_operations.py +349 -1
- oci/fleet_apps_management/fleet_apps_management_client.py +141 -127
- oci/fleet_apps_management/fleet_apps_management_client_composite_operations.py +19 -19
- oci/fleet_apps_management/fleet_apps_management_maintenance_window_client.py +19 -15
- oci/fleet_apps_management/fleet_apps_management_maintenance_window_client_composite_operations.py +1 -1
- oci/fleet_apps_management/fleet_apps_management_operations_client.py +2058 -363
- oci/fleet_apps_management/fleet_apps_management_operations_client_composite_operations.py +173 -0
- oci/fleet_apps_management/fleet_apps_management_runbooks_client.py +1097 -260
- oci/fleet_apps_management/fleet_apps_management_runbooks_client_composite_operations.py +298 -0
- oci/fleet_apps_management/models/__init__.py +168 -0
- oci/fleet_apps_management/models/action_group.py +2 -2
- oci/fleet_apps_management/models/action_group_based_user_action_details.py +90 -0
- oci/fleet_apps_management/models/action_group_details.py +20 -16
- oci/fleet_apps_management/models/activity_resource_target.py +44 -7
- oci/fleet_apps_management/models/announcement_collection.py +1 -1
- oci/fleet_apps_management/models/announcement_summary.py +13 -13
- oci/fleet_apps_management/models/api_based_execution_details.py +1 -1
- oci/fleet_apps_management/models/artifact_details.py +109 -0
- oci/fleet_apps_management/models/associated_fleet_credential_details.py +1 -1
- oci/fleet_apps_management/models/associated_fleet_property_details.py +5 -5
- oci/fleet_apps_management/models/associated_fleet_resource_details.py +6 -6
- oci/fleet_apps_management/models/associated_local_task_details.py +64 -1
- oci/fleet_apps_management/models/associated_scheduler_definition.py +3 -3
- oci/fleet_apps_management/models/associated_shared_task_details.py +2 -1
- oci/fleet_apps_management/models/associations.py +32 -5
- oci/fleet_apps_management/models/check_resource_tagging_details.py +5 -5
- oci/fleet_apps_management/models/compliance_detail_policy.py +223 -0
- oci/fleet_apps_management/models/compliance_detail_product.py +134 -0
- oci/fleet_apps_management/models/compliance_detail_resource.py +196 -0
- oci/fleet_apps_management/models/compliance_detail_target.py +134 -0
- oci/fleet_apps_management/models/compliance_patch_detail.py +278 -0
- oci/fleet_apps_management/models/compliance_policy.py +439 -0
- oci/fleet_apps_management/models/compliance_policy_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_policy_rule.py +618 -0
- oci/fleet_apps_management/models/compliance_policy_rule_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_policy_rule_summary.py +585 -0
- oci/fleet_apps_management/models/compliance_policy_summary.py +406 -0
- oci/fleet_apps_management/models/compliance_record.py +457 -0
- oci/fleet_apps_management/models/compliance_record_aggregation.py +99 -0
- oci/fleet_apps_management/models/compliance_record_aggregation_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_record_collection.py +72 -0
- oci/fleet_apps_management/models/compliance_record_dimension.py +143 -0
- oci/fleet_apps_management/models/compliance_record_summary.py +437 -0
- oci/fleet_apps_management/models/compliance_report.py +5 -5
- oci/fleet_apps_management/models/compliance_report_patch_detail.py +9 -9
- oci/fleet_apps_management/models/compliance_report_product.py +3 -3
- oci/fleet_apps_management/models/compliance_report_resource.py +8 -6
- oci/fleet_apps_management/models/compliance_report_target.py +7 -7
- oci/fleet_apps_management/models/component_properties.py +69 -9
- oci/fleet_apps_management/models/condition.py +12 -6
- oci/fleet_apps_management/models/config_association_details.py +109 -0
- oci/fleet_apps_management/models/config_category_details.py +133 -0
- oci/fleet_apps_management/models/confirm_targets_details.py +1 -1
- oci/fleet_apps_management/models/content_details.py +3 -3
- oci/fleet_apps_management/models/create_compliance_policy_rule_details.py +382 -0
- oci/fleet_apps_management/models/create_fleet_details.py +63 -16
- oci/fleet_apps_management/models/create_fleet_property_details.py +5 -5
- oci/fleet_apps_management/models/create_fleet_resource_details.py +1 -1
- oci/fleet_apps_management/models/create_maintenance_window_details.py +19 -11
- oci/fleet_apps_management/models/create_onboarding_details.py +8 -4
- oci/fleet_apps_management/models/create_patch_details.py +402 -0
- oci/fleet_apps_management/models/create_platform_configuration_details.py +169 -0
- oci/fleet_apps_management/models/create_property_details.py +6 -6
- oci/fleet_apps_management/models/create_runbook_details.py +441 -0
- oci/fleet_apps_management/models/create_task_record_details.py +235 -0
- oci/fleet_apps_management/models/credential_config_category_details.py +52 -0
- oci/fleet_apps_management/models/credential_details.py +3 -3
- oci/fleet_apps_management/models/credential_entity_specific_details.py +22 -6
- oci/{cloud_bridge/models/update_plugin_details.py → fleet_apps_management/models/dependent_patch_details.py} +21 -21
- oci/fleet_apps_management/models/details.py +67 -3
- oci/fleet_apps_management/models/discovered_target.py +6 -6
- oci/fleet_apps_management/models/enable_latest_policy_details.py +72 -0
- oci/fleet_apps_management/models/entity_execution_details.py +22 -16
- oci/fleet_apps_management/models/environment_config_category_details.py +53 -0
- oci/fleet_apps_management/models/execution.py +122 -21
- oci/fleet_apps_management/models/execution_collection.py +1 -1
- oci/fleet_apps_management/models/execution_details.py +1 -1
- oci/fleet_apps_management/models/execution_summary.py +123 -22
- oci/fleet_apps_management/models/execution_workflow_details.py +1 -1
- oci/fleet_apps_management/models/export_compliance_report_details.py +251 -0
- oci/fleet_apps_management/models/fleet.py +37 -19
- oci/fleet_apps_management/models/fleet_credential.py +1 -1
- oci/fleet_apps_management/models/fleet_credential_entity_specific_details.py +82 -0
- oci/fleet_apps_management/models/fleet_product_summary.py +3 -3
- oci/fleet_apps_management/models/fleet_property.py +11 -11
- oci/fleet_apps_management/models/fleet_property_collection.py +3 -3
- oci/fleet_apps_management/models/fleet_property_summary.py +6 -6
- oci/fleet_apps_management/models/fleet_resource.py +21 -15
- oci/fleet_apps_management/models/fleet_resource_collection.py +1 -1
- oci/fleet_apps_management/models/fleet_resource_summary.py +20 -14
- oci/fleet_apps_management/models/fleet_summary.py +15 -5
- oci/fleet_apps_management/models/fleet_target.py +98 -5
- oci/fleet_apps_management/models/fleet_target_summary.py +98 -5
- oci/fleet_apps_management/models/generate_compliance_report_details.py +5 -3
- oci/fleet_apps_management/models/generic_artifact.py +68 -0
- oci/fleet_apps_management/models/generic_artifact_details.py +78 -0
- oci/fleet_apps_management/models/group.py +11 -5
- oci/fleet_apps_management/models/input_argument.py +2 -2
- oci/fleet_apps_management/models/inventory_resource_summary.py +6 -6
- oci/fleet_apps_management/models/job_activity.py +57 -18
- oci/fleet_apps_management/models/key_encryption_credential_details.py +5 -5
- oci/fleet_apps_management/models/maintenance_window.py +19 -11
- oci/fleet_apps_management/models/maintenance_window_collection.py +1 -1
- oci/fleet_apps_management/models/maintenance_window_summary.py +18 -10
- oci/fleet_apps_management/models/manage_job_execution_details.py +68 -0
- oci/fleet_apps_management/models/manage_settings_details.py +72 -0
- oci/fleet_apps_management/models/managed_entity_aggregation.py +99 -0
- oci/fleet_apps_management/models/managed_entity_aggregation_collection.py +72 -0
- oci/fleet_apps_management/models/managed_entity_dimension.py +88 -0
- oci/fleet_apps_management/models/model_property.py +9 -9
- oci/fleet_apps_management/models/notification_preferences.py +7 -5
- oci/fleet_apps_management/models/object_storage_bucket_content_details.py +3 -3
- oci/fleet_apps_management/models/onboarding.py +70 -7
- oci/fleet_apps_management/models/onboarding_collection.py +3 -3
- oci/fleet_apps_management/models/onboarding_policy_collection.py +3 -3
- oci/fleet_apps_management/models/onboarding_policy_summary.py +1 -1
- oci/fleet_apps_management/models/onboarding_summary.py +69 -7
- oci/fleet_apps_management/models/outcome.py +7 -7
- oci/fleet_apps_management/models/output_variable_details.py +2 -2
- oci/fleet_apps_management/models/output_variable_input_argument.py +1 -1
- oci/fleet_apps_management/models/output_variable_mapping.py +4 -3
- oci/fleet_apps_management/models/patch.py +704 -0
- oci/fleet_apps_management/models/patch_collection.py +72 -0
- oci/fleet_apps_management/models/patch_level_selection_details.py +106 -0
- oci/fleet_apps_management/models/patch_name_selection_details.py +83 -0
- oci/fleet_apps_management/models/patch_product.py +103 -0
- oci/fleet_apps_management/models/patch_release_date_selection_details.py +83 -0
- oci/fleet_apps_management/models/patch_selection_details.py +117 -0
- oci/fleet_apps_management/models/patch_summary.py +625 -0
- oci/fleet_apps_management/models/patch_type.py +72 -0
- oci/fleet_apps_management/models/patch_type_config_category_details.py +52 -0
- oci/fleet_apps_management/models/pause_details.py +109 -0
- oci/fleet_apps_management/models/plain_text_credential_details.py +2 -2
- oci/fleet_apps_management/models/platform_configuration.py +529 -0
- oci/fleet_apps_management/models/platform_configuration_collection.py +72 -0
- oci/fleet_apps_management/models/platform_configuration_summary.py +485 -0
- oci/fleet_apps_management/models/platform_specific_artifact.py +162 -0
- oci/fleet_apps_management/models/platform_specific_artifact_details.py +82 -0
- oci/fleet_apps_management/models/preferences.py +3 -3
- oci/fleet_apps_management/models/product_config_category_details.py +215 -0
- oci/fleet_apps_management/models/product_stack_as_product_sub_category_details.py +182 -0
- oci/fleet_apps_management/models/product_stack_config_category_details.py +112 -0
- oci/fleet_apps_management/models/product_stack_generic_sub_category_details.py +51 -0
- oci/fleet_apps_management/models/product_stack_sub_category_details.py +109 -0
- oci/fleet_apps_management/models/product_version_details.py +105 -0
- oci/fleet_apps_management/models/property_collection.py +3 -3
- oci/fleet_apps_management/models/property_summary.py +8 -8
- oci/fleet_apps_management/models/publish_runbook_details.py +72 -0
- oci/fleet_apps_management/models/request_resource_validation_details.py +5 -5
- oci/fleet_apps_management/models/request_target_discovery_details.py +5 -5
- oci/fleet_apps_management/models/resource_collection.py +72 -0
- oci/fleet_apps_management/models/resource_credential_entity_specific_details.py +82 -0
- oci/fleet_apps_management/models/resource_summary.py +347 -0
- oci/fleet_apps_management/models/resource_tag_check_details.py +3 -3
- oci/fleet_apps_management/models/resource_tag_enablement_info.py +3 -3
- oci/fleet_apps_management/models/rollback_workflow_details.py +119 -0
- oci/fleet_apps_management/models/rule.py +15 -7
- oci/fleet_apps_management/models/runbook.py +28 -9
- oci/fleet_apps_management/models/runbook_collection.py +1 -1
- oci/fleet_apps_management/models/runbook_summary.py +6 -4
- oci/fleet_apps_management/models/scheduler_definition.py +16 -16
- oci/fleet_apps_management/models/scheduler_job.py +24 -20
- oci/fleet_apps_management/models/scheduler_job_aggregation.py +99 -0
- oci/fleet_apps_management/models/scheduler_job_aggregation_collection.py +72 -0
- oci/fleet_apps_management/models/scheduler_job_collection.py +1 -1
- oci/fleet_apps_management/models/scheduler_job_dimension.py +72 -0
- oci/fleet_apps_management/models/scheduler_job_summary.py +20 -16
- oci/fleet_apps_management/models/script_based_execution_details.py +38 -5
- oci/fleet_apps_management/models/selection_criteria.py +6 -3
- oci/fleet_apps_management/models/set_default_runbook_details.py +72 -0
- oci/fleet_apps_management/models/step_based_user_action_details.py +183 -0
- oci/fleet_apps_management/models/step_collection.py +72 -0
- oci/fleet_apps_management/models/step_summary.py +378 -0
- oci/fleet_apps_management/models/target_credential_entity_specific_details.py +6 -6
- oci/fleet_apps_management/models/target_resource.py +1 -1
- oci/fleet_apps_management/models/task_notification_preferences.py +134 -0
- oci/fleet_apps_management/models/task_record.py +1 -1
- oci/fleet_apps_management/models/task_variable.py +2 -1
- oci/fleet_apps_management/models/time_based_pause_details.py +82 -0
- oci/fleet_apps_management/models/update_compliance_policy_rule_details.py +283 -0
- oci/fleet_apps_management/models/update_fleet_details.py +4 -2
- oci/fleet_apps_management/models/update_fleet_property_details.py +3 -3
- oci/fleet_apps_management/models/update_fleet_resource_details.py +1 -1
- oci/fleet_apps_management/models/update_maintenance_window_details.py +18 -10
- oci/fleet_apps_management/models/update_onboarding_details.py +103 -0
- oci/fleet_apps_management/models/update_patch_details.py +369 -0
- oci/fleet_apps_management/models/update_platform_configuration_details.py +138 -0
- oci/fleet_apps_management/models/update_property_details.py +6 -6
- oci/fleet_apps_management/models/update_runbook_details.py +410 -0
- oci/fleet_apps_management/models/update_scheduler_job_details.py +3 -3
- oci/fleet_apps_management/models/update_task_record_details.py +204 -0
- oci/fleet_apps_management/models/user_action_based_pause_details.py +51 -0
- oci/fleet_apps_management/models/user_action_details.py +157 -0
- oci/fleet_apps_management/models/variable.py +103 -0
- oci/fleet_apps_management/models/work_request.py +67 -3
- oci/fleet_apps_management/models/work_request_summary.py +67 -3
- oci/fleet_apps_management/models/workflow_group.py +2 -2
- oci/fleet_apps_management/models/workflow_group_component.py +4 -4
- oci/fleet_software_update/fleet_software_update_client.py +46 -46
- oci/functions/functions_invoke_client.py +1 -1
- oci/functions/functions_management_client.py +16 -16
- oci/fusion_apps/fusion_applications_client.py +41 -41
- oci/generative_ai/generative_ai_client.py +22 -22
- oci/generative_ai_agent/generative_ai_agent_client.py +33 -33
- oci/generative_ai_agent_runtime/generative_ai_agent_runtime_client.py +5 -5
- oci/generative_ai_inference/generative_ai_inference_client.py +4 -4
- oci/generic_artifacts_content/generic_artifacts_content_client.py +3 -3
- oci/globally_distributed_database/sharded_database_service_client.py +30 -30
- oci/golden_gate/golden_gate_client.py +69 -69
- oci/governance_rules_control_plane/governance_rule_client.py +15 -15
- oci/governance_rules_control_plane/work_request_client.py +5 -5
- oci/healthchecks/health_checks_client.py +17 -17
- oci/identity/identity_client.py +145 -145
- oci/identity_data_plane/dataplane_client.py +2 -2
- oci/identity_domains/identity_domains_client.py +307 -307
- oci/identity_domains/models/auth_token.py +51 -0
- oci/identity_domains/models/customer_secret_key.py +45 -0
- oci/identity_domains/models/o_auth2_client_credential.py +49 -0
- oci/identity_domains/models/smtp_credential.py +47 -0
- oci/integration/integration_instance_client.py +19 -19
- oci/jms/java_management_service_client.py +75 -75
- oci/jms_java_downloads/java_download_client.py +25 -25
- oci/key_management/ekm_client.py +5 -5
- oci/key_management/kms_crypto_client.py +6 -6
- oci/key_management/kms_hsm_cluster_client.py +12 -12
- oci/key_management/kms_management_client.py +21 -21
- oci/key_management/kms_vault_client.py +14 -14
- oci/license_manager/license_manager_client.py +18 -18
- oci/limits/limits_client.py +4 -4
- oci/limits/quotas_client.py +7 -7
- oci/load_balancer/load_balancer_client.py +61 -61
- oci/load_balancer/models/create_listener_details.py +4 -6
- oci/load_balancer/models/listener.py +4 -6
- oci/load_balancer/models/listener_details.py +4 -6
- oci/load_balancer/models/update_listener_details.py +4 -6
- oci/lockbox/lockbox_client.py +24 -24
- oci/log_analytics/log_analytics_client.py +193 -193
- oci/logging/logging_management_client.py +30 -30
- oci/loggingingestion/logging_client.py +1 -1
- oci/loggingsearch/log_search_client.py +1 -1
- oci/management_agent/management_agent_client.py +28 -28
- oci/management_dashboard/dashx_apis_client.py +14 -14
- oci/marketplace/account_client.py +2 -2
- oci/marketplace/marketplace_client.py +30 -30
- oci/marketplace_private_offer/attachment_client.py +5 -5
- oci/marketplace_private_offer/offer_client.py +6 -6
- oci/marketplace_publisher/attachment_client.py +5 -5
- oci/marketplace_publisher/marketplace_publisher_client.py +71 -71
- oci/marketplace_publisher/offer_client.py +6 -6
- oci/media_services/media_services_client.py +60 -60
- oci/media_services/media_stream_client.py +2 -2
- oci/monitoring/monitoring_client.py +18 -18
- oci/mysql/channels_client.py +7 -7
- oci/mysql/db_backups_client.py +7 -7
- oci/mysql/db_system_client.py +17 -17
- oci/mysql/mysqlaas_client.py +7 -7
- oci/mysql/replicas_client.py +5 -5
- oci/mysql/work_requests_client.py +4 -4
- oci/network_firewall/network_firewall_client.py +86 -86
- oci/network_load_balancer/models/backend_set.py +0 -4
- oci/network_load_balancer/models/backend_set_details.py +0 -4
- oci/network_load_balancer/models/backend_set_summary.py +7 -5
- oci/network_load_balancer/models/create_listener_details.py +42 -5
- oci/network_load_balancer/models/listener.py +42 -5
- oci/network_load_balancer/models/listener_details.py +42 -5
- oci/network_load_balancer/models/listener_summary.py +42 -5
- oci/network_load_balancer/models/update_listener_details.py +42 -5
- oci/network_load_balancer/network_load_balancer_client.py +34 -34
- oci/nosql/nosql_client.py +24 -24
- oci/object_storage/object_storage_client.py +55 -55
- oci/oce/oce_instance_client.py +10 -10
- oci/oci_control_center/occ_metrics_client.py +3 -3
- oci/ocvp/cluster_client.py +5 -5
- oci/ocvp/esxi_host_client.py +8 -8
- oci/ocvp/sddc_client.py +14 -14
- oci/ocvp/work_request_client.py +4 -4
- oci/oda/management_client.py +59 -59
- oci/oda/oda_client.py +17 -17
- oci/oda/odapackage_client.py +7 -7
- oci/onesubscription/billing_schedule_client.py +1 -1
- oci/onesubscription/commitment_client.py +2 -2
- oci/onesubscription/computed_usage_client.py +3 -3
- oci/onesubscription/invoice_summary_client.py +2 -2
- oci/onesubscription/organization_subscription_client.py +1 -1
- oci/onesubscription/ratecard_client.py +1 -1
- oci/onesubscription/subscribed_service_client.py +2 -2
- oci/onesubscription/subscription_client.py +1 -1
- oci/ons/notification_control_plane_client.py +6 -6
- oci/ons/notification_data_plane_client.py +10 -10
- oci/opa/opa_instance_client.py +13 -13
- oci/opensearch/opensearch_cluster_backup_client.py +4 -4
- oci/opensearch/opensearch_cluster_client.py +14 -14
- oci/operator_access_control/access_requests_client.py +20 -20
- oci/operator_access_control/operator_actions_client.py +4 -4
- oci/operator_access_control/operator_control_assignment_client.py +16 -16
- oci/operator_access_control/operator_control_client.py +12 -12
- oci/opsi/models/__init__.py +8 -0
- oci/opsi/models/host_configuration_metric_group.py +11 -3
- oci/opsi/models/host_containers.py +65 -3
- oci/opsi/models/host_cpu_hardware_configuration.py +1 -1
- oci/opsi/models/host_cpu_statistics.py +1 -1
- oci/opsi/models/host_cpu_usage.py +1 -1
- oci/opsi/models/host_entities.py +1 -1
- oci/opsi/models/host_filesystem_configuration.py +1 -1
- oci/opsi/models/host_filesystem_usage.py +1 -1
- oci/opsi/models/host_gpu_configuration.py +1 -1
- oci/opsi/models/host_gpu_processes.py +1 -1
- oci/opsi/models/host_gpu_usage.py +1 -1
- oci/opsi/models/host_hardware_configuration.py +1 -1
- oci/opsi/models/host_io_statistics.py +160 -0
- oci/opsi/models/host_io_usage.py +1 -1
- oci/opsi/models/host_memory_configuration.py +1 -1
- oci/opsi/models/host_memory_statistics.py +1 -1
- oci/opsi/models/host_memory_usage.py +1 -1
- oci/opsi/models/host_network_activity_summary.py +1 -1
- oci/opsi/models/host_network_configuration.py +1 -1
- oci/opsi/models/host_network_statistics.py +1 -1
- oci/opsi/models/host_performance_metric_group.py +3 -11
- oci/opsi/models/host_product.py +1 -1
- oci/opsi/models/host_resource_allocation.py +1 -1
- oci/opsi/models/host_resource_statistics.py +11 -3
- oci/opsi/models/host_storage_statistics.py +1 -1
- oci/opsi/models/host_top_processes.py +1 -1
- oci/opsi/models/io_usage_trend.py +227 -0
- oci/opsi/models/io_usage_trend_aggregation.py +103 -0
- oci/opsi/models/summarize_host_insight_host_recommendation_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_io_usage_trend_aggregation_collection.py +165 -0
- oci/opsi/models/summarize_host_insight_resource_capacity_trend_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_forecast_trend_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_statistics_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_usage_aggregation.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_usage_trend_aggregation_collection.py +7 -3
- oci/opsi/models/summarize_host_insight_resource_utilization_insight_aggregation.py +7 -3
- oci/opsi/operations_insights_client.py +362 -179
- oci/optimizer/optimizer_client.py +26 -26
- oci/os_management/event_client.py +8 -8
- oci/os_management/os_management_client.py +69 -69
- oci/os_management_hub/event_client.py +8 -8
- oci/os_management_hub/lifecycle_environment_client.py +12 -12
- oci/os_management_hub/managed_instance_client.py +31 -31
- oci/os_management_hub/managed_instance_group_client.py +25 -25
- oci/os_management_hub/management_station_client.py +10 -10
- oci/os_management_hub/onboarding_client.py +6 -6
- oci/os_management_hub/reporting_managed_instance_client.py +3 -3
- oci/os_management_hub/scheduled_job_client.py +7 -7
- oci/os_management_hub/software_source_client.py +27 -27
- oci/os_management_hub/work_request_client.py +4 -4
- oci/osp_gateway/address_rule_service_client.py +1 -1
- oci/osp_gateway/address_service_client.py +2 -2
- oci/osp_gateway/invoice_service_client.py +5 -5
- oci/osp_gateway/subscription_service_client.py +5 -5
- oci/osub_billing_schedule/billing_schedule_client.py +1 -1
- oci/osub_organization_subscription/organization_subscription_client.py +1 -1
- oci/osub_subscription/commitment_client.py +2 -2
- oci/osub_subscription/ratecard_client.py +1 -1
- oci/osub_subscription/subscription_client.py +1 -1
- oci/osub_usage/computed_usage_client.py +3 -3
- oci/psql/postgresql_client.py +33 -33
- oci/queue/queue_admin_client.py +11 -11
- oci/queue/queue_client.py +8 -8
- oci/recovery/database_recovery_client.py +26 -26
- oci/redis/redis_cluster_client.py +12 -12
- oci/resource_manager/resource_manager_client.py +52 -52
- oci/resource_scheduler/schedule_client.py +13 -13
- oci/resource_search/resource_search_client.py +3 -3
- oci/rover/rover_bundle_client.py +8 -8
- oci/rover/rover_cluster_client.py +8 -8
- oci/rover/rover_entitlement_client.py +6 -6
- oci/rover/rover_node_client.py +15 -15
- oci/rover/shape_client.py +1 -1
- oci/rover/work_requests_client.py +5 -5
- oci/sch/connector_plugins_client.py +2 -2
- oci/sch/service_connector_client.py +12 -12
- oci/secrets/secrets_client.py +3 -3
- oci/security_attribute/security_attribute_client.py +18 -18
- oci/service_catalog/service_catalog_client.py +26 -26
- oci/service_manager_proxy/service_manager_proxy_client.py +2 -2
- oci/service_mesh/service_mesh_client.py +48 -48
- oci/stack_monitoring/stack_monitoring_client.py +71 -71
- oci/streaming/stream_admin_client.py +18 -18
- oci/streaming/stream_client.py +8 -8
- oci/tenant_manager_control_plane/domain_client.py +5 -5
- oci/tenant_manager_control_plane/domain_governance_client.py +5 -5
- oci/tenant_manager_control_plane/governance_client.py +2 -2
- oci/tenant_manager_control_plane/link_client.py +3 -3
- oci/tenant_manager_control_plane/orders_client.py +2 -2
- oci/tenant_manager_control_plane/organization_client.py +10 -10
- oci/tenant_manager_control_plane/recipient_invitation_client.py +5 -5
- oci/tenant_manager_control_plane/sender_invitation_client.py +5 -5
- oci/tenant_manager_control_plane/subscription_client.py +11 -11
- oci/tenant_manager_control_plane/work_request_client.py +4 -4
- oci/threat_intelligence/threatintel_client.py +5 -5
- oci/usage/resources_client.py +2 -2
- oci/usage/rewards_client.py +6 -6
- oci/usage/usagelimits_client.py +1 -1
- oci/usage_api/usageapi_client.py +33 -33
- oci/vault/vaults_client.py +13 -13
- oci/vbs_inst/vbs_instance_client.py +10 -10
- oci/version.py +1 -1
- oci/visual_builder/vb_instance_client.py +13 -13
- oci/vn_monitoring/vn_monitoring_client.py +12 -12
- oci/vulnerability_scanning/vulnerability_scanning_client.py +58 -58
- oci/waa/waa_client.py +13 -13
- oci/waa/work_request_client.py +4 -4
- oci/waas/redirect_client.py +6 -6
- oci/waas/waas_client.py +66 -66
- oci/waf/waf_client.py +24 -24
- oci/work_requests/work_request_client.py +4 -4
- oci/zpr/zpr_client.py +15 -15
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/METADATA +1 -1
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/RECORD +626 -506
- oci/_vendor/jwt/__main__.py +0 -173
- oci/_vendor/jwt/compat.py +0 -73
- oci/_vendor/jwt/contrib/__init__.py +0 -0
- oci/_vendor/jwt/contrib/algorithms/__init__.py +0 -0
- oci/_vendor/jwt/contrib/algorithms/py_ecdsa.py +0 -60
- oci/_vendor/jwt/contrib/algorithms/pycrypto.py +0 -46
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/LICENSE.txt +0 -0
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/THIRD_PARTY_LICENSES.txt +0 -0
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/WHEEL +0 -0
- {oci-2.136.0.dist-info → oci-2.137.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,108 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
# Modified Work: Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
|
3
|
+
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
|
4
|
+
# Original Work: Copyright (c) 2015-2022 José Padilla
|
5
|
+
|
6
|
+
import json
|
7
|
+
|
8
|
+
from .algorithms import get_default_algorithms
|
9
|
+
from .exceptions import InvalidKeyError, PyJWKError, PyJWKSetError
|
10
|
+
|
11
|
+
|
12
|
+
class PyJWK:
|
13
|
+
def __init__(self, jwk_data, algorithm=None):
|
14
|
+
self._algorithms = get_default_algorithms()
|
15
|
+
self._jwk_data = jwk_data
|
16
|
+
|
17
|
+
kty = self._jwk_data.get("kty", None)
|
18
|
+
if not kty:
|
19
|
+
raise InvalidKeyError(f"kty is not found: {self._jwk_data}")
|
20
|
+
|
21
|
+
if not algorithm and isinstance(self._jwk_data, dict):
|
22
|
+
algorithm = self._jwk_data.get("alg", None)
|
23
|
+
|
24
|
+
if not algorithm:
|
25
|
+
# Determine alg with kty (and crv).
|
26
|
+
crv = self._jwk_data.get("crv", None)
|
27
|
+
if kty == "EC":
|
28
|
+
if crv == "P-256" or not crv:
|
29
|
+
algorithm = "ES256"
|
30
|
+
elif crv == "P-384":
|
31
|
+
algorithm = "ES384"
|
32
|
+
elif crv == "P-521":
|
33
|
+
algorithm = "ES512"
|
34
|
+
elif crv == "secp256k1":
|
35
|
+
algorithm = "ES256K"
|
36
|
+
else:
|
37
|
+
raise InvalidKeyError(f"Unsupported crv: {crv}")
|
38
|
+
elif kty == "RSA":
|
39
|
+
algorithm = "RS256"
|
40
|
+
elif kty == "oct":
|
41
|
+
algorithm = "HS256"
|
42
|
+
elif kty == "OKP":
|
43
|
+
if not crv:
|
44
|
+
raise InvalidKeyError(f"crv is not found: {self._jwk_data}")
|
45
|
+
if crv == "Ed25519":
|
46
|
+
algorithm = "EdDSA"
|
47
|
+
else:
|
48
|
+
raise InvalidKeyError(f"Unsupported crv: {crv}")
|
49
|
+
else:
|
50
|
+
raise InvalidKeyError(f"Unsupported kty: {kty}")
|
51
|
+
|
52
|
+
self.Algorithm = self._algorithms.get(algorithm)
|
53
|
+
|
54
|
+
if not self.Algorithm:
|
55
|
+
raise PyJWKError(f"Unable to find a algorithm for key: {self._jwk_data}")
|
56
|
+
|
57
|
+
self.key = self.Algorithm.from_jwk(self._jwk_data)
|
58
|
+
|
59
|
+
@staticmethod
|
60
|
+
def from_dict(obj, algorithm=None):
|
61
|
+
return PyJWK(obj, algorithm)
|
62
|
+
|
63
|
+
@staticmethod
|
64
|
+
def from_json(data, algorithm=None):
|
65
|
+
obj = json.loads(data)
|
66
|
+
return PyJWK.from_dict(obj, algorithm)
|
67
|
+
|
68
|
+
@property
|
69
|
+
def key_type(self):
|
70
|
+
return self._jwk_data.get("kty", None)
|
71
|
+
|
72
|
+
@property
|
73
|
+
def key_id(self):
|
74
|
+
return self._jwk_data.get("kid", None)
|
75
|
+
|
76
|
+
@property
|
77
|
+
def public_key_use(self):
|
78
|
+
return self._jwk_data.get("use", None)
|
79
|
+
|
80
|
+
|
81
|
+
class PyJWKSet:
|
82
|
+
def __init__(self, keys):
|
83
|
+
self.keys = []
|
84
|
+
|
85
|
+
if not keys or not isinstance(keys, list):
|
86
|
+
raise PyJWKSetError("Invalid JWK Set value")
|
87
|
+
|
88
|
+
if len(keys) == 0:
|
89
|
+
raise PyJWKSetError("The JWK Set did not contain any keys")
|
90
|
+
|
91
|
+
for key in keys:
|
92
|
+
self.keys.append(PyJWK(key))
|
93
|
+
|
94
|
+
@staticmethod
|
95
|
+
def from_dict(obj):
|
96
|
+
keys = obj.get("keys", [])
|
97
|
+
return PyJWKSet(keys)
|
98
|
+
|
99
|
+
@staticmethod
|
100
|
+
def from_json(data):
|
101
|
+
obj = json.loads(data)
|
102
|
+
return PyJWKSet.from_dict(obj)
|
103
|
+
|
104
|
+
def __getitem__(self, kid):
|
105
|
+
for key in self.keys:
|
106
|
+
if key.key_id == kid:
|
107
|
+
return key
|
108
|
+
raise KeyError(f"keyset has no key for kid: {kid}")
|
oci/_vendor/jwt/api_jws.py
CHANGED
@@ -1,61 +1,59 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
# Modified Work: Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
|
3
3
|
# This software is dual-licensed to you under the Universal Permissive License (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl or Apache License 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose either license.
|
4
|
-
# Original Work: Copyright (c) 2015 José Padilla
|
4
|
+
# Original Work: Copyright (c) 2015-2022 José Padilla
|
5
5
|
|
6
6
|
import binascii
|
7
7
|
import json
|
8
|
-
import
|
9
|
-
|
10
|
-
# import required by mypy to perform type checking, not used for normal execution
|
11
|
-
from typing import Callable, Dict, List, Optional, Union # NOQA
|
12
|
-
except ImportError:
|
13
|
-
pass
|
8
|
+
from collections.abc import Mapping
|
9
|
+
from typing import Any, Dict, List, Optional, Type
|
14
10
|
|
15
11
|
from .algorithms import (
|
16
|
-
Algorithm,
|
12
|
+
Algorithm,
|
13
|
+
get_default_algorithms,
|
14
|
+
has_crypto,
|
15
|
+
requires_cryptography,
|
17
16
|
)
|
18
|
-
from .compat import Mapping, binary_type, string_types, text_type
|
19
17
|
from .exceptions import (
|
20
|
-
DecodeError,
|
21
|
-
|
18
|
+
DecodeError,
|
19
|
+
InvalidAlgorithmError,
|
20
|
+
InvalidSignatureError,
|
21
|
+
InvalidTokenError,
|
22
22
|
)
|
23
|
-
from .utils import base64url_decode, base64url_encode
|
23
|
+
from .utils import base64url_decode, base64url_encode
|
24
24
|
|
25
25
|
|
26
|
-
class PyJWS
|
27
|
-
header_typ =
|
26
|
+
class PyJWS:
|
27
|
+
header_typ = "JWT"
|
28
28
|
|
29
29
|
def __init__(self, algorithms=None, options=None):
|
30
30
|
self._algorithms = get_default_algorithms()
|
31
|
-
self._valid_algs = (
|
32
|
-
|
31
|
+
self._valid_algs = (
|
32
|
+
set(algorithms) if algorithms is not None else set(self._algorithms)
|
33
|
+
)
|
33
34
|
|
34
35
|
# Remove algorithms that aren't on the whitelist
|
35
36
|
for key in list(self._algorithms.keys()):
|
36
37
|
if key not in self._valid_algs:
|
37
38
|
del self._algorithms[key]
|
38
39
|
|
39
|
-
if
|
40
|
+
if options is None:
|
40
41
|
options = {}
|
41
|
-
|
42
|
-
self.options = merge_dict(self._get_default_options(), options)
|
42
|
+
self.options = {**self._get_default_options(), **options}
|
43
43
|
|
44
44
|
@staticmethod
|
45
45
|
def _get_default_options():
|
46
|
-
return {
|
47
|
-
'verify_signature': True
|
48
|
-
}
|
46
|
+
return {"verify_signature": True}
|
49
47
|
|
50
48
|
def register_algorithm(self, alg_id, alg_obj):
|
51
49
|
"""
|
52
50
|
Registers a new Algorithm for use when creating and verifying tokens.
|
53
51
|
"""
|
54
52
|
if alg_id in self._algorithms:
|
55
|
-
raise ValueError(
|
53
|
+
raise ValueError("Algorithm already has a handler.")
|
56
54
|
|
57
55
|
if not isinstance(alg_obj, Algorithm):
|
58
|
-
raise TypeError(
|
56
|
+
raise TypeError("Object is not of type `Algorithm`")
|
59
57
|
|
60
58
|
self._algorithms[alg_id] = alg_obj
|
61
59
|
self._valid_algs.add(alg_id)
|
@@ -66,8 +64,10 @@ class PyJWS(object):
|
|
66
64
|
Throws KeyError if algorithm is not registered.
|
67
65
|
"""
|
68
66
|
if alg_id not in self._algorithms:
|
69
|
-
raise KeyError(
|
70
|
-
|
67
|
+
raise KeyError(
|
68
|
+
"The specified algorithm could not be removed"
|
69
|
+
" because it is not registered."
|
70
|
+
)
|
71
71
|
|
72
72
|
del self._algorithms[alg_id]
|
73
73
|
self._valid_algs.remove(alg_id)
|
@@ -78,89 +78,130 @@ class PyJWS(object):
|
|
78
78
|
"""
|
79
79
|
return list(self._valid_algs)
|
80
80
|
|
81
|
-
def encode(
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
81
|
+
def encode(
|
82
|
+
self,
|
83
|
+
payload: bytes,
|
84
|
+
key: str,
|
85
|
+
algorithm: Optional[str] = "HS256",
|
86
|
+
headers: Optional[Dict] = None,
|
87
|
+
json_encoder: Optional[Type[json.JSONEncoder]] = None,
|
88
|
+
is_payload_detached: bool = False,
|
89
|
+
) -> str:
|
88
90
|
segments = []
|
89
91
|
|
90
92
|
if algorithm is None:
|
91
|
-
algorithm =
|
93
|
+
algorithm = "none"
|
92
94
|
|
93
|
-
if
|
94
|
-
|
95
|
+
# Prefer headers values if present to function parameters.
|
96
|
+
if headers:
|
97
|
+
headers_alg = headers.get("alg")
|
98
|
+
if headers_alg:
|
99
|
+
algorithm = headers["alg"]
|
100
|
+
|
101
|
+
headers_b64 = headers.get("b64")
|
102
|
+
if headers_b64 is False:
|
103
|
+
is_payload_detached = True
|
95
104
|
|
96
105
|
# Header
|
97
|
-
header = {
|
106
|
+
header = {"typ": self.header_typ, "alg": algorithm} # type: Dict[str, Any]
|
98
107
|
|
99
108
|
if headers:
|
100
109
|
self._validate_headers(headers)
|
101
110
|
header.update(headers)
|
102
111
|
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
112
|
+
if not header["typ"]:
|
113
|
+
del header["typ"]
|
114
|
+
|
115
|
+
if is_payload_detached:
|
116
|
+
header["b64"] = False
|
117
|
+
elif "b64" in header:
|
118
|
+
# True is the standard value for b64, so no need for it
|
119
|
+
del header["b64"]
|
120
|
+
|
121
|
+
json_header = json.dumps(
|
122
|
+
header, separators=(",", ":"), cls=json_encoder
|
123
|
+
).encode()
|
110
124
|
|
111
125
|
segments.append(base64url_encode(json_header))
|
112
|
-
|
126
|
+
|
127
|
+
if is_payload_detached:
|
128
|
+
msg_payload = payload
|
129
|
+
else:
|
130
|
+
msg_payload = base64url_encode(payload)
|
131
|
+
segments.append(msg_payload)
|
113
132
|
|
114
133
|
# Segments
|
115
|
-
signing_input = b
|
134
|
+
signing_input = b".".join(segments)
|
135
|
+
|
116
136
|
try:
|
117
137
|
alg_obj = self._algorithms[algorithm]
|
118
138
|
key = alg_obj.prepare_key(key)
|
119
139
|
signature = alg_obj.sign(signing_input, key)
|
120
140
|
|
121
|
-
except KeyError:
|
141
|
+
except KeyError as e:
|
122
142
|
if not has_crypto and algorithm in requires_cryptography:
|
123
143
|
raise NotImplementedError(
|
124
|
-
"Algorithm '
|
125
|
-
|
126
|
-
|
127
|
-
else:
|
128
|
-
raise NotImplementedError('Algorithm not supported')
|
144
|
+
f"Algorithm '{algorithm}' could not be found. Do you have cryptography installed?"
|
145
|
+
) from e
|
146
|
+
raise NotImplementedError("Algorithm not supported") from e
|
129
147
|
|
130
148
|
segments.append(base64url_encode(signature))
|
131
149
|
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
150
|
+
# Don't put the payload content inside the encoded token when detached
|
151
|
+
if is_payload_detached:
|
152
|
+
segments[1] = b""
|
153
|
+
encoded_string = b".".join(segments)
|
154
|
+
|
155
|
+
return encoded_string.decode("utf-8")
|
156
|
+
|
157
|
+
def decode_complete(
|
158
|
+
self,
|
159
|
+
jwt: str,
|
160
|
+
key: str = "",
|
161
|
+
algorithms: Optional[List[str]] = None,
|
162
|
+
options: Optional[Dict] = None,
|
163
|
+
detached_payload: Optional[bytes] = None,
|
164
|
+
**kwargs,
|
165
|
+
) -> Dict[str, Any]:
|
166
|
+
if options is None:
|
167
|
+
options = {}
|
168
|
+
merged_options = {**self.options, **options}
|
169
|
+
verify_signature = merged_options["verify_signature"]
|
144
170
|
|
145
171
|
if verify_signature and not algorithms:
|
146
|
-
|
147
|
-
'It is
|
148
|
-
'value for the "algorithms" argument when calling decode(). ' +
|
149
|
-
'This argument will be mandatory in a future version.',
|
150
|
-
DeprecationWarning
|
172
|
+
raise DecodeError(
|
173
|
+
'It is required that you pass in a value for the "algorithms" argument when calling decode().'
|
151
174
|
)
|
152
175
|
|
153
176
|
payload, signing_input, header, signature = self._load(jwt)
|
154
177
|
|
155
|
-
if
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
178
|
+
if header.get("b64", True) is False:
|
179
|
+
if detached_payload is None:
|
180
|
+
raise DecodeError(
|
181
|
+
'It is required that you pass in a value for the "detached_payload" argument to decode a message having the b64 header set to false.'
|
182
|
+
)
|
183
|
+
payload = detached_payload
|
184
|
+
signing_input = b".".join([signing_input.rsplit(b".", 1)[0], payload])
|
185
|
+
|
186
|
+
if verify_signature:
|
187
|
+
self._verify_signature(signing_input, header, signature, key, algorithms)
|
188
|
+
|
189
|
+
return {
|
190
|
+
"payload": payload,
|
191
|
+
"header": header,
|
192
|
+
"signature": signature,
|
193
|
+
}
|
162
194
|
|
163
|
-
|
195
|
+
def decode(
|
196
|
+
self,
|
197
|
+
jwt: str,
|
198
|
+
key: str = "",
|
199
|
+
algorithms: Optional[List[str]] = None,
|
200
|
+
options: Optional[Dict] = None,
|
201
|
+
**kwargs,
|
202
|
+
) -> str:
|
203
|
+
decoded = self.decode_complete(jwt, key, algorithms, options, **kwargs)
|
204
|
+
return decoded["payload"]
|
164
205
|
|
165
206
|
def get_unverified_header(self, jwt):
|
166
207
|
"""Returns back the JWT header parameters as a dict()
|
@@ -174,73 +215,79 @@ class PyJWS(object):
|
|
174
215
|
return headers
|
175
216
|
|
176
217
|
def _load(self, jwt):
|
177
|
-
if isinstance(jwt,
|
178
|
-
jwt = jwt.encode(
|
218
|
+
if isinstance(jwt, str):
|
219
|
+
jwt = jwt.encode("utf-8")
|
179
220
|
|
180
|
-
if not
|
181
|
-
raise DecodeError("Invalid token type. Token must be a {
|
182
|
-
binary_type))
|
221
|
+
if not isinstance(jwt, bytes):
|
222
|
+
raise DecodeError(f"Invalid token type. Token must be a {bytes}")
|
183
223
|
|
184
224
|
try:
|
185
|
-
signing_input, crypto_segment = jwt.rsplit(b
|
186
|
-
header_segment, payload_segment = signing_input.split(b
|
187
|
-
except ValueError:
|
188
|
-
raise DecodeError(
|
225
|
+
signing_input, crypto_segment = jwt.rsplit(b".", 1)
|
226
|
+
header_segment, payload_segment = signing_input.split(b".", 1)
|
227
|
+
except ValueError as err:
|
228
|
+
raise DecodeError("Not enough segments") from err
|
189
229
|
|
190
230
|
try:
|
191
231
|
header_data = base64url_decode(header_segment)
|
192
|
-
except (TypeError, binascii.Error):
|
193
|
-
raise DecodeError(
|
232
|
+
except (TypeError, binascii.Error) as err:
|
233
|
+
raise DecodeError("Invalid header padding") from err
|
194
234
|
|
195
235
|
try:
|
196
|
-
header = json.loads(header_data
|
236
|
+
header = json.loads(header_data)
|
197
237
|
except ValueError as e:
|
198
|
-
raise DecodeError(
|
238
|
+
raise DecodeError(f"Invalid header string: {e}") from e
|
199
239
|
|
200
240
|
if not isinstance(header, Mapping):
|
201
|
-
raise DecodeError(
|
241
|
+
raise DecodeError("Invalid header string: must be a json object")
|
202
242
|
|
203
243
|
try:
|
204
244
|
payload = base64url_decode(payload_segment)
|
205
|
-
except (TypeError, binascii.Error):
|
206
|
-
raise DecodeError(
|
245
|
+
except (TypeError, binascii.Error) as err:
|
246
|
+
raise DecodeError("Invalid payload padding") from err
|
207
247
|
|
208
248
|
try:
|
209
249
|
signature = base64url_decode(crypto_segment)
|
210
|
-
except (TypeError, binascii.Error):
|
211
|
-
raise DecodeError(
|
250
|
+
except (TypeError, binascii.Error) as err:
|
251
|
+
raise DecodeError("Invalid crypto padding") from err
|
212
252
|
|
213
253
|
return (payload, signing_input, header, signature)
|
214
254
|
|
215
|
-
def _verify_signature(
|
216
|
-
|
255
|
+
def _verify_signature(
|
256
|
+
self,
|
257
|
+
signing_input,
|
258
|
+
header,
|
259
|
+
signature,
|
260
|
+
key="",
|
261
|
+
algorithms=None,
|
262
|
+
):
|
217
263
|
|
218
|
-
alg = header.get(
|
264
|
+
alg = header.get("alg")
|
219
265
|
|
220
266
|
if algorithms is not None and alg not in algorithms:
|
221
|
-
raise InvalidAlgorithmError(
|
267
|
+
raise InvalidAlgorithmError("The specified alg value is not allowed")
|
222
268
|
|
223
269
|
try:
|
224
270
|
alg_obj = self._algorithms[alg]
|
225
271
|
key = alg_obj.prepare_key(key)
|
226
272
|
|
227
273
|
if not alg_obj.verify(signing_input, key, signature):
|
228
|
-
raise InvalidSignatureError(
|
274
|
+
raise InvalidSignatureError("Signature verification failed")
|
229
275
|
|
230
|
-
except KeyError:
|
231
|
-
raise InvalidAlgorithmError(
|
276
|
+
except KeyError as e:
|
277
|
+
raise InvalidAlgorithmError("Algorithm not supported") from e
|
232
278
|
|
233
279
|
def _validate_headers(self, headers):
|
234
|
-
if
|
235
|
-
self._validate_kid(headers[
|
280
|
+
if "kid" in headers:
|
281
|
+
self._validate_kid(headers["kid"])
|
236
282
|
|
237
283
|
def _validate_kid(self, kid):
|
238
|
-
if not isinstance(kid,
|
239
|
-
raise InvalidTokenError(
|
284
|
+
if not isinstance(kid, str):
|
285
|
+
raise InvalidTokenError("Key ID header parameter must be a string")
|
240
286
|
|
241
287
|
|
242
288
|
_jws_global_obj = PyJWS()
|
243
289
|
encode = _jws_global_obj.encode
|
290
|
+
decode_complete = _jws_global_obj.decode_complete
|
244
291
|
decode = _jws_global_obj.decode
|
245
292
|
register_algorithm = _jws_global_obj.register_algorithm
|
246
293
|
unregister_algorithm = _jws_global_obj.unregister_algorithm
|