ctm-python-client 2.1.2__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.
- aapi/__init__.py +79 -0
- aapi/action.py +47 -0
- aapi/addevents.py +16 -0
- aapi/ai.py +63 -0
- aapi/basefolder.py +288 -0
- aapi/bases.py +60 -0
- aapi/businessfield.py +14 -0
- aapi/businessparameter.py +70 -0
- aapi/calendar.py +207 -0
- aapi/calendarfields.py +38 -0
- aapi/calendarkey.py +38 -0
- aapi/captureoutput.py +55 -0
- aapi/condition.py +53 -0
- aapi/config.py +26 -0
- aapi/connectionprofile.py +973 -0
- aapi/ctbruledata.py +17 -0
- aapi/date.py +14 -0
- aapi/definitionitemdetails.py +14 -0
- aapi/deleteevents.py +16 -0
- aapi/disallowedoptions.py +14 -0
- aapi/do.py +14 -0
- aapi/donotify.py +31 -0
- aapi/driver.py +27 -0
- aapi/endpoint.py +202 -0
- aapi/event.py +42 -0
- aapi/extractrule.py +21 -0
- aapi/filetransfer.py +139 -0
- aapi/filetransfergroup.py +14 -0
- aapi/flow_.py +16 -0
- aapi/folderclientdata.py +14 -0
- aapi/folderjobbase.py +229 -0
- aapi/hostfiletransfer.py +14 -0
- aapi/hostmapping.py +24 -0
- aapi/if_.py +106 -0
- aapi/ifbase.py +144 -0
- aapi/ifcollection.py +26 -0
- aapi/ifrerun.py +24 -0
- aapi/integration_factory/__init__.py +0 -0
- aapi/integration_factory/connection_profiles.py +859 -0
- aapi/integration_factory/jobs.py +1185 -0
- aapi/internalrule.py +68 -0
- aapi/iteminfo.py +14 -0
- aapi/job.py +2603 -0
- aapi/jobsfilter.py +14 -0
- aapi/jobtag.py +20 -0
- aapi/mail.py +32 -0
- aapi/notify.py +98 -0
- aapi/on.py +14 -0
- aapi/output.py +25 -0
- aapi/package.py +23 -0
- aapi/packageparams.py +15 -0
- aapi/period.py +56 -0
- aapi/possibleoptions.py +14 -0
- aapi/propertycondition.py +65 -0
- aapi/rbcdetails.py +14 -0
- aapi/remedy.py +27 -0
- aapi/resource.py +60 -0
- aapi/resourcepools.py +118 -0
- aapi/run.py +29 -0
- aapi/runningjobs.py +120 -0
- aapi/set_.py +18 -0
- aapi/sitestandard.py +24 -0
- aapi/sitestandarddata.py +14 -0
- aapi/sitestandardoperatorvalueoptions.py +27 -0
- aapi/sitestandardpolicy.py +45 -0
- aapi/sitestandardpolicydata.py +14 -0
- aapi/sitestandardpossiblevalue.py +18 -0
- aapi/sitestandardrestriction.py +48 -0
- aapi/steprange.py +22 -0
- aapi/tag.py +46 -0
- aapi/time.py +14 -0
- aapi/variable.py +14 -0
- aapi/waitforevents.py +16 -0
- aapi/workloadflat.py +14 -0
- aapi/workloadpolicy.py +42 -0
- aapi/wpperiod.py +14 -0
- aapi/year.py +42 -0
- clients/__init__.py +0 -0
- clients/ctm_api_client/__init__.py +612 -0
- clients/ctm_api_client/api/__init__.py +13 -0
- clients/ctm_api_client/api/archive_api.py +496 -0
- clients/ctm_api_client/api/build_api.py +154 -0
- clients/ctm_api_client/api/config_api.py +11804 -0
- clients/ctm_api_client/api/deploy_api.py +2467 -0
- clients/ctm_api_client/api/provision_api.py +1215 -0
- clients/ctm_api_client/api/reporting_api.py +450 -0
- clients/ctm_api_client/api/run_api.py +4056 -0
- clients/ctm_api_client/api/session_api.py +332 -0
- clients/ctm_api_client/api_client.py +715 -0
- clients/ctm_api_client/configuration.py +260 -0
- clients/ctm_api_client/models/__init__.py +597 -0
- clients/ctm_api_client/models/actions_auth_record.py +663 -0
- clients/ctm_api_client/models/active_services.py +153 -0
- clients/ctm_api_client/models/add_agent_params.py +311 -0
- clients/ctm_api_client/models/add_remote_host_params.py +276 -0
- clients/ctm_api_client/models/add_remove_success_data.py +151 -0
- clients/ctm_api_client/models/add_server_params.py +210 -0
- clients/ctm_api_client/models/agent_certificate_expiration_data.py +123 -0
- clients/ctm_api_client/models/agent_data.py +622 -0
- clients/ctm_api_client/models/agent_debug_information.py +160 -0
- clients/ctm_api_client/models/agent_details.py +247 -0
- clients/ctm_api_client/models/agent_details_list.py +121 -0
- clients/ctm_api_client/models/agent_in_group_params.py +160 -0
- clients/ctm_api_client/models/agent_in_group_params_list.py +121 -0
- clients/ctm_api_client/models/agent_in_hostgroup.py +192 -0
- clients/ctm_api_client/models/agent_info.py +155 -0
- clients/ctm_api_client/models/agent_info_result.py +183 -0
- clients/ctm_api_client/models/agent_mng_auth.py +181 -0
- clients/ctm_api_client/models/agent_sys_param_set_data.py +247 -0
- clients/ctm_api_client/models/agent_sys_param_set_success_data.py +151 -0
- clients/ctm_api_client/models/agent_tables_name.py +121 -0
- clients/ctm_api_client/models/agent_thing_properties.py +177 -0
- clients/ctm_api_client/models/agents_data_list.py +95 -0
- clients/ctm_api_client/models/agents_in_group_list_result.py +95 -0
- clients/ctm_api_client/models/agents_in_group_success_data.py +149 -0
- clients/ctm_api_client/models/agents_sys_param_set_data.py +123 -0
- clients/ctm_api_client/models/ai_deploy_response.py +123 -0
- clients/ctm_api_client/models/ai_error.py +149 -0
- clients/ctm_api_client/models/ai_jobtype.py +218 -0
- clients/ctm_api_client/models/ai_jobtype_list.py +121 -0
- clients/ctm_api_client/models/alert_param.py +191 -0
- clients/ctm_api_client/models/alert_status_param.py +159 -0
- clients/ctm_api_client/models/all_mft_data_settings.py +150 -0
- clients/ctm_api_client/models/allowed_job_actions.py +682 -0
- clients/ctm_api_client/models/allowed_jobs.py +149 -0
- clients/ctm_api_client/models/annotation_details.py +145 -0
- clients/ctm_api_client/models/api_gtw_session.py +121 -0
- clients/ctm_api_client/models/api_throwable.py +147 -0
- clients/ctm_api_client/models/app.py +305 -0
- clients/ctm_api_client/models/app_deploy_response.py +181 -0
- clients/ctm_api_client/models/app_deployed.py +363 -0
- clients/ctm_api_client/models/app_details.py +218 -0
- clients/ctm_api_client/models/app_list.py +147 -0
- clients/ctm_api_client/models/app_predeploy_response.py +151 -0
- clients/ctm_api_client/models/archive_jobs_list.py +189 -0
- clients/ctm_api_client/models/archive_rule.py +392 -0
- clients/ctm_api_client/models/archive_rules_list.py +121 -0
- clients/ctm_api_client/models/as2_key_data.py +185 -0
- clients/ctm_api_client/models/associate_data.py +149 -0
- clients/ctm_api_client/models/authenticate_credentials.py +237 -0
- clients/ctm_api_client/models/authentication_data.py +150 -0
- clients/ctm_api_client/models/availability.py +247 -0
- clients/ctm_api_client/models/certificate_signing_request_data.py +276 -0
- clients/ctm_api_client/models/client_access_privilege_category.py +305 -0
- clients/ctm_api_client/models/cluster.py +179 -0
- clients/ctm_api_client/models/cluster_authorization_data.py +123 -0
- clients/ctm_api_client/models/communication_analysis_response_type.py +189 -0
- clients/ctm_api_client/models/component_key_with_status_type.py +151 -0
- clients/ctm_api_client/models/component_meta_data_properties.py +210 -0
- clients/ctm_api_client/models/component_mft_key_type.py +305 -0
- clients/ctm_api_client/models/condition_properties.py +171 -0
- clients/ctm_api_client/models/configuration_manager_privilege_category.py +276 -0
- clients/ctm_api_client/models/connection_profile_deployment_info.py +247 -0
- clients/ctm_api_client/models/connection_profile_status.py +334 -0
- clients/ctm_api_client/models/connection_profiles_deployment_status_result.py +157 -0
- clients/ctm_api_client/models/connection_profiles_status_result.py +181 -0
- clients/ctm_api_client/models/control_m_authentication_data.py +247 -0
- clients/ctm_api_client/models/cp_mng_auth.py +247 -0
- clients/ctm_api_client/models/ctm_details.py +247 -0
- clients/ctm_api_client/models/ctm_details_list.py +95 -0
- clients/ctm_api_client/models/ctm_name_value_sw.py +147 -0
- clients/ctm_api_client/models/ctmag_set_extract_service_status.py +123 -0
- clients/ctm_api_client/models/ctmagent_basic_info_type.py +303 -0
- clients/ctm_api_client/models/ctmagent_ctm_test_type.py +334 -0
- clients/ctm_api_client/models/ctmagent_state_changed_type.py +218 -0
- clients/ctm_api_client/models/ctmvar_del_result_item.py +123 -0
- clients/ctm_api_client/models/ctmvar_del_results.py +237 -0
- clients/ctm_api_client/models/ctmvar_error_info.py +261 -0
- clients/ctm_api_client/models/ctmvar_get_result_item.py +156 -0
- clients/ctm_api_client/models/ctmvar_get_results.py +237 -0
- clients/ctm_api_client/models/ctmvar_result_item.py +210 -0
- clients/ctm_api_client/models/ctmvar_results.py +237 -0
- clients/ctm_api_client/models/ctmvar_set_result_item.py +123 -0
- clients/ctm_api_client/models/ctmvar_set_results.py +237 -0
- clients/ctm_api_client/models/deploy_jobtype_response.py +155 -0
- clients/ctm_api_client/models/deployment_file_error.py +121 -0
- clients/ctm_api_client/models/deployment_file_results.py +558 -0
- clients/ctm_api_client/models/diagnostics_data_collection_information.py +247 -0
- clients/ctm_api_client/models/diagnostics_data_collection_result.py +151 -0
- clients/ctm_api_client/models/em_basic_active_request_parameters.py +210 -0
- clients/ctm_api_client/models/em_default_request_parameters.py +210 -0
- clients/ctm_api_client/models/em_jobs_id.py +147 -0
- clients/ctm_api_client/models/em_order_folder.py +237 -0
- clients/ctm_api_client/models/em_order_folder_parameters.py +183 -0
- clients/ctm_api_client/models/em_system_parameter.py +123 -0
- clients/ctm_api_client/models/encryption_metadata.py +154 -0
- clients/ctm_api_client/models/error_data.py +276 -0
- clients/ctm_api_client/models/error_list.py +121 -0
- clients/ctm_api_client/models/event.py +177 -0
- clients/ctm_api_client/models/event_param.py +151 -0
- clients/ctm_api_client/models/event_set.py +95 -0
- clients/ctm_api_client/models/external_provider_authentication_data.py +123 -0
- clients/ctm_api_client/models/external_user_data.py +450 -0
- clients/ctm_api_client/models/extract_service_prop_params.py +305 -0
- clients/ctm_api_client/models/field_metadata_properties.py +750 -0
- clients/ctm_api_client/models/field_value.py +148 -0
- clients/ctm_api_client/models/field_values.py +126 -0
- clients/ctm_api_client/models/folder_auth.py +305 -0
- clients/ctm_api_client/models/folder_properties.py +421 -0
- clients/ctm_api_client/models/folder_properties_data.py +398 -0
- clients/ctm_api_client/models/folders_users_settings_and_metadata_properties.py +237 -0
- clients/ctm_api_client/models/folders_users_settings_and_metadata_properties_from_b2_b.py +237 -0
- clients/ctm_api_client/models/fts_authentication_details.py +156 -0
- clients/ctm_api_client/models/fts_ftp_settings.py +363 -0
- clients/ctm_api_client/models/fts_general_settings.py +363 -0
- clients/ctm_api_client/models/fts_ldap_authentication_details.py +305 -0
- clients/ctm_api_client/models/fts_pam_authentication_details.py +123 -0
- clients/ctm_api_client/models/fts_settings_data.py +218 -0
- clients/ctm_api_client/models/fts_sftp_settings.py +334 -0
- clients/ctm_api_client/models/fts_user_home_directory_data.py +151 -0
- clients/ctm_api_client/models/gateway_data.py +208 -0
- clients/ctm_api_client/models/get_alert_info.py +200 -0
- clients/ctm_api_client/models/get_manifest_params.py +535 -0
- clients/ctm_api_client/models/get_manifest_params_result.py +95 -0
- clients/ctm_api_client/models/groups_allowed_folders_properties.py +214 -0
- clients/ctm_api_client/models/host_group_data.py +181 -0
- clients/ctm_api_client/models/host_groups_data_list.py +95 -0
- clients/ctm_api_client/models/host_properties.py +595 -0
- clients/ctm_api_client/models/hostgroup_agent_participation.py +152 -0
- clients/ctm_api_client/models/hostgroup_properties.py +149 -0
- clients/ctm_api_client/models/hostname_port_pair.py +151 -0
- clients/ctm_api_client/models/hub_data.py +276 -0
- clients/ctm_api_client/models/hub_status.py +123 -0
- clients/ctm_api_client/models/job.py +175 -0
- clients/ctm_api_client/models/job_level_auth.py +185 -0
- clients/ctm_api_client/models/job_run_status.py +772 -0
- clients/ctm_api_client/models/job_status_result.py +363 -0
- clients/ctm_api_client/models/jobtype_agent.py +149 -0
- clients/ctm_api_client/models/key_value.py +427 -0
- clients/ctm_api_client/models/key_value_list_result.py +95 -0
- clients/ctm_api_client/models/key_value_type.py +219 -0
- clients/ctm_api_client/models/key_value_type_list_result.py +95 -0
- clients/ctm_api_client/models/known_hosts.py +145 -0
- clients/ctm_api_client/models/ldap_domain_settings.py +291 -0
- clients/ctm_api_client/models/log.py +121 -0
- clients/ctm_api_client/models/log_data_arguments.py +121 -0
- clients/ctm_api_client/models/log_job_parameters.py +183 -0
- clients/ctm_api_client/models/log_job_result_item.py +264 -0
- clients/ctm_api_client/models/log_job_results.py +237 -0
- clients/ctm_api_client/models/log_params.py +218 -0
- clients/ctm_api_client/models/login_credentials.py +151 -0
- clients/ctm_api_client/models/login_result.py +171 -0
- clients/ctm_api_client/models/manifest_group_item_object.py +145 -0
- clients/ctm_api_client/models/manifest_group_object.py +121 -0
- clients/ctm_api_client/models/matching.py +95 -0
- clients/ctm_api_client/models/mft_configuration_data.py +607 -0
- clients/ctm_api_client/models/mft_entities_list_names.py +210 -0
- clients/ctm_api_client/models/mft_external_user_projection_data.py +247 -0
- clients/ctm_api_client/models/mft_folder_projection_data.py +224 -0
- clients/ctm_api_client/models/mft_folder_projection_properties.py +247 -0
- clients/ctm_api_client/models/mft_user_group_projection_data.py +218 -0
- clients/ctm_api_client/models/monitoring_privilege_category.py +151 -0
- clients/ctm_api_client/models/msg_data_arguments.py +121 -0
- clients/ctm_api_client/models/name_value_attribute.py +145 -0
- clients/ctm_api_client/models/new_sample.py +148 -0
- clients/ctm_api_client/models/node.py +272 -0
- clients/ctm_api_client/models/optional_value.py +123 -0
- clients/ctm_api_client/models/order_folder_parameters.py +450 -0
- clients/ctm_api_client/models/order_folder_result_item.py +279 -0
- clients/ctm_api_client/models/order_folder_results.py +237 -0
- clients/ctm_api_client/models/order_parameters.py +361 -0
- clients/ctm_api_client/models/ordered_item_item.py +333 -0
- clients/ctm_api_client/models/output.py +121 -0
- clients/ctm_api_client/models/output_params.py +218 -0
- clients/ctm_api_client/models/passwords_object.py +181 -0
- clients/ctm_api_client/models/performance.py +241 -0
- clients/ctm_api_client/models/pgp_template_data.py +305 -0
- clients/ctm_api_client/models/ping_agent_params.py +155 -0
- clients/ctm_api_client/models/planning_privilege_category.py +224 -0
- clients/ctm_api_client/models/plugin_data.py +363 -0
- clients/ctm_api_client/models/plugin_mng_auth.py +218 -0
- clients/ctm_api_client/models/pool_variables_error_info.py +147 -0
- clients/ctm_api_client/models/pool_variables_name.py +147 -0
- clients/ctm_api_client/models/pool_variables_name_value.py +153 -0
- clients/ctm_api_client/models/possible_value_properties.py +171 -0
- clients/ctm_api_client/models/privilege_name.py +149 -0
- clients/ctm_api_client/models/privilege_name_controlm.py +181 -0
- clients/ctm_api_client/models/privileges.py +264 -0
- clients/ctm_api_client/models/product_description.py +247 -0
- clients/ctm_api_client/models/product_sections.py +155 -0
- clients/ctm_api_client/models/provision_advance_parameters.py +218 -0
- clients/ctm_api_client/models/query.py +171 -0
- clients/ctm_api_client/models/raw_cms_xml_request.py +155 -0
- clients/ctm_api_client/models/read_only_status.py +123 -0
- clients/ctm_api_client/models/report_date_time_settings.py +183 -0
- clients/ctm_api_client/models/report_filter.py +151 -0
- clients/ctm_api_client/models/report_filters.py +95 -0
- clients/ctm_api_client/models/report_result.py +126 -0
- clients/ctm_api_client/models/request_parameters_wrapper_em_default_request_parameters_log_job_parameters.py +159 -0
- clients/ctm_api_client/models/request_parameters_wrapper_em_default_request_parameters_why_job_parameter.py +159 -0
- clients/ctm_api_client/models/rerun_parameters.py +123 -0
- clients/ctm_api_client/models/rerun_zos_parameters.py +305 -0
- clients/ctm_api_client/models/resource_max.py +124 -0
- clients/ctm_api_client/models/resource_obj.py +247 -0
- clients/ctm_api_client/models/resource_param.py +151 -0
- clients/ctm_api_client/models/resource_set.py +95 -0
- clients/ctm_api_client/models/restart_step.py +149 -0
- clients/ctm_api_client/models/results_status.py +210 -0
- clients/ctm_api_client/models/role_data.py +785 -0
- clients/ctm_api_client/models/role_data_full.py +189 -0
- clients/ctm_api_client/models/role_header.py +149 -0
- clients/ctm_api_client/models/role_header_list.py +95 -0
- clients/ctm_api_client/models/role_properties.py +123 -0
- clients/ctm_api_client/models/rule_criteria.py +177 -0
- clients/ctm_api_client/models/rule_projection.py +264 -0
- clients/ctm_api_client/models/rule_statistics.py +301 -0
- clients/ctm_api_client/models/rules_statistic_list.py +121 -0
- clients/ctm_api_client/models/rules_statistic_list_summary.py +147 -0
- clients/ctm_api_client/models/run_as_user_data.py +213 -0
- clients/ctm_api_client/models/run_as_user_details_data.py +149 -0
- clients/ctm_api_client/models/run_as_user_key_data.py +151 -0
- clients/ctm_api_client/models/run_as_users_list.py +95 -0
- clients/ctm_api_client/models/run_report.py +217 -0
- clients/ctm_api_client/models/run_report_info.py +264 -0
- clients/ctm_api_client/models/run_result.py +184 -0
- clients/ctm_api_client/models/runas_definition_auth.py +151 -0
- clients/ctm_api_client/models/runas_user_auth.py +181 -0
- clients/ctm_api_client/models/saml2_identity_provider.py +216 -0
- clients/ctm_api_client/models/saml_status.py +123 -0
- clients/ctm_api_client/models/sample.py +175 -0
- clients/ctm_api_client/models/search_params.py +689 -0
- clients/ctm_api_client/models/search_tag_tuple.py +145 -0
- clients/ctm_api_client/models/secret_key_value.py +152 -0
- clients/ctm_api_client/models/secret_value.py +123 -0
- clients/ctm_api_client/models/section_metadata_properties.py +237 -0
- clients/ctm_api_client/models/service_auth.py +185 -0
- clients/ctm_api_client/models/service_auth_action.py +247 -0
- clients/ctm_api_client/models/service_provider_information.py +210 -0
- clients/ctm_api_client/models/set_agent_params.py +177 -0
- clients/ctm_api_client/models/set_agent_params_list.py +121 -0
- clients/ctm_api_client/models/setting_key_properties.py +150 -0
- clients/ctm_api_client/models/setting_properties.py +177 -0
- clients/ctm_api_client/models/setting_properties_object.py +121 -0
- clients/ctm_api_client/models/settings_metadata_properties.py +218 -0
- clients/ctm_api_client/models/settings_update_object.py +154 -0
- clients/ctm_api_client/models/sla_service.py +682 -0
- clients/ctm_api_client/models/sla_service_status_by_jobs.py +363 -0
- clients/ctm_api_client/models/ssh_key_properties.py +181 -0
- clients/ctm_api_client/models/statistics.py +216 -0
- clients/ctm_api_client/models/statistics_average_info.py +181 -0
- clients/ctm_api_client/models/statistics_period.py +151 -0
- clients/ctm_api_client/models/statistics_run_info.py +150 -0
- clients/ctm_api_client/models/statistics_single_run.py +276 -0
- clients/ctm_api_client/models/string_list_result.py +95 -0
- clients/ctm_api_client/models/success_data.py +123 -0
- clients/ctm_api_client/models/summary.py +210 -0
- clients/ctm_api_client/models/system_parameter.py +177 -0
- clients/ctm_api_client/models/system_setting.py +426 -0
- clients/ctm_api_client/models/system_setting_annotation_property.py +95 -0
- clients/ctm_api_client/models/system_setting_key_value.py +155 -0
- clients/ctm_api_client/models/system_setting_key_value_component.py +183 -0
- clients/ctm_api_client/models/system_setting_ldap.py +182 -0
- clients/ctm_api_client/models/system_setting_property.py +126 -0
- clients/ctm_api_client/models/term_group.py +95 -0
- clients/ctm_api_client/models/token_data_request.py +221 -0
- clients/ctm_api_client/models/token_data_response.py +343 -0
- clients/ctm_api_client/models/token_list.py +126 -0
- clients/ctm_api_client/models/token_list_array.py +95 -0
- clients/ctm_api_client/models/tools_privilege_category.py +189 -0
- clients/ctm_api_client/models/topology.py +121 -0
- clients/ctm_api_client/models/upgrade_agent_info.py +276 -0
- clients/ctm_api_client/models/upgrade_agent_info_list.py +95 -0
- clients/ctm_api_client/models/upgrade_info.py +149 -0
- clients/ctm_api_client/models/upgrade_notification.py +121 -0
- clients/ctm_api_client/models/upgrade_record.py +624 -0
- clients/ctm_api_client/models/upgrade_record_list.py +121 -0
- clients/ctm_api_client/models/upgrade_request.py +334 -0
- clients/ctm_api_client/models/upgrade_response.py +123 -0
- clients/ctm_api_client/models/user_additional_properties.py +187 -0
- clients/ctm_api_client/models/user_allowed_folders_properties.py +615 -0
- clients/ctm_api_client/models/user_data.py +272 -0
- clients/ctm_api_client/models/user_group_details_data.py +151 -0
- clients/ctm_api_client/models/user_group_properties_data.py +185 -0
- clients/ctm_api_client/models/user_header.py +305 -0
- clients/ctm_api_client/models/user_password.py +123 -0
- clients/ctm_api_client/models/user_preferences.py +121 -0
- clients/ctm_api_client/models/validation_properties.py +345 -0
- clients/ctm_api_client/models/value.py +126 -0
- clients/ctm_api_client/models/values.py +95 -0
- clients/ctm_api_client/models/variable_name_value.py +150 -0
- clients/ctm_api_client/models/variable_names.py +123 -0
- clients/ctm_api_client/models/variables.py +123 -0
- clients/ctm_api_client/models/viewpoint_manager_privilege_category.py +218 -0
- clients/ctm_api_client/models/warning_data.py +276 -0
- clients/ctm_api_client/models/warning_list.py +121 -0
- clients/ctm_api_client/models/warnings_collection.py +121 -0
- clients/ctm_api_client/models/why_job_parameters.py +121 -0
- clients/ctm_api_client/models/why_job_result_item.py +121 -0
- clients/ctm_api_client/models/why_job_results.py +237 -0
- clients/ctm_api_client/models/workflow_insights_status.py +150 -0
- clients/ctm_api_client/models/workload_policies_file_results.py +243 -0
- clients/ctm_api_client/models/workload_policy.py +276 -0
- clients/ctm_api_client/models/workload_policy_list.py +121 -0
- clients/ctm_api_client/models/workload_policy_state.py +149 -0
- clients/ctm_api_client/models/workload_policy_state_list.py +121 -0
- clients/ctm_api_client/models/workspace_folder.py +158 -0
- clients/ctm_api_client/models/workspace_folders.py +121 -0
- clients/ctm_api_client/models/zoo_keeper.py +276 -0
- clients/ctm_api_client/models/zos_template_data.py +595 -0
- clients/ctm_api_client/rest.py +415 -0
- clients/ctm_saas_client/__init__.py +347 -0
- clients/ctm_saas_client/api/__init__.py +13 -0
- clients/ctm_saas_client/api/authentication_api.py +513 -0
- clients/ctm_saas_client/api/build_api.py +137 -0
- clients/ctm_saas_client/api/config_api.py +6456 -0
- clients/ctm_saas_client/api/deploy_api.py +2023 -0
- clients/ctm_saas_client/api/provision_api.py +133 -0
- clients/ctm_saas_client/api/reporting_api.py +319 -0
- clients/ctm_saas_client/api/run_api.py +3223 -0
- clients/ctm_saas_client/api/usage_api.py +129 -0
- clients/ctm_saas_client/api_client.py +640 -0
- clients/ctm_saas_client/configuration.py +255 -0
- clients/ctm_saas_client/models/__init__.py +333 -0
- clients/ctm_saas_client/models/actions_auth_record.py +368 -0
- clients/ctm_saas_client/models/active_services.py +149 -0
- clients/ctm_saas_client/models/add_agent_params.py +295 -0
- clients/ctm_saas_client/models/add_ons.py +125 -0
- clients/ctm_saas_client/models/add_remote_host_params.py +265 -0
- clients/ctm_saas_client/models/add_remove_success_data.py +153 -0
- clients/ctm_saas_client/models/add_server_params.py +212 -0
- clients/ctm_saas_client/models/agent_certificate_expiration_data.py +125 -0
- clients/ctm_saas_client/models/agent_data.py +599 -0
- clients/ctm_saas_client/models/agent_debug_information.py +155 -0
- clients/ctm_saas_client/models/agent_details.py +237 -0
- clients/ctm_saas_client/models/agent_details_list.py +123 -0
- clients/ctm_saas_client/models/agent_in_group_params.py +154 -0
- clients/ctm_saas_client/models/agent_in_group_params_list.py +123 -0
- clients/ctm_saas_client/models/agent_in_hostgroup.py +182 -0
- clients/ctm_saas_client/models/agent_info.py +155 -0
- clients/ctm_saas_client/models/agent_info_result.py +183 -0
- clients/ctm_saas_client/models/agent_mng_auth.py +181 -0
- clients/ctm_saas_client/models/agent_sys_param_set_data.py +237 -0
- clients/ctm_saas_client/models/agent_sys_param_set_success_data.py +153 -0
- clients/ctm_saas_client/models/agent_tables_name.py +123 -0
- clients/ctm_saas_client/models/agent_thing_properties.py +181 -0
- clients/ctm_saas_client/models/agents_data_list.py +95 -0
- clients/ctm_saas_client/models/agents_in_group_list_result.py +95 -0
- clients/ctm_saas_client/models/agents_in_group_success_data.py +153 -0
- clients/ctm_saas_client/models/agents_sys_param_set_data.py +125 -0
- clients/ctm_saas_client/models/ai_deploy_response.py +125 -0
- clients/ctm_saas_client/models/ai_error.py +153 -0
- clients/ctm_saas_client/models/ai_jobtype.py +209 -0
- clients/ctm_saas_client/models/ai_jobtype_list.py +123 -0
- clients/ctm_saas_client/models/alert_param.py +189 -0
- clients/ctm_saas_client/models/alert_status_param.py +161 -0
- clients/ctm_saas_client/models/all_mft_data_settings.py +149 -0
- clients/ctm_saas_client/models/allowed_job_actions.py +657 -0
- clients/ctm_saas_client/models/allowed_jobs.py +153 -0
- clients/ctm_saas_client/models/annotation_details.py +149 -0
- clients/ctm_saas_client/models/api_gtw_session.py +123 -0
- clients/ctm_saas_client/models/api_throwable.py +149 -0
- clients/ctm_saas_client/models/app.py +293 -0
- clients/ctm_saas_client/models/app_deploy_response.py +181 -0
- clients/ctm_saas_client/models/app_deployed.py +349 -0
- clients/ctm_saas_client/models/app_details.py +209 -0
- clients/ctm_saas_client/models/app_list.py +149 -0
- clients/ctm_saas_client/models/app_predeploy_response.py +153 -0
- clients/ctm_saas_client/models/archive_jobs_list.py +175 -0
- clients/ctm_saas_client/models/archive_rule.py +377 -0
- clients/ctm_saas_client/models/archive_rules_list.py +123 -0
- clients/ctm_saas_client/models/as2_key_data.py +181 -0
- clients/ctm_saas_client/models/associate_data.py +153 -0
- clients/ctm_saas_client/models/authenticate_credentials.py +227 -0
- clients/ctm_saas_client/models/authentication_data.py +149 -0
- clients/ctm_saas_client/models/availability.py +237 -0
- clients/ctm_saas_client/models/aysnc_poll_deployment_file_results.py +149 -0
- clients/ctm_saas_client/models/certificate_signing_request_data.py +265 -0
- clients/ctm_saas_client/models/client_access_privilege_category.py +293 -0
- clients/ctm_saas_client/models/cluster.py +175 -0
- clients/ctm_saas_client/models/cluster_authorization_data.py +125 -0
- clients/ctm_saas_client/models/communication_analysis_response_type.py +181 -0
- clients/ctm_saas_client/models/component_key_with_status_type.py +153 -0
- clients/ctm_saas_client/models/component_meta_data_properties.py +201 -0
- clients/ctm_saas_client/models/component_mft_key_type.py +293 -0
- clients/ctm_saas_client/models/condition_properties.py +175 -0
- clients/ctm_saas_client/models/configuration_manager_privilege_category.py +265 -0
- clients/ctm_saas_client/models/connection_profile_deployment_info.py +237 -0
- clients/ctm_saas_client/models/connection_profile_status.py +321 -0
- clients/ctm_saas_client/models/connection_profiles_deployment_status_result.py +153 -0
- clients/ctm_saas_client/models/connection_profiles_status_result.py +181 -0
- clients/ctm_saas_client/models/control_m_authentication_data.py +237 -0
- clients/ctm_saas_client/models/cp_mng_auth.py +237 -0
- clients/ctm_saas_client/models/ctm_details.py +237 -0
- clients/ctm_saas_client/models/ctm_details_list.py +95 -0
- clients/ctm_saas_client/models/ctm_name_value_sw.py +149 -0
- clients/ctm_saas_client/models/ctmag_set_extract_service_status.py +125 -0
- clients/ctm_saas_client/models/ctmagent_basic_info_type.py +291 -0
- clients/ctm_saas_client/models/ctmagent_ctm_test_type.py +321 -0
- clients/ctm_saas_client/models/ctmagent_state_changed_type.py +209 -0
- clients/ctm_saas_client/models/ctmvar_del_result_item.py +123 -0
- clients/ctm_saas_client/models/ctmvar_del_results.py +227 -0
- clients/ctm_saas_client/models/ctmvar_error_info.py +222 -0
- clients/ctm_saas_client/models/ctmvar_get_result_item.py +149 -0
- clients/ctm_saas_client/models/ctmvar_get_results.py +227 -0
- clients/ctm_saas_client/models/ctmvar_result_item.py +201 -0
- clients/ctm_saas_client/models/ctmvar_results.py +227 -0
- clients/ctm_saas_client/models/ctmvar_set_result_item.py +123 -0
- clients/ctm_saas_client/models/ctmvar_set_results.py +227 -0
- clients/ctm_saas_client/models/deploy_async_results.py +125 -0
- clients/ctm_saas_client/models/deploy_jobtype_response.py +151 -0
- clients/ctm_saas_client/models/deployment_file_error.py +123 -0
- clients/ctm_saas_client/models/deployment_file_results.py +615 -0
- clients/ctm_saas_client/models/diagnostics_data_collection_information.py +237 -0
- clients/ctm_saas_client/models/diagnostics_data_collection_result.py +153 -0
- clients/ctm_saas_client/models/em_basic_active_request_parameters.py +201 -0
- clients/ctm_saas_client/models/em_default_request_parameters.py +201 -0
- clients/ctm_saas_client/models/em_jobs_id.py +149 -0
- clients/ctm_saas_client/models/em_order_folder.py +227 -0
- clients/ctm_saas_client/models/em_order_folder_parameters.py +175 -0
- clients/ctm_saas_client/models/em_system_parameter.py +125 -0
- clients/ctm_saas_client/models/encryption_metadata.py +153 -0
- clients/ctm_saas_client/models/error_data.py +265 -0
- clients/ctm_saas_client/models/error_list.py +123 -0
- clients/ctm_saas_client/models/event.py +181 -0
- clients/ctm_saas_client/models/event_param.py +151 -0
- clients/ctm_saas_client/models/event_set.py +95 -0
- clients/ctm_saas_client/models/external_provider_authentication_data.py +125 -0
- clients/ctm_saas_client/models/external_user_data.py +433 -0
- clients/ctm_saas_client/models/extract_service_prop_params.py +293 -0
- clients/ctm_saas_client/models/field_metadata_properties.py +721 -0
- clients/ctm_saas_client/models/field_value.py +150 -0
- clients/ctm_saas_client/models/field_values.py +126 -0
- clients/ctm_saas_client/models/folder_auth.py +293 -0
- clients/ctm_saas_client/models/folder_properties.py +405 -0
- clients/ctm_saas_client/models/folder_properties_data.py +377 -0
- clients/ctm_saas_client/models/folders_users_settings_and_metadata_properties.py +227 -0
- clients/ctm_saas_client/models/folders_users_settings_and_metadata_properties_from_b2_b.py +227 -0
- clients/ctm_saas_client/models/fts_authentication_details.py +149 -0
- clients/ctm_saas_client/models/fts_ftp_settings.py +349 -0
- clients/ctm_saas_client/models/fts_general_settings.py +349 -0
- clients/ctm_saas_client/models/fts_ldap_authentication_details.py +293 -0
- clients/ctm_saas_client/models/fts_pam_authentication_details.py +125 -0
- clients/ctm_saas_client/models/fts_settings_data.py +209 -0
- clients/ctm_saas_client/models/fts_sftp_settings.py +321 -0
- clients/ctm_saas_client/models/fts_user_home_directory_data.py +153 -0
- clients/ctm_saas_client/models/gateway_data.py +209 -0
- clients/ctm_saas_client/models/get_alert_info.py +201 -0
- clients/ctm_saas_client/models/get_manifest_params.py +515 -0
- clients/ctm_saas_client/models/get_manifest_params_result.py +95 -0
- clients/ctm_saas_client/models/groups_allowed_folders_properties.py +205 -0
- clients/ctm_saas_client/models/host_group_data.py +181 -0
- clients/ctm_saas_client/models/host_groups_data_list.py +95 -0
- clients/ctm_saas_client/models/host_properties.py +573 -0
- clients/ctm_saas_client/models/hostgroup_agent_participation.py +154 -0
- clients/ctm_saas_client/models/hostgroup_properties.py +153 -0
- clients/ctm_saas_client/models/hostname_port_pair.py +153 -0
- clients/ctm_saas_client/models/hub_data.py +293 -0
- clients/ctm_saas_client/models/hub_status.py +125 -0
- clients/ctm_saas_client/models/job.py +175 -0
- clients/ctm_saas_client/models/job_level_auth.py +181 -0
- clients/ctm_saas_client/models/job_run_status.py +742 -0
- clients/ctm_saas_client/models/job_status_result.py +349 -0
- clients/ctm_saas_client/models/jobtype_agent.py +153 -0
- clients/ctm_saas_client/models/key_value.py +407 -0
- clients/ctm_saas_client/models/key_value_list_result.py +95 -0
- clients/ctm_saas_client/models/key_value_type.py +211 -0
- clients/ctm_saas_client/models/key_value_type_list_result.py +95 -0
- clients/ctm_saas_client/models/known_hosts.py +149 -0
- clients/ctm_saas_client/models/ldap_domain_settings.py +279 -0
- clients/ctm_saas_client/models/log.py +123 -0
- clients/ctm_saas_client/models/log_data_arguments.py +123 -0
- clients/ctm_saas_client/models/log_job_parameters.py +175 -0
- clients/ctm_saas_client/models/log_job_result_item.py +253 -0
- clients/ctm_saas_client/models/log_job_results.py +227 -0
- clients/ctm_saas_client/models/log_params.py +209 -0
- clients/ctm_saas_client/models/login_credentials.py +151 -0
- clients/ctm_saas_client/models/login_result.py +175 -0
- clients/ctm_saas_client/models/manifest_group_item_object.py +149 -0
- clients/ctm_saas_client/models/manifest_group_object.py +123 -0
- clients/ctm_saas_client/models/matching.py +95 -0
- clients/ctm_saas_client/models/mft_configuration_data.py +573 -0
- clients/ctm_saas_client/models/mft_entities_list_names.py +201 -0
- clients/ctm_saas_client/models/mft_external_user_projection_data.py +237 -0
- clients/ctm_saas_client/models/mft_folder_projection_data.py +209 -0
- clients/ctm_saas_client/models/mft_folder_projection_properties.py +237 -0
- clients/ctm_saas_client/models/mft_user_group_projection_data.py +209 -0
- clients/ctm_saas_client/models/monitoring_privilege_category.py +153 -0
- clients/ctm_saas_client/models/msg_data_arguments.py +123 -0
- clients/ctm_saas_client/models/name_status.py +149 -0
- clients/ctm_saas_client/models/name_value_attribute.py +149 -0
- clients/ctm_saas_client/models/new_sample.py +150 -0
- clients/ctm_saas_client/models/node.py +261 -0
- clients/ctm_saas_client/models/optional_value.py +125 -0
- clients/ctm_saas_client/models/order_folder_parameters.py +433 -0
- clients/ctm_saas_client/models/order_folder_result_item.py +260 -0
- clients/ctm_saas_client/models/order_folder_results.py +227 -0
- clients/ctm_saas_client/models/order_parameters.py +338 -0
- clients/ctm_saas_client/models/ordered_item_item.py +312 -0
- clients/ctm_saas_client/models/organization_group_export_data.py +125 -0
- clients/ctm_saas_client/models/organization_group_info.py +181 -0
- clients/ctm_saas_client/models/organization_group_name.py +153 -0
- clients/ctm_saas_client/models/organization_group_user_authorization_simulation_data.py +151 -0
- clients/ctm_saas_client/models/output.py +123 -0
- clients/ctm_saas_client/models/output_params.py +209 -0
- clients/ctm_saas_client/models/passwords_object.py +181 -0
- clients/ctm_saas_client/models/performance.py +237 -0
- clients/ctm_saas_client/models/pgp_template_data.py +293 -0
- clients/ctm_saas_client/models/ping_agent_params.py +155 -0
- clients/ctm_saas_client/models/planning_privilege_category.py +209 -0
- clients/ctm_saas_client/models/plugin_data.py +349 -0
- clients/ctm_saas_client/models/plugin_mng_auth.py +209 -0
- clients/ctm_saas_client/models/pool_variables_error_info.py +149 -0
- clients/ctm_saas_client/models/pool_variables_name.py +149 -0
- clients/ctm_saas_client/models/pool_variables_name_value.py +149 -0
- clients/ctm_saas_client/models/possible_value_properties.py +175 -0
- clients/ctm_saas_client/models/privilege_name.py +153 -0
- clients/ctm_saas_client/models/privilege_name_controlm.py +181 -0
- clients/ctm_saas_client/models/privileges.py +253 -0
- clients/ctm_saas_client/models/product_description.py +237 -0
- clients/ctm_saas_client/models/product_sections.py +151 -0
- clients/ctm_saas_client/models/provision_advance_parameters.py +209 -0
- clients/ctm_saas_client/models/query.py +175 -0
- clients/ctm_saas_client/models/raw_cms_xml_request.py +151 -0
- clients/ctm_saas_client/models/read_only_status.py +125 -0
- clients/ctm_saas_client/models/report_date_time_settings.py +175 -0
- clients/ctm_saas_client/models/report_filter.py +151 -0
- clients/ctm_saas_client/models/report_filters.py +95 -0
- clients/ctm_saas_client/models/report_result.py +126 -0
- clients/ctm_saas_client/models/request_parameters_wrapper_em_default_request_parameters_log_job_parameters.py +149 -0
- clients/ctm_saas_client/models/request_parameters_wrapper_em_default_request_parameters_why_job_parameter.py +149 -0
- clients/ctm_saas_client/models/rerun_parameters.py +125 -0
- clients/ctm_saas_client/models/rerun_zos_parameters.py +293 -0
- clients/ctm_saas_client/models/resource_max.py +124 -0
- clients/ctm_saas_client/models/resource_obj.py +237 -0
- clients/ctm_saas_client/models/resource_param.py +151 -0
- clients/ctm_saas_client/models/resource_set.py +95 -0
- clients/ctm_saas_client/models/restart_step.py +153 -0
- clients/ctm_saas_client/models/results_status.py +201 -0
- clients/ctm_saas_client/models/role_data.py +755 -0
- clients/ctm_saas_client/models/role_data_full.py +181 -0
- clients/ctm_saas_client/models/role_header.py +153 -0
- clients/ctm_saas_client/models/role_header_list.py +95 -0
- clients/ctm_saas_client/models/role_properties.py +125 -0
- clients/ctm_saas_client/models/rule_criteria.py +177 -0
- clients/ctm_saas_client/models/rule_projection.py +253 -0
- clients/ctm_saas_client/models/rule_statistics.py +286 -0
- clients/ctm_saas_client/models/rules_statistic_list.py +123 -0
- clients/ctm_saas_client/models/rules_statistic_list_summary.py +149 -0
- clients/ctm_saas_client/models/run_as_user_data.py +209 -0
- clients/ctm_saas_client/models/run_as_user_details_data.py +153 -0
- clients/ctm_saas_client/models/run_as_user_key_data.py +153 -0
- clients/ctm_saas_client/models/run_as_users_list.py +95 -0
- clients/ctm_saas_client/models/run_report.py +206 -0
- clients/ctm_saas_client/models/run_report_info.py +253 -0
- clients/ctm_saas_client/models/run_result.py +182 -0
- clients/ctm_saas_client/models/runas_definition_auth.py +153 -0
- clients/ctm_saas_client/models/runas_user_auth.py +181 -0
- clients/ctm_saas_client/models/saml2_identity_provider.py +203 -0
- clients/ctm_saas_client/models/saml_status.py +125 -0
- clients/ctm_saas_client/models/sample.py +177 -0
- clients/ctm_saas_client/models/search_params.py +664 -0
- clients/ctm_saas_client/models/search_tag_tuple.py +149 -0
- clients/ctm_saas_client/models/secret_key_value.py +154 -0
- clients/ctm_saas_client/models/secret_value.py +125 -0
- clients/ctm_saas_client/models/section_metadata_properties.py +227 -0
- clients/ctm_saas_client/models/service_auth.py +181 -0
- clients/ctm_saas_client/models/service_auth_action.py +237 -0
- clients/ctm_saas_client/models/service_provider_information.py +201 -0
- clients/ctm_saas_client/models/set_agent_params.py +181 -0
- clients/ctm_saas_client/models/set_agent_params_list.py +123 -0
- clients/ctm_saas_client/models/setting_key_properties.py +149 -0
- clients/ctm_saas_client/models/setting_properties.py +181 -0
- clients/ctm_saas_client/models/setting_properties_object.py +123 -0
- clients/ctm_saas_client/models/settings_metadata_properties.py +201 -0
- clients/ctm_saas_client/models/settings_update_object.py +153 -0
- clients/ctm_saas_client/models/sla_service.py +657 -0
- clients/ctm_saas_client/models/sla_service_status_by_jobs.py +349 -0
- clients/ctm_saas_client/models/ssh_key_properties.py +181 -0
- clients/ctm_saas_client/models/statistics.py +207 -0
- clients/ctm_saas_client/models/statistics_average_info.py +181 -0
- clients/ctm_saas_client/models/statistics_period.py +153 -0
- clients/ctm_saas_client/models/statistics_run_info.py +151 -0
- clients/ctm_saas_client/models/statistics_single_run.py +265 -0
- clients/ctm_saas_client/models/string_list_result.py +95 -0
- clients/ctm_saas_client/models/success_data.py +125 -0
- clients/ctm_saas_client/models/summary.py +201 -0
- clients/ctm_saas_client/models/system_parameter.py +181 -0
- clients/ctm_saas_client/models/system_setting.py +435 -0
- clients/ctm_saas_client/models/system_setting_annotation_property.py +95 -0
- clients/ctm_saas_client/models/system_setting_key_value.py +155 -0
- clients/ctm_saas_client/models/system_setting_key_value_component.py +183 -0
- clients/ctm_saas_client/models/system_setting_ldap.py +176 -0
- clients/ctm_saas_client/models/system_setting_property.py +126 -0
- clients/ctm_saas_client/models/term_group.py +95 -0
- clients/ctm_saas_client/models/token_data_request.py +210 -0
- clients/ctm_saas_client/models/token_data_response.py +324 -0
- clients/ctm_saas_client/models/token_list.py +126 -0
- clients/ctm_saas_client/models/token_list_array.py +95 -0
- clients/ctm_saas_client/models/tools_privilege_category.py +181 -0
- clients/ctm_saas_client/models/topology.py +123 -0
- clients/ctm_saas_client/models/upgrade_agent_info.py +265 -0
- clients/ctm_saas_client/models/upgrade_agent_info_list.py +95 -0
- clients/ctm_saas_client/models/upgrade_info.py +153 -0
- clients/ctm_saas_client/models/upgrade_notification.py +123 -0
- clients/ctm_saas_client/models/upgrade_record.py +601 -0
- clients/ctm_saas_client/models/upgrade_record_list.py +123 -0
- clients/ctm_saas_client/models/upgrade_request.py +321 -0
- clients/ctm_saas_client/models/upgrade_response.py +125 -0
- clients/ctm_saas_client/models/user_additional_properties.py +179 -0
- clients/ctm_saas_client/models/user_allowed_folders_properties.py +591 -0
- clients/ctm_saas_client/models/user_data.py +261 -0
- clients/ctm_saas_client/models/user_group_details_data.py +153 -0
- clients/ctm_saas_client/models/user_group_properties_data.py +181 -0
- clients/ctm_saas_client/models/user_header.py +293 -0
- clients/ctm_saas_client/models/user_password.py +125 -0
- clients/ctm_saas_client/models/user_preferences.py +125 -0
- clients/ctm_saas_client/models/validation_properties.py +331 -0
- clients/ctm_saas_client/models/value.py +126 -0
- clients/ctm_saas_client/models/values.py +95 -0
- clients/ctm_saas_client/models/variable_name_value.py +149 -0
- clients/ctm_saas_client/models/variable_names.py +125 -0
- clients/ctm_saas_client/models/variables.py +125 -0
- clients/ctm_saas_client/models/viewpoint_manager_privilege_category.py +209 -0
- clients/ctm_saas_client/models/warning_data.py +265 -0
- clients/ctm_saas_client/models/warning_list.py +123 -0
- clients/ctm_saas_client/models/warnings_collection.py +123 -0
- clients/ctm_saas_client/models/why_job_parameters.py +123 -0
- clients/ctm_saas_client/models/why_job_result_item.py +123 -0
- clients/ctm_saas_client/models/why_job_results.py +227 -0
- clients/ctm_saas_client/models/workflow_insights_status.py +149 -0
- clients/ctm_saas_client/models/workload_policies_file_results.py +233 -0
- clients/ctm_saas_client/models/workload_policy.py +265 -0
- clients/ctm_saas_client/models/workload_policy_list.py +123 -0
- clients/ctm_saas_client/models/workload_policy_state.py +153 -0
- clients/ctm_saas_client/models/workload_policy_state_list.py +123 -0
- clients/ctm_saas_client/models/workspace_folder.py +152 -0
- clients/ctm_saas_client/models/workspace_folders.py +123 -0
- clients/ctm_saas_client/models/zoo_keeper.py +265 -0
- clients/ctm_saas_client/models/zos_template_data.py +573 -0
- clients/ctm_saas_client/rest.py +323 -0
- ctm_python_client/__init__.py +2 -0
- ctm_python_client/core/__init__.py +0 -0
- ctm_python_client/core/comm.py +181 -0
- ctm_python_client/core/credential.py +44 -0
- ctm_python_client/core/monitoring.py +382 -0
- ctm_python_client/core/workflow.py +413 -0
- ctm_python_client/ext/__init__.py +0 -0
- ctm_python_client/ext/autogen.py +243 -0
- ctm_python_client/ext/credential.py +18 -0
- ctm_python_client/ext/viz.py +55 -0
- ctm_python_client-2.1.2.dist-info/LICENSE +29 -0
- ctm_python_client-2.1.2.dist-info/METADATA +19 -0
- ctm_python_client-2.1.2.dist-info/RECORD +745 -0
- ctm_python_client-2.1.2.dist-info/WHEEL +5 -0
- ctm_python_client-2.1.2.dist-info/top_level.txt +3 -0
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import abc
|
|
2
|
+
import typing
|
|
3
|
+
import attrs
|
|
4
|
+
import json
|
|
5
|
+
import pathlib
|
|
6
|
+
import random
|
|
7
|
+
import tempfile
|
|
8
|
+
import collections
|
|
9
|
+
import copy
|
|
10
|
+
|
|
11
|
+
from aapi import *
|
|
12
|
+
from ctm_python_client.core.comm import AAPIClientResponse, AbstractAAPIClient, Environment, EnvironmentMode, OnPremAAPIClient, SaasAAPIClient, sanitize_output
|
|
13
|
+
from ctm_python_client.core.monitoring import RunMonitor
|
|
14
|
+
|
|
15
|
+
__all__ = ['AbstractWorkflow', 'WorkflowDefaults', 'BaseWorkflow', 'Workflow']
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class AbstractWorkflow(abc.ABC):
|
|
19
|
+
@abc.abstractclassmethod
|
|
20
|
+
def add(self, ):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
@abc.abstractclassmethod
|
|
24
|
+
def chain(self, ):
|
|
25
|
+
pass
|
|
26
|
+
|
|
27
|
+
@abc.abstractclassmethod
|
|
28
|
+
def connect(self,):
|
|
29
|
+
pass
|
|
30
|
+
|
|
31
|
+
@abc.abstractclassmethod
|
|
32
|
+
def get(self,):
|
|
33
|
+
pass
|
|
34
|
+
|
|
35
|
+
@abc.abstractclassmethod
|
|
36
|
+
def get_objects(self,):
|
|
37
|
+
pass
|
|
38
|
+
|
|
39
|
+
@abc.abstractclassmethod
|
|
40
|
+
def dump_json(self,):
|
|
41
|
+
pass
|
|
42
|
+
|
|
43
|
+
@abc.abstractclassmethod
|
|
44
|
+
def dumps_json(self,):
|
|
45
|
+
pass
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
# class AbstractWorkflowManager(AbstractWorkflow):
|
|
49
|
+
|
|
50
|
+
# @abc.abstractclassmethod
|
|
51
|
+
# def build(self, ):
|
|
52
|
+
# pass
|
|
53
|
+
|
|
54
|
+
# @abc.abstractclassmethod
|
|
55
|
+
# def deploy(self,):
|
|
56
|
+
# pass
|
|
57
|
+
|
|
58
|
+
# @abc.abstractclassmethod
|
|
59
|
+
# def run(self,):
|
|
60
|
+
# pass
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
@attrs.define(kw_only=True)
|
|
64
|
+
class WorkflowDefaults:
|
|
65
|
+
controlm_server: str = attrs.field(
|
|
66
|
+
default=None, metadata={'applyon': ['Folder', 'SimpleFolder']})
|
|
67
|
+
run_as: str = attrs.field(default=None, metadata={'applyon': [
|
|
68
|
+
'Folder', 'SimpleFolder', 'SubFolder', 'Job']})
|
|
69
|
+
host: str = attrs.field(default=None, metadata={'applyon': ['Job']})
|
|
70
|
+
when: Job.When = attrs.field(default=None, metadata={
|
|
71
|
+
'applyon': ['Folder', 'Job']})
|
|
72
|
+
application: str = attrs.field(default=None, metadata={'applyon': [
|
|
73
|
+
'Folder', 'SimpleFolder', 'SubFolder', 'Job']})
|
|
74
|
+
sub_application: str = attrs.field(default=None, metadata={'applyon': [
|
|
75
|
+
'Folder', 'SimpleFolder', 'SubFolder', 'Job']})
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
class BaseWorkflow(AbstractWorkflow):
|
|
79
|
+
def __init__(self, defaults: WorkflowDefaults = None) -> None:
|
|
80
|
+
super().__init__()
|
|
81
|
+
|
|
82
|
+
self._definitions = {}
|
|
83
|
+
self._connections = {}
|
|
84
|
+
|
|
85
|
+
self.defaults = defaults if defaults else WorkflowDefaults()
|
|
86
|
+
|
|
87
|
+
def clear_all(self):
|
|
88
|
+
self._definitions = {}
|
|
89
|
+
self._connections = {}
|
|
90
|
+
|
|
91
|
+
def _apply_defaults_for_type(self, obj: typing.Any, type_: str):
|
|
92
|
+
for field in attrs.fields(WorkflowDefaults):
|
|
93
|
+
if type_ in field.metadata.get('applyon') \
|
|
94
|
+
and self.defaults.__getattribute__(field.name):
|
|
95
|
+
if obj.__getattribute__(field.name) is None:
|
|
96
|
+
obj.__setattr__(
|
|
97
|
+
field.name, self.defaults.__getattribute__(field.name))
|
|
98
|
+
|
|
99
|
+
def _apply_defaults_for_job(self, obj: Job):
|
|
100
|
+
self._apply_defaults_for_type(obj, 'Job')
|
|
101
|
+
|
|
102
|
+
def _apply_defaults_for_folder(self, obj: Folder):
|
|
103
|
+
self._apply_defaults_for_type(obj, 'Folder')
|
|
104
|
+
|
|
105
|
+
def _apply_defaults_for_SimpleFolder(self, obj: SimpleFolder):
|
|
106
|
+
self._apply_defaults_for_type(obj, 'SimpleFolder')
|
|
107
|
+
|
|
108
|
+
def _apply_defaults_for_SubFolder(self, obj: SubFolder):
|
|
109
|
+
self._apply_defaults_for_type(obj, 'SubFolder')
|
|
110
|
+
|
|
111
|
+
def add(self, obj: AAPIObject, inpath: str = None, allow_creation: bool = True):
|
|
112
|
+
# apply defaults:
|
|
113
|
+
if isinstance(obj, Job):
|
|
114
|
+
self._apply_defaults_for_job(obj)
|
|
115
|
+
elif isinstance(obj, SubFolder):
|
|
116
|
+
self._apply_defaults_for_SubFolder(obj)
|
|
117
|
+
elif isinstance(obj, Folder):
|
|
118
|
+
self._apply_defaults_for_folder(obj)
|
|
119
|
+
elif isinstance(obj, SimpleFolder):
|
|
120
|
+
self._apply_defaults_for_SimpleFolder(obj)
|
|
121
|
+
else:
|
|
122
|
+
pass
|
|
123
|
+
|
|
124
|
+
if inpath:
|
|
125
|
+
if isinstance(obj, SubFolder) or isinstance(obj, Job):
|
|
126
|
+
try:
|
|
127
|
+
folder = self.get(inpath)
|
|
128
|
+
except Exception as e:
|
|
129
|
+
if allow_creation:
|
|
130
|
+
folder = None
|
|
131
|
+
else:
|
|
132
|
+
raise e
|
|
133
|
+
if folder:
|
|
134
|
+
if isinstance(obj, Job):
|
|
135
|
+
folder.job_list.append(obj)
|
|
136
|
+
else:
|
|
137
|
+
folder.sub_folder_list.append(obj)
|
|
138
|
+
else:
|
|
139
|
+
# Folder does not exist, create folder
|
|
140
|
+
folder, parent_folder = self.create_folder_hierarchy(inpath)
|
|
141
|
+
self._apply_defaults_for_folder(folder)
|
|
142
|
+
if isinstance(obj, Job):
|
|
143
|
+
parent_folder.job_list.append(obj)
|
|
144
|
+
else:
|
|
145
|
+
parent_folder.sub_folder_list.append(obj)
|
|
146
|
+
|
|
147
|
+
self._definitions[folder.object_name] = folder
|
|
148
|
+
else:
|
|
149
|
+
raise Exception(
|
|
150
|
+
f'Cannot add object of type {type(obj)} into Folder. Only SubFolder and Job is allowed')
|
|
151
|
+
else:
|
|
152
|
+
if not (isinstance(obj, SimpleFolder)
|
|
153
|
+
or isinstance(obj, Folder)
|
|
154
|
+
or isinstance(obj, ConnectionProfile)
|
|
155
|
+
):
|
|
156
|
+
raise Exception(
|
|
157
|
+
f'Cannot add object of type {type(obj)} as root definition. Only Folder and SimpleFolder is allowed')
|
|
158
|
+
else:
|
|
159
|
+
self._definitions[obj.object_name] = obj
|
|
160
|
+
|
|
161
|
+
if inpath:
|
|
162
|
+
return '/'.join([inpath, obj.object_name])
|
|
163
|
+
else:
|
|
164
|
+
return obj.object_name
|
|
165
|
+
|
|
166
|
+
def connect(self, srcpath: str, destpath: str, *, inpath: str = None):
|
|
167
|
+
if inpath:
|
|
168
|
+
srcpath = f'{inpath}/{srcpath}'
|
|
169
|
+
destpath = f'{inpath}/{destpath}'
|
|
170
|
+
|
|
171
|
+
obj_src = self.get(srcpath)
|
|
172
|
+
obj_dest = self.get(destpath)
|
|
173
|
+
|
|
174
|
+
if not isinstance(obj_src, AAPIJob) or not isinstance(obj_dest, AAPIJob):
|
|
175
|
+
raise Exception(
|
|
176
|
+
f'Cannot connect objects of type {type(obj_src)} with {type(obj_dest)}. Connections can be made from/to Folder, SubFolder and Job')
|
|
177
|
+
|
|
178
|
+
key_name = (srcpath, destpath)
|
|
179
|
+
event_name = f'{obj_src.object_name.replace(" ", "_")}-TO-{obj_dest.object_name.replace(" ", "_")}'
|
|
180
|
+
if event_name in self._connections:
|
|
181
|
+
self._connections[event_name].append(key_name)
|
|
182
|
+
count = len(self._connections[event_name])+1
|
|
183
|
+
event_name = f'{event_name}-{count}'
|
|
184
|
+
else:
|
|
185
|
+
# self._connections[key_name] = {'count': 1, 'name': event_name}
|
|
186
|
+
self._connections[event_name] = [key_name]
|
|
187
|
+
|
|
188
|
+
# Write the add, wait and delete events
|
|
189
|
+
|
|
190
|
+
if not obj_src.add_events_list:
|
|
191
|
+
obj_src.add_events_list.append(
|
|
192
|
+
AddEvents('events_to_add', events=[]))
|
|
193
|
+
obj_src.add_events_list[-1].events.append(
|
|
194
|
+
ConditionOutAdd(event=event_name))
|
|
195
|
+
|
|
196
|
+
if not obj_dest.wait_for_events_list:
|
|
197
|
+
obj_dest.wait_for_events_list.append(
|
|
198
|
+
WaitForEvents('events_to_wait', events=[]))
|
|
199
|
+
obj_dest.wait_for_events_list[-1].events.append(
|
|
200
|
+
ConditionIn(event=event_name))
|
|
201
|
+
|
|
202
|
+
if not obj_dest.delete_events_list:
|
|
203
|
+
obj_dest.delete_events_list.append(
|
|
204
|
+
DeleteEvents('events_to_delete', events=[]))
|
|
205
|
+
obj_dest.delete_events_list[-1].events.append(
|
|
206
|
+
ConditionOutDelete(event=event_name))
|
|
207
|
+
|
|
208
|
+
def chain(self, obj_list: typing.List[AAPIJob], inpath: str):
|
|
209
|
+
objpaths = []
|
|
210
|
+
objname = [o.object_name for o in obj_list]
|
|
211
|
+
clct = collections.Counter(objname)
|
|
212
|
+
dupl = []
|
|
213
|
+
for c in clct:
|
|
214
|
+
if clct[c] > 1:
|
|
215
|
+
dupl.append(f'"{c}"')
|
|
216
|
+
|
|
217
|
+
if dupl:
|
|
218
|
+
raise Exception(f'Multiple definitions for: {" , ".join(dupl)}')
|
|
219
|
+
|
|
220
|
+
objs_paths = []
|
|
221
|
+
for obj in obj_list:
|
|
222
|
+
objs_paths.append(self.add(obj, inpath=inpath))
|
|
223
|
+
objpaths.append(obj.object_name)
|
|
224
|
+
|
|
225
|
+
connections = [(objpaths[i], objpaths[i+1])
|
|
226
|
+
for i, _ in enumerate(objpaths[:-1])]
|
|
227
|
+
for conn in connections:
|
|
228
|
+
self.connect(conn[0], conn[1], inpath=inpath)
|
|
229
|
+
|
|
230
|
+
return objs_paths
|
|
231
|
+
|
|
232
|
+
def get_objects(self, path: str) -> typing.List[AAPIObject]:
|
|
233
|
+
pathparts = path.split('/')
|
|
234
|
+
name = pathparts[-1]
|
|
235
|
+
pathparts = pathparts[:-1]
|
|
236
|
+
|
|
237
|
+
current_object = self._definitions
|
|
238
|
+
|
|
239
|
+
for i, p in enumerate(pathparts):
|
|
240
|
+
if isinstance(current_object, dict):
|
|
241
|
+
try:
|
|
242
|
+
current_object = current_object[p]
|
|
243
|
+
except KeyError as e:
|
|
244
|
+
raise Exception(f'Path {pathparts[:i]} is invalid')
|
|
245
|
+
|
|
246
|
+
elif isinstance(current_object, Folder) or isinstance(current_object, SubFolder):
|
|
247
|
+
try:
|
|
248
|
+
current_object = [
|
|
249
|
+
o for o in current_object.sub_folder_list if o.object_name == p][0]
|
|
250
|
+
except IndexError as e:
|
|
251
|
+
raise Exception(f'Path {pathparts[:i]} is invalid')
|
|
252
|
+
else:
|
|
253
|
+
raise Exception(f'Path {pathparts[:i]} is invalid')
|
|
254
|
+
|
|
255
|
+
if isinstance(current_object, dict):
|
|
256
|
+
try:
|
|
257
|
+
res = [current_object[name]]
|
|
258
|
+
return res
|
|
259
|
+
except KeyError as e:
|
|
260
|
+
raise Exception(
|
|
261
|
+
f'Cannot find object {name} in path: {"/".join(pathparts)}')
|
|
262
|
+
|
|
263
|
+
elif isinstance(current_object, Folder) or isinstance(current_object, SubFolder):
|
|
264
|
+
res = [o for o in current_object.sub_folder_list +
|
|
265
|
+
current_object.job_list if o.object_name == name]
|
|
266
|
+
if not res:
|
|
267
|
+
raise Exception(
|
|
268
|
+
f'Cannot find object {name} in path: {"/".join(pathparts)}')
|
|
269
|
+
else:
|
|
270
|
+
return res
|
|
271
|
+
elif isinstance(current_object, SimpleFolder):
|
|
272
|
+
res = [o for o in current_object.job_list if o.object_name == name]
|
|
273
|
+
if not res:
|
|
274
|
+
raise Exception(
|
|
275
|
+
f'Cannot find object {name} in path: {"/".join(pathparts)}')
|
|
276
|
+
else:
|
|
277
|
+
return res
|
|
278
|
+
else:
|
|
279
|
+
raise Exception(
|
|
280
|
+
f'Cannot find object {name} in path: {"/".join(pathparts)}')
|
|
281
|
+
|
|
282
|
+
def get(self, path: str, default=None) -> AAPIObject:
|
|
283
|
+
if default is None:
|
|
284
|
+
return self.get_objects(path)[0]
|
|
285
|
+
else:
|
|
286
|
+
try:
|
|
287
|
+
return self.get_objects(path)[0]
|
|
288
|
+
except:
|
|
289
|
+
return default
|
|
290
|
+
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
def create_folder_hierarchy(self, path : str):
|
|
294
|
+
parts = path.split('/')
|
|
295
|
+
folder = self.get(parts[0], default = Folder(parts[0]))
|
|
296
|
+
parent = folder
|
|
297
|
+
for i,o in enumerate(parts[1:]):
|
|
298
|
+
try:
|
|
299
|
+
subfolder = [sf for sf in parent.sub_folder_list if sf.object_name == o][0]
|
|
300
|
+
except IndexError:
|
|
301
|
+
subfolder = SubFolder(o)
|
|
302
|
+
parent.sub_folder_list.append(subfolder)
|
|
303
|
+
parent = subfolder
|
|
304
|
+
|
|
305
|
+
return folder,parent
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
def dumps_json(self, indent=None):
|
|
309
|
+
return json.dumps({k: v.as_aapi_dict() for (k, v) in self._definitions.items()}, indent=indent)
|
|
310
|
+
|
|
311
|
+
def dump_json(self, f, indent=None):
|
|
312
|
+
return json.dump({k: v.as_aapi_dict() for (k, v) in self._definitions.items()}, f, indent=indent)
|
|
313
|
+
|
|
314
|
+
def copy_from(self, workflow):
|
|
315
|
+
self._definitions = copy.deepcopy(workflow._definitions)
|
|
316
|
+
self._connections = copy.deepcopy(workflow._connections)
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
class Workflow(BaseWorkflow):
|
|
321
|
+
|
|
322
|
+
@staticmethod
|
|
323
|
+
def workbench(host : str = 'localhost', port : str = '8443'):
|
|
324
|
+
return Workflow(Environment.create_workbench(host, port), WorkflowDefaults(run_as='workbench'))
|
|
325
|
+
|
|
326
|
+
def __init__(self, environment: Environment, defaults: WorkflowDefaults = None, skip_initial_authentication: bool = False) -> None:
|
|
327
|
+
super().__init__(defaults=defaults)
|
|
328
|
+
|
|
329
|
+
self.environment = environment
|
|
330
|
+
|
|
331
|
+
self.aapiclient: AbstractAAPIClient = None
|
|
332
|
+
if self.environment.mode == EnvironmentMode.SAAS:
|
|
333
|
+
self.aapiclient = SaasAAPIClient(
|
|
334
|
+
environment.endpoint, environment.credentials)
|
|
335
|
+
else:
|
|
336
|
+
self.aapiclient = OnPremAAPIClient(
|
|
337
|
+
environment.endpoint, environment.credentials)
|
|
338
|
+
|
|
339
|
+
if not skip_initial_authentication:
|
|
340
|
+
self.authenticate()
|
|
341
|
+
|
|
342
|
+
def authenticate(self):
|
|
343
|
+
self.aapiclient.authenticate()
|
|
344
|
+
|
|
345
|
+
@sanitize_output
|
|
346
|
+
def build(self, skip_login: bool = False, file_path: str = None, delete_afterwards: bool = True) -> AAPIClientResponse:
|
|
347
|
+
if not skip_login:
|
|
348
|
+
self.aapiclient.authenticate()
|
|
349
|
+
|
|
350
|
+
if not file_path:
|
|
351
|
+
file_path = f'{tempfile.gettempdir()}/temp_{random.randint(1000,9999)}.json'
|
|
352
|
+
|
|
353
|
+
fpath = pathlib.Path(file_path)
|
|
354
|
+
|
|
355
|
+
with open(fpath.resolve(), 'w') as f:
|
|
356
|
+
self.dump_json(f)
|
|
357
|
+
|
|
358
|
+
try:
|
|
359
|
+
res = self.aapiclient.build_api.build_file(fpath.resolve())
|
|
360
|
+
return res
|
|
361
|
+
except Exception as e:
|
|
362
|
+
raise e
|
|
363
|
+
finally:
|
|
364
|
+
if delete_afterwards:
|
|
365
|
+
fpath.unlink()
|
|
366
|
+
|
|
367
|
+
@sanitize_output
|
|
368
|
+
def deploy(self, skip_login: bool = False, file_path: str = None, delete_afterwards: bool = True) -> AAPIClientResponse:
|
|
369
|
+
if not skip_login:
|
|
370
|
+
self.aapiclient.authenticate()
|
|
371
|
+
|
|
372
|
+
if not file_path:
|
|
373
|
+
file_path = f'{tempfile.gettempdir()}/temp_{random.randint(1000,9999)}.json'
|
|
374
|
+
|
|
375
|
+
fpath = pathlib.Path(file_path)
|
|
376
|
+
|
|
377
|
+
with open(fpath.resolve(), 'w') as f:
|
|
378
|
+
self.dump_json(f)
|
|
379
|
+
|
|
380
|
+
try:
|
|
381
|
+
res = self.aapiclient.deploy_api.deploy_file(fpath.resolve())
|
|
382
|
+
return res
|
|
383
|
+
except Exception as e:
|
|
384
|
+
raise e
|
|
385
|
+
finally:
|
|
386
|
+
if delete_afterwards:
|
|
387
|
+
fpath.unlink()
|
|
388
|
+
|
|
389
|
+
# @sanitize_output
|
|
390
|
+
def run(self, skip_login: bool = False, file_path: str = None, delete_afterwards: bool = True, open_in_browser=False) -> RunMonitor:
|
|
391
|
+
if not skip_login:
|
|
392
|
+
self.aapiclient.authenticate()
|
|
393
|
+
|
|
394
|
+
if not file_path:
|
|
395
|
+
file_path = f'{tempfile.gettempdir()}/temp_{random.randint(1000,9999)}.json'
|
|
396
|
+
|
|
397
|
+
fpath = pathlib.Path(file_path)
|
|
398
|
+
|
|
399
|
+
with open(fpath.resolve(), 'w') as f:
|
|
400
|
+
self.dump_json(f)
|
|
401
|
+
|
|
402
|
+
try:
|
|
403
|
+
res = self.aapiclient.run_api.run_jobs(fpath.resolve())
|
|
404
|
+
# return res
|
|
405
|
+
run_ = RunMonitor(res.run_id, self.aapiclient, monitor_page_uri= res.monitor_page_uri)
|
|
406
|
+
if open_in_browser:
|
|
407
|
+
run_.open_in_browser()
|
|
408
|
+
return run_
|
|
409
|
+
except Exception as e:
|
|
410
|
+
raise e
|
|
411
|
+
finally:
|
|
412
|
+
if delete_afterwards:
|
|
413
|
+
fpath.unlink()
|
|
File without changes
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
import jinja2
|
|
2
|
+
import urllib3
|
|
3
|
+
import typing
|
|
4
|
+
import requests
|
|
5
|
+
import attrs
|
|
6
|
+
|
|
7
|
+
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
|
|
8
|
+
|
|
9
|
+
__all__ = ['generate_ai_plugins_classes']
|
|
10
|
+
|
|
11
|
+
IF_PLUGINS = [
|
|
12
|
+
'ABA092022',
|
|
13
|
+
'GBA032023',
|
|
14
|
+
'GDF032022',
|
|
15
|
+
'GBQ102022',
|
|
16
|
+
'AEC082022',
|
|
17
|
+
'TDM052022',
|
|
18
|
+
'GDP042022',
|
|
19
|
+
'ZSY062022',
|
|
20
|
+
'AQS012023',
|
|
21
|
+
'AHD062022',
|
|
22
|
+
'MFL022023',
|
|
23
|
+
'COM032023',
|
|
24
|
+
'ZML022023',
|
|
25
|
+
'GVM062022',
|
|
26
|
+
'ADF062021',
|
|
27
|
+
'ASF012023',
|
|
28
|
+
'ASM0220223',
|
|
29
|
+
'ICS032022',
|
|
30
|
+
'BOO032022',
|
|
31
|
+
'ZDX112021',
|
|
32
|
+
'ACS042023',
|
|
33
|
+
'AAR072022',
|
|
34
|
+
'UIP072021',
|
|
35
|
+
'ZLA112022',
|
|
36
|
+
'ATR122022',
|
|
37
|
+
'QLC092022',
|
|
38
|
+
'GLU062021',
|
|
39
|
+
'GDR052023',
|
|
40
|
+
'ADB112022',
|
|
41
|
+
'MBI042022',
|
|
42
|
+
'ABK042023',
|
|
43
|
+
'SNF092022',
|
|
44
|
+
'ADP122022',
|
|
45
|
+
'ZBA042022',
|
|
46
|
+
'DBX032022',
|
|
47
|
+
'ZFN032022',
|
|
48
|
+
'AEM072022',
|
|
49
|
+
'MFW022023',
|
|
50
|
+
'ZVM062022',
|
|
51
|
+
'DBT042023',
|
|
52
|
+
'AAT052023'
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
imports_str = '''from aapi import *
|
|
57
|
+
import attrs
|
|
58
|
+
|
|
59
|
+
'''
|
|
60
|
+
template_job = jinja2.Template('''
|
|
61
|
+
@attrs.define
|
|
62
|
+
class {{plugin.class_name}}(AIJob):
|
|
63
|
+
_type = AIJob.type_field('{{plugin.type_field}}')
|
|
64
|
+
|
|
65
|
+
{% for p in plugin.mandatory_properties %}
|
|
66
|
+
{{p[0]}} = AIJob.field('{{p[1]}}')
|
|
67
|
+
{%endfor%}
|
|
68
|
+
|
|
69
|
+
{% for p in plugin.optional_properties %}
|
|
70
|
+
{{p[0]}} = AIJob.field_optional('{{p[1]}}', default='{{p[2]}}')
|
|
71
|
+
{%endfor%}
|
|
72
|
+
''')
|
|
73
|
+
|
|
74
|
+
template_cp = jinja2.Template('''
|
|
75
|
+
@attrs.define
|
|
76
|
+
class {{plugin.class_name}}(AIConnectionProfile):
|
|
77
|
+
_type = AIConnectionProfile.type_field('{{plugin.type_field}}')
|
|
78
|
+
|
|
79
|
+
{% for p in plugin.mandatory_properties %}
|
|
80
|
+
{{p[0]}} = AIConnectionProfile.field('{{p[1]}}')
|
|
81
|
+
{%endfor%}
|
|
82
|
+
|
|
83
|
+
{% for p in plugin.optional_properties %}
|
|
84
|
+
{{p[0]}} = AIConnectionProfile.field_optional('{{p[1]}}', default='{{p[2]}}')
|
|
85
|
+
{%endfor%}
|
|
86
|
+
''')
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@attrs.define
|
|
90
|
+
class Plugin:
|
|
91
|
+
job_name: str
|
|
92
|
+
cp_name: str
|
|
93
|
+
job_definition: typing.Dict[str, str]
|
|
94
|
+
cp_definition: typing.Dict[str, str]
|
|
95
|
+
|
|
96
|
+
plugin_type: str
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
@attrs.define
|
|
100
|
+
class AIPluginCustomDefinition:
|
|
101
|
+
class_name: str
|
|
102
|
+
type_field: str
|
|
103
|
+
|
|
104
|
+
mandatory_properties: typing.List[typing.Tuple[str]]
|
|
105
|
+
optional_properties: typing.List[typing.Tuple[str]]
|
|
106
|
+
comments: typing.List[str]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def create_ai_custom_definitions(ai_plugin: Plugin) -> typing.Tuple[AIPluginCustomDefinition, AIPluginCustomDefinition]:
|
|
110
|
+
plugin_name = ai_plugin.job_name.split(':')[-1]
|
|
111
|
+
plugin_cp_name = ai_plugin.cp_name.split(':')[-1]
|
|
112
|
+
job = {
|
|
113
|
+
'class_name': 'AIJob'+plugin_name.capitalize().replace(" ", ""),
|
|
114
|
+
'type_field': plugin_name,
|
|
115
|
+
'mandatory_properties': [],
|
|
116
|
+
'optional_properties': [],
|
|
117
|
+
|
|
118
|
+
'comments': [f'Auto generated class for {plugin_name}']
|
|
119
|
+
}
|
|
120
|
+
cp = {
|
|
121
|
+
'class_name': 'ConnectionProfileAI'+plugin_cp_name.capitalize().replace(" ", ""),
|
|
122
|
+
'type_field': plugin_cp_name,
|
|
123
|
+
'mandatory_properties': [],
|
|
124
|
+
'optional_properties': [],
|
|
125
|
+
'comments': [f'Auto generated class for {plugin_cp_name}']
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
for k, v in ai_plugin.job_definition.items():
|
|
129
|
+
if not k.startswith('AI-'):
|
|
130
|
+
continue
|
|
131
|
+
|
|
132
|
+
if k == 'AI-Connection Profile':
|
|
133
|
+
continue
|
|
134
|
+
|
|
135
|
+
domain_name = v.get('DomainName')
|
|
136
|
+
if domain_name in ai_plugin.job_definition['Defaults']:
|
|
137
|
+
default = ai_plugin.job_definition['Defaults'][domain_name]
|
|
138
|
+
|
|
139
|
+
job['optional_properties'].append((
|
|
140
|
+
domain_name.split(r'%%UCM-')[1].lower(),
|
|
141
|
+
k.split('AI-')[1],
|
|
142
|
+
default
|
|
143
|
+
))
|
|
144
|
+
else:
|
|
145
|
+
job['mandatory_properties'].append((
|
|
146
|
+
domain_name.split(r'%%UCM-')[1].lower(),
|
|
147
|
+
k.split('AI-')[1],
|
|
148
|
+
None
|
|
149
|
+
))
|
|
150
|
+
|
|
151
|
+
for k, v in ai_plugin.cp_definition.items():
|
|
152
|
+
if not k.startswith('AI-'):
|
|
153
|
+
continue
|
|
154
|
+
|
|
155
|
+
if k in ['AI-Run As', 'AI-RunAs-Pass']:
|
|
156
|
+
continue
|
|
157
|
+
|
|
158
|
+
domain_name = v.get('DomainName')
|
|
159
|
+
if domain_name in ai_plugin.cp_definition['Defaults']:
|
|
160
|
+
default = ai_plugin.cp_definition['Defaults'][domain_name]
|
|
161
|
+
|
|
162
|
+
cp['optional_properties'].append((
|
|
163
|
+
domain_name.lower(),
|
|
164
|
+
k.split('AI-')[1],
|
|
165
|
+
default
|
|
166
|
+
))
|
|
167
|
+
else:
|
|
168
|
+
cp['mandatory_properties'].append((
|
|
169
|
+
domain_name.lower(),
|
|
170
|
+
k.split('AI-')[1],
|
|
171
|
+
None
|
|
172
|
+
))
|
|
173
|
+
|
|
174
|
+
return (AIPluginCustomDefinition(**job), AIPluginCustomDefinition(**cp))
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def get_all_plugins_versions_from_url(url: str) -> typing.Dict[str, str]:
|
|
178
|
+
r = requests.get(url=url, verify=False)
|
|
179
|
+
|
|
180
|
+
return r.json()
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def parse_plugin(url):
|
|
184
|
+
r = requests.get(url, verify=False)
|
|
185
|
+
plugin = {}
|
|
186
|
+
|
|
187
|
+
for k, v in r.json().items():
|
|
188
|
+
if k.startswith('Job:'):
|
|
189
|
+
plugin["job_name"] = k
|
|
190
|
+
plugin["job_definition"] = v
|
|
191
|
+
continue
|
|
192
|
+
|
|
193
|
+
if k.startswith('ConnectionProfile:'):
|
|
194
|
+
plugin["cp_name"] = k
|
|
195
|
+
plugin["cp_definition"] = v
|
|
196
|
+
continue
|
|
197
|
+
|
|
198
|
+
if 'Aliases' in r.json():
|
|
199
|
+
plugin['plugin_type'] = 'AI'
|
|
200
|
+
else:
|
|
201
|
+
plugin['plugin_type'] = 'IF'
|
|
202
|
+
|
|
203
|
+
return Plugin(**plugin)
|
|
204
|
+
# return plugin
|
|
205
|
+
|
|
206
|
+
|
|
207
|
+
def get_all_plugins(host: str, port: str = '8443', exlude_list=[]):
|
|
208
|
+
versions = get_all_plugins_versions_from_url(
|
|
209
|
+
f'https://{host}:{port}/automation-api/ai-repo/deployed_plugins.json')
|
|
210
|
+
|
|
211
|
+
res = []
|
|
212
|
+
for plugin, version in versions.items():
|
|
213
|
+
if plugin in exlude_list:
|
|
214
|
+
continue
|
|
215
|
+
|
|
216
|
+
url = f'https://{host}:{port}/automation-api/ai-repo/{plugin}/v{version}/descriptorDictionary{plugin}.json'
|
|
217
|
+
|
|
218
|
+
res.append(parse_plugin(url))
|
|
219
|
+
|
|
220
|
+
return res
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
def create_class_code(plugin_definitions):
|
|
224
|
+
job_str = template_job.render(plugin=plugin_definitions[0])
|
|
225
|
+
cp_str = template_cp.render(plugin=plugin_definitions[1])
|
|
226
|
+
|
|
227
|
+
return (job_str, cp_str)
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
def generate_ai_plugins_classes(host: str = 'localhost', port: str = '8443', output_file: str = 'generated.py'):
|
|
231
|
+
plugins = get_all_plugins(host=host, port=port, exlude_list=IF_PLUGINS)
|
|
232
|
+
definitions = [create_ai_custom_definitions(plugin) for plugin in plugins]
|
|
233
|
+
with open(output_file, 'w') as f:
|
|
234
|
+
f.write(imports_str)
|
|
235
|
+
|
|
236
|
+
for definition in definitions:
|
|
237
|
+
def_str = create_class_code(definition)
|
|
238
|
+
f.write(f'''
|
|
239
|
+
|
|
240
|
+
# Auto generated code for AI Plugin {definition[0].type_field}
|
|
241
|
+
''')
|
|
242
|
+
f.write(def_str[0]) # JOB
|
|
243
|
+
f.write(def_str[1]) # Connection Profile
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from ctm_python_client.core.credential import AbstractCredentials
|
|
2
|
+
|
|
3
|
+
import keyring
|
|
4
|
+
|
|
5
|
+
__all__ = ['KeyringCredentials']
|
|
6
|
+
|
|
7
|
+
class KeyringCredentials(AbstractCredentials):
|
|
8
|
+
def __init__(self, service: str, username: str) -> None:
|
|
9
|
+
super().__init__()
|
|
10
|
+
|
|
11
|
+
self.service = service
|
|
12
|
+
self.username = username
|
|
13
|
+
|
|
14
|
+
def get_username(self):
|
|
15
|
+
return self.username
|
|
16
|
+
|
|
17
|
+
def get_password(self):
|
|
18
|
+
return keyring.get_password(self.service, self.username)
|