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.
Files changed (745) hide show
  1. aapi/__init__.py +79 -0
  2. aapi/action.py +47 -0
  3. aapi/addevents.py +16 -0
  4. aapi/ai.py +63 -0
  5. aapi/basefolder.py +288 -0
  6. aapi/bases.py +60 -0
  7. aapi/businessfield.py +14 -0
  8. aapi/businessparameter.py +70 -0
  9. aapi/calendar.py +207 -0
  10. aapi/calendarfields.py +38 -0
  11. aapi/calendarkey.py +38 -0
  12. aapi/captureoutput.py +55 -0
  13. aapi/condition.py +53 -0
  14. aapi/config.py +26 -0
  15. aapi/connectionprofile.py +973 -0
  16. aapi/ctbruledata.py +17 -0
  17. aapi/date.py +14 -0
  18. aapi/definitionitemdetails.py +14 -0
  19. aapi/deleteevents.py +16 -0
  20. aapi/disallowedoptions.py +14 -0
  21. aapi/do.py +14 -0
  22. aapi/donotify.py +31 -0
  23. aapi/driver.py +27 -0
  24. aapi/endpoint.py +202 -0
  25. aapi/event.py +42 -0
  26. aapi/extractrule.py +21 -0
  27. aapi/filetransfer.py +139 -0
  28. aapi/filetransfergroup.py +14 -0
  29. aapi/flow_.py +16 -0
  30. aapi/folderclientdata.py +14 -0
  31. aapi/folderjobbase.py +229 -0
  32. aapi/hostfiletransfer.py +14 -0
  33. aapi/hostmapping.py +24 -0
  34. aapi/if_.py +106 -0
  35. aapi/ifbase.py +144 -0
  36. aapi/ifcollection.py +26 -0
  37. aapi/ifrerun.py +24 -0
  38. aapi/integration_factory/__init__.py +0 -0
  39. aapi/integration_factory/connection_profiles.py +859 -0
  40. aapi/integration_factory/jobs.py +1185 -0
  41. aapi/internalrule.py +68 -0
  42. aapi/iteminfo.py +14 -0
  43. aapi/job.py +2603 -0
  44. aapi/jobsfilter.py +14 -0
  45. aapi/jobtag.py +20 -0
  46. aapi/mail.py +32 -0
  47. aapi/notify.py +98 -0
  48. aapi/on.py +14 -0
  49. aapi/output.py +25 -0
  50. aapi/package.py +23 -0
  51. aapi/packageparams.py +15 -0
  52. aapi/period.py +56 -0
  53. aapi/possibleoptions.py +14 -0
  54. aapi/propertycondition.py +65 -0
  55. aapi/rbcdetails.py +14 -0
  56. aapi/remedy.py +27 -0
  57. aapi/resource.py +60 -0
  58. aapi/resourcepools.py +118 -0
  59. aapi/run.py +29 -0
  60. aapi/runningjobs.py +120 -0
  61. aapi/set_.py +18 -0
  62. aapi/sitestandard.py +24 -0
  63. aapi/sitestandarddata.py +14 -0
  64. aapi/sitestandardoperatorvalueoptions.py +27 -0
  65. aapi/sitestandardpolicy.py +45 -0
  66. aapi/sitestandardpolicydata.py +14 -0
  67. aapi/sitestandardpossiblevalue.py +18 -0
  68. aapi/sitestandardrestriction.py +48 -0
  69. aapi/steprange.py +22 -0
  70. aapi/tag.py +46 -0
  71. aapi/time.py +14 -0
  72. aapi/variable.py +14 -0
  73. aapi/waitforevents.py +16 -0
  74. aapi/workloadflat.py +14 -0
  75. aapi/workloadpolicy.py +42 -0
  76. aapi/wpperiod.py +14 -0
  77. aapi/year.py +42 -0
  78. clients/__init__.py +0 -0
  79. clients/ctm_api_client/__init__.py +612 -0
  80. clients/ctm_api_client/api/__init__.py +13 -0
  81. clients/ctm_api_client/api/archive_api.py +496 -0
  82. clients/ctm_api_client/api/build_api.py +154 -0
  83. clients/ctm_api_client/api/config_api.py +11804 -0
  84. clients/ctm_api_client/api/deploy_api.py +2467 -0
  85. clients/ctm_api_client/api/provision_api.py +1215 -0
  86. clients/ctm_api_client/api/reporting_api.py +450 -0
  87. clients/ctm_api_client/api/run_api.py +4056 -0
  88. clients/ctm_api_client/api/session_api.py +332 -0
  89. clients/ctm_api_client/api_client.py +715 -0
  90. clients/ctm_api_client/configuration.py +260 -0
  91. clients/ctm_api_client/models/__init__.py +597 -0
  92. clients/ctm_api_client/models/actions_auth_record.py +663 -0
  93. clients/ctm_api_client/models/active_services.py +153 -0
  94. clients/ctm_api_client/models/add_agent_params.py +311 -0
  95. clients/ctm_api_client/models/add_remote_host_params.py +276 -0
  96. clients/ctm_api_client/models/add_remove_success_data.py +151 -0
  97. clients/ctm_api_client/models/add_server_params.py +210 -0
  98. clients/ctm_api_client/models/agent_certificate_expiration_data.py +123 -0
  99. clients/ctm_api_client/models/agent_data.py +622 -0
  100. clients/ctm_api_client/models/agent_debug_information.py +160 -0
  101. clients/ctm_api_client/models/agent_details.py +247 -0
  102. clients/ctm_api_client/models/agent_details_list.py +121 -0
  103. clients/ctm_api_client/models/agent_in_group_params.py +160 -0
  104. clients/ctm_api_client/models/agent_in_group_params_list.py +121 -0
  105. clients/ctm_api_client/models/agent_in_hostgroup.py +192 -0
  106. clients/ctm_api_client/models/agent_info.py +155 -0
  107. clients/ctm_api_client/models/agent_info_result.py +183 -0
  108. clients/ctm_api_client/models/agent_mng_auth.py +181 -0
  109. clients/ctm_api_client/models/agent_sys_param_set_data.py +247 -0
  110. clients/ctm_api_client/models/agent_sys_param_set_success_data.py +151 -0
  111. clients/ctm_api_client/models/agent_tables_name.py +121 -0
  112. clients/ctm_api_client/models/agent_thing_properties.py +177 -0
  113. clients/ctm_api_client/models/agents_data_list.py +95 -0
  114. clients/ctm_api_client/models/agents_in_group_list_result.py +95 -0
  115. clients/ctm_api_client/models/agents_in_group_success_data.py +149 -0
  116. clients/ctm_api_client/models/agents_sys_param_set_data.py +123 -0
  117. clients/ctm_api_client/models/ai_deploy_response.py +123 -0
  118. clients/ctm_api_client/models/ai_error.py +149 -0
  119. clients/ctm_api_client/models/ai_jobtype.py +218 -0
  120. clients/ctm_api_client/models/ai_jobtype_list.py +121 -0
  121. clients/ctm_api_client/models/alert_param.py +191 -0
  122. clients/ctm_api_client/models/alert_status_param.py +159 -0
  123. clients/ctm_api_client/models/all_mft_data_settings.py +150 -0
  124. clients/ctm_api_client/models/allowed_job_actions.py +682 -0
  125. clients/ctm_api_client/models/allowed_jobs.py +149 -0
  126. clients/ctm_api_client/models/annotation_details.py +145 -0
  127. clients/ctm_api_client/models/api_gtw_session.py +121 -0
  128. clients/ctm_api_client/models/api_throwable.py +147 -0
  129. clients/ctm_api_client/models/app.py +305 -0
  130. clients/ctm_api_client/models/app_deploy_response.py +181 -0
  131. clients/ctm_api_client/models/app_deployed.py +363 -0
  132. clients/ctm_api_client/models/app_details.py +218 -0
  133. clients/ctm_api_client/models/app_list.py +147 -0
  134. clients/ctm_api_client/models/app_predeploy_response.py +151 -0
  135. clients/ctm_api_client/models/archive_jobs_list.py +189 -0
  136. clients/ctm_api_client/models/archive_rule.py +392 -0
  137. clients/ctm_api_client/models/archive_rules_list.py +121 -0
  138. clients/ctm_api_client/models/as2_key_data.py +185 -0
  139. clients/ctm_api_client/models/associate_data.py +149 -0
  140. clients/ctm_api_client/models/authenticate_credentials.py +237 -0
  141. clients/ctm_api_client/models/authentication_data.py +150 -0
  142. clients/ctm_api_client/models/availability.py +247 -0
  143. clients/ctm_api_client/models/certificate_signing_request_data.py +276 -0
  144. clients/ctm_api_client/models/client_access_privilege_category.py +305 -0
  145. clients/ctm_api_client/models/cluster.py +179 -0
  146. clients/ctm_api_client/models/cluster_authorization_data.py +123 -0
  147. clients/ctm_api_client/models/communication_analysis_response_type.py +189 -0
  148. clients/ctm_api_client/models/component_key_with_status_type.py +151 -0
  149. clients/ctm_api_client/models/component_meta_data_properties.py +210 -0
  150. clients/ctm_api_client/models/component_mft_key_type.py +305 -0
  151. clients/ctm_api_client/models/condition_properties.py +171 -0
  152. clients/ctm_api_client/models/configuration_manager_privilege_category.py +276 -0
  153. clients/ctm_api_client/models/connection_profile_deployment_info.py +247 -0
  154. clients/ctm_api_client/models/connection_profile_status.py +334 -0
  155. clients/ctm_api_client/models/connection_profiles_deployment_status_result.py +157 -0
  156. clients/ctm_api_client/models/connection_profiles_status_result.py +181 -0
  157. clients/ctm_api_client/models/control_m_authentication_data.py +247 -0
  158. clients/ctm_api_client/models/cp_mng_auth.py +247 -0
  159. clients/ctm_api_client/models/ctm_details.py +247 -0
  160. clients/ctm_api_client/models/ctm_details_list.py +95 -0
  161. clients/ctm_api_client/models/ctm_name_value_sw.py +147 -0
  162. clients/ctm_api_client/models/ctmag_set_extract_service_status.py +123 -0
  163. clients/ctm_api_client/models/ctmagent_basic_info_type.py +303 -0
  164. clients/ctm_api_client/models/ctmagent_ctm_test_type.py +334 -0
  165. clients/ctm_api_client/models/ctmagent_state_changed_type.py +218 -0
  166. clients/ctm_api_client/models/ctmvar_del_result_item.py +123 -0
  167. clients/ctm_api_client/models/ctmvar_del_results.py +237 -0
  168. clients/ctm_api_client/models/ctmvar_error_info.py +261 -0
  169. clients/ctm_api_client/models/ctmvar_get_result_item.py +156 -0
  170. clients/ctm_api_client/models/ctmvar_get_results.py +237 -0
  171. clients/ctm_api_client/models/ctmvar_result_item.py +210 -0
  172. clients/ctm_api_client/models/ctmvar_results.py +237 -0
  173. clients/ctm_api_client/models/ctmvar_set_result_item.py +123 -0
  174. clients/ctm_api_client/models/ctmvar_set_results.py +237 -0
  175. clients/ctm_api_client/models/deploy_jobtype_response.py +155 -0
  176. clients/ctm_api_client/models/deployment_file_error.py +121 -0
  177. clients/ctm_api_client/models/deployment_file_results.py +558 -0
  178. clients/ctm_api_client/models/diagnostics_data_collection_information.py +247 -0
  179. clients/ctm_api_client/models/diagnostics_data_collection_result.py +151 -0
  180. clients/ctm_api_client/models/em_basic_active_request_parameters.py +210 -0
  181. clients/ctm_api_client/models/em_default_request_parameters.py +210 -0
  182. clients/ctm_api_client/models/em_jobs_id.py +147 -0
  183. clients/ctm_api_client/models/em_order_folder.py +237 -0
  184. clients/ctm_api_client/models/em_order_folder_parameters.py +183 -0
  185. clients/ctm_api_client/models/em_system_parameter.py +123 -0
  186. clients/ctm_api_client/models/encryption_metadata.py +154 -0
  187. clients/ctm_api_client/models/error_data.py +276 -0
  188. clients/ctm_api_client/models/error_list.py +121 -0
  189. clients/ctm_api_client/models/event.py +177 -0
  190. clients/ctm_api_client/models/event_param.py +151 -0
  191. clients/ctm_api_client/models/event_set.py +95 -0
  192. clients/ctm_api_client/models/external_provider_authentication_data.py +123 -0
  193. clients/ctm_api_client/models/external_user_data.py +450 -0
  194. clients/ctm_api_client/models/extract_service_prop_params.py +305 -0
  195. clients/ctm_api_client/models/field_metadata_properties.py +750 -0
  196. clients/ctm_api_client/models/field_value.py +148 -0
  197. clients/ctm_api_client/models/field_values.py +126 -0
  198. clients/ctm_api_client/models/folder_auth.py +305 -0
  199. clients/ctm_api_client/models/folder_properties.py +421 -0
  200. clients/ctm_api_client/models/folder_properties_data.py +398 -0
  201. clients/ctm_api_client/models/folders_users_settings_and_metadata_properties.py +237 -0
  202. clients/ctm_api_client/models/folders_users_settings_and_metadata_properties_from_b2_b.py +237 -0
  203. clients/ctm_api_client/models/fts_authentication_details.py +156 -0
  204. clients/ctm_api_client/models/fts_ftp_settings.py +363 -0
  205. clients/ctm_api_client/models/fts_general_settings.py +363 -0
  206. clients/ctm_api_client/models/fts_ldap_authentication_details.py +305 -0
  207. clients/ctm_api_client/models/fts_pam_authentication_details.py +123 -0
  208. clients/ctm_api_client/models/fts_settings_data.py +218 -0
  209. clients/ctm_api_client/models/fts_sftp_settings.py +334 -0
  210. clients/ctm_api_client/models/fts_user_home_directory_data.py +151 -0
  211. clients/ctm_api_client/models/gateway_data.py +208 -0
  212. clients/ctm_api_client/models/get_alert_info.py +200 -0
  213. clients/ctm_api_client/models/get_manifest_params.py +535 -0
  214. clients/ctm_api_client/models/get_manifest_params_result.py +95 -0
  215. clients/ctm_api_client/models/groups_allowed_folders_properties.py +214 -0
  216. clients/ctm_api_client/models/host_group_data.py +181 -0
  217. clients/ctm_api_client/models/host_groups_data_list.py +95 -0
  218. clients/ctm_api_client/models/host_properties.py +595 -0
  219. clients/ctm_api_client/models/hostgroup_agent_participation.py +152 -0
  220. clients/ctm_api_client/models/hostgroup_properties.py +149 -0
  221. clients/ctm_api_client/models/hostname_port_pair.py +151 -0
  222. clients/ctm_api_client/models/hub_data.py +276 -0
  223. clients/ctm_api_client/models/hub_status.py +123 -0
  224. clients/ctm_api_client/models/job.py +175 -0
  225. clients/ctm_api_client/models/job_level_auth.py +185 -0
  226. clients/ctm_api_client/models/job_run_status.py +772 -0
  227. clients/ctm_api_client/models/job_status_result.py +363 -0
  228. clients/ctm_api_client/models/jobtype_agent.py +149 -0
  229. clients/ctm_api_client/models/key_value.py +427 -0
  230. clients/ctm_api_client/models/key_value_list_result.py +95 -0
  231. clients/ctm_api_client/models/key_value_type.py +219 -0
  232. clients/ctm_api_client/models/key_value_type_list_result.py +95 -0
  233. clients/ctm_api_client/models/known_hosts.py +145 -0
  234. clients/ctm_api_client/models/ldap_domain_settings.py +291 -0
  235. clients/ctm_api_client/models/log.py +121 -0
  236. clients/ctm_api_client/models/log_data_arguments.py +121 -0
  237. clients/ctm_api_client/models/log_job_parameters.py +183 -0
  238. clients/ctm_api_client/models/log_job_result_item.py +264 -0
  239. clients/ctm_api_client/models/log_job_results.py +237 -0
  240. clients/ctm_api_client/models/log_params.py +218 -0
  241. clients/ctm_api_client/models/login_credentials.py +151 -0
  242. clients/ctm_api_client/models/login_result.py +171 -0
  243. clients/ctm_api_client/models/manifest_group_item_object.py +145 -0
  244. clients/ctm_api_client/models/manifest_group_object.py +121 -0
  245. clients/ctm_api_client/models/matching.py +95 -0
  246. clients/ctm_api_client/models/mft_configuration_data.py +607 -0
  247. clients/ctm_api_client/models/mft_entities_list_names.py +210 -0
  248. clients/ctm_api_client/models/mft_external_user_projection_data.py +247 -0
  249. clients/ctm_api_client/models/mft_folder_projection_data.py +224 -0
  250. clients/ctm_api_client/models/mft_folder_projection_properties.py +247 -0
  251. clients/ctm_api_client/models/mft_user_group_projection_data.py +218 -0
  252. clients/ctm_api_client/models/monitoring_privilege_category.py +151 -0
  253. clients/ctm_api_client/models/msg_data_arguments.py +121 -0
  254. clients/ctm_api_client/models/name_value_attribute.py +145 -0
  255. clients/ctm_api_client/models/new_sample.py +148 -0
  256. clients/ctm_api_client/models/node.py +272 -0
  257. clients/ctm_api_client/models/optional_value.py +123 -0
  258. clients/ctm_api_client/models/order_folder_parameters.py +450 -0
  259. clients/ctm_api_client/models/order_folder_result_item.py +279 -0
  260. clients/ctm_api_client/models/order_folder_results.py +237 -0
  261. clients/ctm_api_client/models/order_parameters.py +361 -0
  262. clients/ctm_api_client/models/ordered_item_item.py +333 -0
  263. clients/ctm_api_client/models/output.py +121 -0
  264. clients/ctm_api_client/models/output_params.py +218 -0
  265. clients/ctm_api_client/models/passwords_object.py +181 -0
  266. clients/ctm_api_client/models/performance.py +241 -0
  267. clients/ctm_api_client/models/pgp_template_data.py +305 -0
  268. clients/ctm_api_client/models/ping_agent_params.py +155 -0
  269. clients/ctm_api_client/models/planning_privilege_category.py +224 -0
  270. clients/ctm_api_client/models/plugin_data.py +363 -0
  271. clients/ctm_api_client/models/plugin_mng_auth.py +218 -0
  272. clients/ctm_api_client/models/pool_variables_error_info.py +147 -0
  273. clients/ctm_api_client/models/pool_variables_name.py +147 -0
  274. clients/ctm_api_client/models/pool_variables_name_value.py +153 -0
  275. clients/ctm_api_client/models/possible_value_properties.py +171 -0
  276. clients/ctm_api_client/models/privilege_name.py +149 -0
  277. clients/ctm_api_client/models/privilege_name_controlm.py +181 -0
  278. clients/ctm_api_client/models/privileges.py +264 -0
  279. clients/ctm_api_client/models/product_description.py +247 -0
  280. clients/ctm_api_client/models/product_sections.py +155 -0
  281. clients/ctm_api_client/models/provision_advance_parameters.py +218 -0
  282. clients/ctm_api_client/models/query.py +171 -0
  283. clients/ctm_api_client/models/raw_cms_xml_request.py +155 -0
  284. clients/ctm_api_client/models/read_only_status.py +123 -0
  285. clients/ctm_api_client/models/report_date_time_settings.py +183 -0
  286. clients/ctm_api_client/models/report_filter.py +151 -0
  287. clients/ctm_api_client/models/report_filters.py +95 -0
  288. clients/ctm_api_client/models/report_result.py +126 -0
  289. clients/ctm_api_client/models/request_parameters_wrapper_em_default_request_parameters_log_job_parameters.py +159 -0
  290. clients/ctm_api_client/models/request_parameters_wrapper_em_default_request_parameters_why_job_parameter.py +159 -0
  291. clients/ctm_api_client/models/rerun_parameters.py +123 -0
  292. clients/ctm_api_client/models/rerun_zos_parameters.py +305 -0
  293. clients/ctm_api_client/models/resource_max.py +124 -0
  294. clients/ctm_api_client/models/resource_obj.py +247 -0
  295. clients/ctm_api_client/models/resource_param.py +151 -0
  296. clients/ctm_api_client/models/resource_set.py +95 -0
  297. clients/ctm_api_client/models/restart_step.py +149 -0
  298. clients/ctm_api_client/models/results_status.py +210 -0
  299. clients/ctm_api_client/models/role_data.py +785 -0
  300. clients/ctm_api_client/models/role_data_full.py +189 -0
  301. clients/ctm_api_client/models/role_header.py +149 -0
  302. clients/ctm_api_client/models/role_header_list.py +95 -0
  303. clients/ctm_api_client/models/role_properties.py +123 -0
  304. clients/ctm_api_client/models/rule_criteria.py +177 -0
  305. clients/ctm_api_client/models/rule_projection.py +264 -0
  306. clients/ctm_api_client/models/rule_statistics.py +301 -0
  307. clients/ctm_api_client/models/rules_statistic_list.py +121 -0
  308. clients/ctm_api_client/models/rules_statistic_list_summary.py +147 -0
  309. clients/ctm_api_client/models/run_as_user_data.py +213 -0
  310. clients/ctm_api_client/models/run_as_user_details_data.py +149 -0
  311. clients/ctm_api_client/models/run_as_user_key_data.py +151 -0
  312. clients/ctm_api_client/models/run_as_users_list.py +95 -0
  313. clients/ctm_api_client/models/run_report.py +217 -0
  314. clients/ctm_api_client/models/run_report_info.py +264 -0
  315. clients/ctm_api_client/models/run_result.py +184 -0
  316. clients/ctm_api_client/models/runas_definition_auth.py +151 -0
  317. clients/ctm_api_client/models/runas_user_auth.py +181 -0
  318. clients/ctm_api_client/models/saml2_identity_provider.py +216 -0
  319. clients/ctm_api_client/models/saml_status.py +123 -0
  320. clients/ctm_api_client/models/sample.py +175 -0
  321. clients/ctm_api_client/models/search_params.py +689 -0
  322. clients/ctm_api_client/models/search_tag_tuple.py +145 -0
  323. clients/ctm_api_client/models/secret_key_value.py +152 -0
  324. clients/ctm_api_client/models/secret_value.py +123 -0
  325. clients/ctm_api_client/models/section_metadata_properties.py +237 -0
  326. clients/ctm_api_client/models/service_auth.py +185 -0
  327. clients/ctm_api_client/models/service_auth_action.py +247 -0
  328. clients/ctm_api_client/models/service_provider_information.py +210 -0
  329. clients/ctm_api_client/models/set_agent_params.py +177 -0
  330. clients/ctm_api_client/models/set_agent_params_list.py +121 -0
  331. clients/ctm_api_client/models/setting_key_properties.py +150 -0
  332. clients/ctm_api_client/models/setting_properties.py +177 -0
  333. clients/ctm_api_client/models/setting_properties_object.py +121 -0
  334. clients/ctm_api_client/models/settings_metadata_properties.py +218 -0
  335. clients/ctm_api_client/models/settings_update_object.py +154 -0
  336. clients/ctm_api_client/models/sla_service.py +682 -0
  337. clients/ctm_api_client/models/sla_service_status_by_jobs.py +363 -0
  338. clients/ctm_api_client/models/ssh_key_properties.py +181 -0
  339. clients/ctm_api_client/models/statistics.py +216 -0
  340. clients/ctm_api_client/models/statistics_average_info.py +181 -0
  341. clients/ctm_api_client/models/statistics_period.py +151 -0
  342. clients/ctm_api_client/models/statistics_run_info.py +150 -0
  343. clients/ctm_api_client/models/statistics_single_run.py +276 -0
  344. clients/ctm_api_client/models/string_list_result.py +95 -0
  345. clients/ctm_api_client/models/success_data.py +123 -0
  346. clients/ctm_api_client/models/summary.py +210 -0
  347. clients/ctm_api_client/models/system_parameter.py +177 -0
  348. clients/ctm_api_client/models/system_setting.py +426 -0
  349. clients/ctm_api_client/models/system_setting_annotation_property.py +95 -0
  350. clients/ctm_api_client/models/system_setting_key_value.py +155 -0
  351. clients/ctm_api_client/models/system_setting_key_value_component.py +183 -0
  352. clients/ctm_api_client/models/system_setting_ldap.py +182 -0
  353. clients/ctm_api_client/models/system_setting_property.py +126 -0
  354. clients/ctm_api_client/models/term_group.py +95 -0
  355. clients/ctm_api_client/models/token_data_request.py +221 -0
  356. clients/ctm_api_client/models/token_data_response.py +343 -0
  357. clients/ctm_api_client/models/token_list.py +126 -0
  358. clients/ctm_api_client/models/token_list_array.py +95 -0
  359. clients/ctm_api_client/models/tools_privilege_category.py +189 -0
  360. clients/ctm_api_client/models/topology.py +121 -0
  361. clients/ctm_api_client/models/upgrade_agent_info.py +276 -0
  362. clients/ctm_api_client/models/upgrade_agent_info_list.py +95 -0
  363. clients/ctm_api_client/models/upgrade_info.py +149 -0
  364. clients/ctm_api_client/models/upgrade_notification.py +121 -0
  365. clients/ctm_api_client/models/upgrade_record.py +624 -0
  366. clients/ctm_api_client/models/upgrade_record_list.py +121 -0
  367. clients/ctm_api_client/models/upgrade_request.py +334 -0
  368. clients/ctm_api_client/models/upgrade_response.py +123 -0
  369. clients/ctm_api_client/models/user_additional_properties.py +187 -0
  370. clients/ctm_api_client/models/user_allowed_folders_properties.py +615 -0
  371. clients/ctm_api_client/models/user_data.py +272 -0
  372. clients/ctm_api_client/models/user_group_details_data.py +151 -0
  373. clients/ctm_api_client/models/user_group_properties_data.py +185 -0
  374. clients/ctm_api_client/models/user_header.py +305 -0
  375. clients/ctm_api_client/models/user_password.py +123 -0
  376. clients/ctm_api_client/models/user_preferences.py +121 -0
  377. clients/ctm_api_client/models/validation_properties.py +345 -0
  378. clients/ctm_api_client/models/value.py +126 -0
  379. clients/ctm_api_client/models/values.py +95 -0
  380. clients/ctm_api_client/models/variable_name_value.py +150 -0
  381. clients/ctm_api_client/models/variable_names.py +123 -0
  382. clients/ctm_api_client/models/variables.py +123 -0
  383. clients/ctm_api_client/models/viewpoint_manager_privilege_category.py +218 -0
  384. clients/ctm_api_client/models/warning_data.py +276 -0
  385. clients/ctm_api_client/models/warning_list.py +121 -0
  386. clients/ctm_api_client/models/warnings_collection.py +121 -0
  387. clients/ctm_api_client/models/why_job_parameters.py +121 -0
  388. clients/ctm_api_client/models/why_job_result_item.py +121 -0
  389. clients/ctm_api_client/models/why_job_results.py +237 -0
  390. clients/ctm_api_client/models/workflow_insights_status.py +150 -0
  391. clients/ctm_api_client/models/workload_policies_file_results.py +243 -0
  392. clients/ctm_api_client/models/workload_policy.py +276 -0
  393. clients/ctm_api_client/models/workload_policy_list.py +121 -0
  394. clients/ctm_api_client/models/workload_policy_state.py +149 -0
  395. clients/ctm_api_client/models/workload_policy_state_list.py +121 -0
  396. clients/ctm_api_client/models/workspace_folder.py +158 -0
  397. clients/ctm_api_client/models/workspace_folders.py +121 -0
  398. clients/ctm_api_client/models/zoo_keeper.py +276 -0
  399. clients/ctm_api_client/models/zos_template_data.py +595 -0
  400. clients/ctm_api_client/rest.py +415 -0
  401. clients/ctm_saas_client/__init__.py +347 -0
  402. clients/ctm_saas_client/api/__init__.py +13 -0
  403. clients/ctm_saas_client/api/authentication_api.py +513 -0
  404. clients/ctm_saas_client/api/build_api.py +137 -0
  405. clients/ctm_saas_client/api/config_api.py +6456 -0
  406. clients/ctm_saas_client/api/deploy_api.py +2023 -0
  407. clients/ctm_saas_client/api/provision_api.py +133 -0
  408. clients/ctm_saas_client/api/reporting_api.py +319 -0
  409. clients/ctm_saas_client/api/run_api.py +3223 -0
  410. clients/ctm_saas_client/api/usage_api.py +129 -0
  411. clients/ctm_saas_client/api_client.py +640 -0
  412. clients/ctm_saas_client/configuration.py +255 -0
  413. clients/ctm_saas_client/models/__init__.py +333 -0
  414. clients/ctm_saas_client/models/actions_auth_record.py +368 -0
  415. clients/ctm_saas_client/models/active_services.py +149 -0
  416. clients/ctm_saas_client/models/add_agent_params.py +295 -0
  417. clients/ctm_saas_client/models/add_ons.py +125 -0
  418. clients/ctm_saas_client/models/add_remote_host_params.py +265 -0
  419. clients/ctm_saas_client/models/add_remove_success_data.py +153 -0
  420. clients/ctm_saas_client/models/add_server_params.py +212 -0
  421. clients/ctm_saas_client/models/agent_certificate_expiration_data.py +125 -0
  422. clients/ctm_saas_client/models/agent_data.py +599 -0
  423. clients/ctm_saas_client/models/agent_debug_information.py +155 -0
  424. clients/ctm_saas_client/models/agent_details.py +237 -0
  425. clients/ctm_saas_client/models/agent_details_list.py +123 -0
  426. clients/ctm_saas_client/models/agent_in_group_params.py +154 -0
  427. clients/ctm_saas_client/models/agent_in_group_params_list.py +123 -0
  428. clients/ctm_saas_client/models/agent_in_hostgroup.py +182 -0
  429. clients/ctm_saas_client/models/agent_info.py +155 -0
  430. clients/ctm_saas_client/models/agent_info_result.py +183 -0
  431. clients/ctm_saas_client/models/agent_mng_auth.py +181 -0
  432. clients/ctm_saas_client/models/agent_sys_param_set_data.py +237 -0
  433. clients/ctm_saas_client/models/agent_sys_param_set_success_data.py +153 -0
  434. clients/ctm_saas_client/models/agent_tables_name.py +123 -0
  435. clients/ctm_saas_client/models/agent_thing_properties.py +181 -0
  436. clients/ctm_saas_client/models/agents_data_list.py +95 -0
  437. clients/ctm_saas_client/models/agents_in_group_list_result.py +95 -0
  438. clients/ctm_saas_client/models/agents_in_group_success_data.py +153 -0
  439. clients/ctm_saas_client/models/agents_sys_param_set_data.py +125 -0
  440. clients/ctm_saas_client/models/ai_deploy_response.py +125 -0
  441. clients/ctm_saas_client/models/ai_error.py +153 -0
  442. clients/ctm_saas_client/models/ai_jobtype.py +209 -0
  443. clients/ctm_saas_client/models/ai_jobtype_list.py +123 -0
  444. clients/ctm_saas_client/models/alert_param.py +189 -0
  445. clients/ctm_saas_client/models/alert_status_param.py +161 -0
  446. clients/ctm_saas_client/models/all_mft_data_settings.py +149 -0
  447. clients/ctm_saas_client/models/allowed_job_actions.py +657 -0
  448. clients/ctm_saas_client/models/allowed_jobs.py +153 -0
  449. clients/ctm_saas_client/models/annotation_details.py +149 -0
  450. clients/ctm_saas_client/models/api_gtw_session.py +123 -0
  451. clients/ctm_saas_client/models/api_throwable.py +149 -0
  452. clients/ctm_saas_client/models/app.py +293 -0
  453. clients/ctm_saas_client/models/app_deploy_response.py +181 -0
  454. clients/ctm_saas_client/models/app_deployed.py +349 -0
  455. clients/ctm_saas_client/models/app_details.py +209 -0
  456. clients/ctm_saas_client/models/app_list.py +149 -0
  457. clients/ctm_saas_client/models/app_predeploy_response.py +153 -0
  458. clients/ctm_saas_client/models/archive_jobs_list.py +175 -0
  459. clients/ctm_saas_client/models/archive_rule.py +377 -0
  460. clients/ctm_saas_client/models/archive_rules_list.py +123 -0
  461. clients/ctm_saas_client/models/as2_key_data.py +181 -0
  462. clients/ctm_saas_client/models/associate_data.py +153 -0
  463. clients/ctm_saas_client/models/authenticate_credentials.py +227 -0
  464. clients/ctm_saas_client/models/authentication_data.py +149 -0
  465. clients/ctm_saas_client/models/availability.py +237 -0
  466. clients/ctm_saas_client/models/aysnc_poll_deployment_file_results.py +149 -0
  467. clients/ctm_saas_client/models/certificate_signing_request_data.py +265 -0
  468. clients/ctm_saas_client/models/client_access_privilege_category.py +293 -0
  469. clients/ctm_saas_client/models/cluster.py +175 -0
  470. clients/ctm_saas_client/models/cluster_authorization_data.py +125 -0
  471. clients/ctm_saas_client/models/communication_analysis_response_type.py +181 -0
  472. clients/ctm_saas_client/models/component_key_with_status_type.py +153 -0
  473. clients/ctm_saas_client/models/component_meta_data_properties.py +201 -0
  474. clients/ctm_saas_client/models/component_mft_key_type.py +293 -0
  475. clients/ctm_saas_client/models/condition_properties.py +175 -0
  476. clients/ctm_saas_client/models/configuration_manager_privilege_category.py +265 -0
  477. clients/ctm_saas_client/models/connection_profile_deployment_info.py +237 -0
  478. clients/ctm_saas_client/models/connection_profile_status.py +321 -0
  479. clients/ctm_saas_client/models/connection_profiles_deployment_status_result.py +153 -0
  480. clients/ctm_saas_client/models/connection_profiles_status_result.py +181 -0
  481. clients/ctm_saas_client/models/control_m_authentication_data.py +237 -0
  482. clients/ctm_saas_client/models/cp_mng_auth.py +237 -0
  483. clients/ctm_saas_client/models/ctm_details.py +237 -0
  484. clients/ctm_saas_client/models/ctm_details_list.py +95 -0
  485. clients/ctm_saas_client/models/ctm_name_value_sw.py +149 -0
  486. clients/ctm_saas_client/models/ctmag_set_extract_service_status.py +125 -0
  487. clients/ctm_saas_client/models/ctmagent_basic_info_type.py +291 -0
  488. clients/ctm_saas_client/models/ctmagent_ctm_test_type.py +321 -0
  489. clients/ctm_saas_client/models/ctmagent_state_changed_type.py +209 -0
  490. clients/ctm_saas_client/models/ctmvar_del_result_item.py +123 -0
  491. clients/ctm_saas_client/models/ctmvar_del_results.py +227 -0
  492. clients/ctm_saas_client/models/ctmvar_error_info.py +222 -0
  493. clients/ctm_saas_client/models/ctmvar_get_result_item.py +149 -0
  494. clients/ctm_saas_client/models/ctmvar_get_results.py +227 -0
  495. clients/ctm_saas_client/models/ctmvar_result_item.py +201 -0
  496. clients/ctm_saas_client/models/ctmvar_results.py +227 -0
  497. clients/ctm_saas_client/models/ctmvar_set_result_item.py +123 -0
  498. clients/ctm_saas_client/models/ctmvar_set_results.py +227 -0
  499. clients/ctm_saas_client/models/deploy_async_results.py +125 -0
  500. clients/ctm_saas_client/models/deploy_jobtype_response.py +151 -0
  501. clients/ctm_saas_client/models/deployment_file_error.py +123 -0
  502. clients/ctm_saas_client/models/deployment_file_results.py +615 -0
  503. clients/ctm_saas_client/models/diagnostics_data_collection_information.py +237 -0
  504. clients/ctm_saas_client/models/diagnostics_data_collection_result.py +153 -0
  505. clients/ctm_saas_client/models/em_basic_active_request_parameters.py +201 -0
  506. clients/ctm_saas_client/models/em_default_request_parameters.py +201 -0
  507. clients/ctm_saas_client/models/em_jobs_id.py +149 -0
  508. clients/ctm_saas_client/models/em_order_folder.py +227 -0
  509. clients/ctm_saas_client/models/em_order_folder_parameters.py +175 -0
  510. clients/ctm_saas_client/models/em_system_parameter.py +125 -0
  511. clients/ctm_saas_client/models/encryption_metadata.py +153 -0
  512. clients/ctm_saas_client/models/error_data.py +265 -0
  513. clients/ctm_saas_client/models/error_list.py +123 -0
  514. clients/ctm_saas_client/models/event.py +181 -0
  515. clients/ctm_saas_client/models/event_param.py +151 -0
  516. clients/ctm_saas_client/models/event_set.py +95 -0
  517. clients/ctm_saas_client/models/external_provider_authentication_data.py +125 -0
  518. clients/ctm_saas_client/models/external_user_data.py +433 -0
  519. clients/ctm_saas_client/models/extract_service_prop_params.py +293 -0
  520. clients/ctm_saas_client/models/field_metadata_properties.py +721 -0
  521. clients/ctm_saas_client/models/field_value.py +150 -0
  522. clients/ctm_saas_client/models/field_values.py +126 -0
  523. clients/ctm_saas_client/models/folder_auth.py +293 -0
  524. clients/ctm_saas_client/models/folder_properties.py +405 -0
  525. clients/ctm_saas_client/models/folder_properties_data.py +377 -0
  526. clients/ctm_saas_client/models/folders_users_settings_and_metadata_properties.py +227 -0
  527. clients/ctm_saas_client/models/folders_users_settings_and_metadata_properties_from_b2_b.py +227 -0
  528. clients/ctm_saas_client/models/fts_authentication_details.py +149 -0
  529. clients/ctm_saas_client/models/fts_ftp_settings.py +349 -0
  530. clients/ctm_saas_client/models/fts_general_settings.py +349 -0
  531. clients/ctm_saas_client/models/fts_ldap_authentication_details.py +293 -0
  532. clients/ctm_saas_client/models/fts_pam_authentication_details.py +125 -0
  533. clients/ctm_saas_client/models/fts_settings_data.py +209 -0
  534. clients/ctm_saas_client/models/fts_sftp_settings.py +321 -0
  535. clients/ctm_saas_client/models/fts_user_home_directory_data.py +153 -0
  536. clients/ctm_saas_client/models/gateway_data.py +209 -0
  537. clients/ctm_saas_client/models/get_alert_info.py +201 -0
  538. clients/ctm_saas_client/models/get_manifest_params.py +515 -0
  539. clients/ctm_saas_client/models/get_manifest_params_result.py +95 -0
  540. clients/ctm_saas_client/models/groups_allowed_folders_properties.py +205 -0
  541. clients/ctm_saas_client/models/host_group_data.py +181 -0
  542. clients/ctm_saas_client/models/host_groups_data_list.py +95 -0
  543. clients/ctm_saas_client/models/host_properties.py +573 -0
  544. clients/ctm_saas_client/models/hostgroup_agent_participation.py +154 -0
  545. clients/ctm_saas_client/models/hostgroup_properties.py +153 -0
  546. clients/ctm_saas_client/models/hostname_port_pair.py +153 -0
  547. clients/ctm_saas_client/models/hub_data.py +293 -0
  548. clients/ctm_saas_client/models/hub_status.py +125 -0
  549. clients/ctm_saas_client/models/job.py +175 -0
  550. clients/ctm_saas_client/models/job_level_auth.py +181 -0
  551. clients/ctm_saas_client/models/job_run_status.py +742 -0
  552. clients/ctm_saas_client/models/job_status_result.py +349 -0
  553. clients/ctm_saas_client/models/jobtype_agent.py +153 -0
  554. clients/ctm_saas_client/models/key_value.py +407 -0
  555. clients/ctm_saas_client/models/key_value_list_result.py +95 -0
  556. clients/ctm_saas_client/models/key_value_type.py +211 -0
  557. clients/ctm_saas_client/models/key_value_type_list_result.py +95 -0
  558. clients/ctm_saas_client/models/known_hosts.py +149 -0
  559. clients/ctm_saas_client/models/ldap_domain_settings.py +279 -0
  560. clients/ctm_saas_client/models/log.py +123 -0
  561. clients/ctm_saas_client/models/log_data_arguments.py +123 -0
  562. clients/ctm_saas_client/models/log_job_parameters.py +175 -0
  563. clients/ctm_saas_client/models/log_job_result_item.py +253 -0
  564. clients/ctm_saas_client/models/log_job_results.py +227 -0
  565. clients/ctm_saas_client/models/log_params.py +209 -0
  566. clients/ctm_saas_client/models/login_credentials.py +151 -0
  567. clients/ctm_saas_client/models/login_result.py +175 -0
  568. clients/ctm_saas_client/models/manifest_group_item_object.py +149 -0
  569. clients/ctm_saas_client/models/manifest_group_object.py +123 -0
  570. clients/ctm_saas_client/models/matching.py +95 -0
  571. clients/ctm_saas_client/models/mft_configuration_data.py +573 -0
  572. clients/ctm_saas_client/models/mft_entities_list_names.py +201 -0
  573. clients/ctm_saas_client/models/mft_external_user_projection_data.py +237 -0
  574. clients/ctm_saas_client/models/mft_folder_projection_data.py +209 -0
  575. clients/ctm_saas_client/models/mft_folder_projection_properties.py +237 -0
  576. clients/ctm_saas_client/models/mft_user_group_projection_data.py +209 -0
  577. clients/ctm_saas_client/models/monitoring_privilege_category.py +153 -0
  578. clients/ctm_saas_client/models/msg_data_arguments.py +123 -0
  579. clients/ctm_saas_client/models/name_status.py +149 -0
  580. clients/ctm_saas_client/models/name_value_attribute.py +149 -0
  581. clients/ctm_saas_client/models/new_sample.py +150 -0
  582. clients/ctm_saas_client/models/node.py +261 -0
  583. clients/ctm_saas_client/models/optional_value.py +125 -0
  584. clients/ctm_saas_client/models/order_folder_parameters.py +433 -0
  585. clients/ctm_saas_client/models/order_folder_result_item.py +260 -0
  586. clients/ctm_saas_client/models/order_folder_results.py +227 -0
  587. clients/ctm_saas_client/models/order_parameters.py +338 -0
  588. clients/ctm_saas_client/models/ordered_item_item.py +312 -0
  589. clients/ctm_saas_client/models/organization_group_export_data.py +125 -0
  590. clients/ctm_saas_client/models/organization_group_info.py +181 -0
  591. clients/ctm_saas_client/models/organization_group_name.py +153 -0
  592. clients/ctm_saas_client/models/organization_group_user_authorization_simulation_data.py +151 -0
  593. clients/ctm_saas_client/models/output.py +123 -0
  594. clients/ctm_saas_client/models/output_params.py +209 -0
  595. clients/ctm_saas_client/models/passwords_object.py +181 -0
  596. clients/ctm_saas_client/models/performance.py +237 -0
  597. clients/ctm_saas_client/models/pgp_template_data.py +293 -0
  598. clients/ctm_saas_client/models/ping_agent_params.py +155 -0
  599. clients/ctm_saas_client/models/planning_privilege_category.py +209 -0
  600. clients/ctm_saas_client/models/plugin_data.py +349 -0
  601. clients/ctm_saas_client/models/plugin_mng_auth.py +209 -0
  602. clients/ctm_saas_client/models/pool_variables_error_info.py +149 -0
  603. clients/ctm_saas_client/models/pool_variables_name.py +149 -0
  604. clients/ctm_saas_client/models/pool_variables_name_value.py +149 -0
  605. clients/ctm_saas_client/models/possible_value_properties.py +175 -0
  606. clients/ctm_saas_client/models/privilege_name.py +153 -0
  607. clients/ctm_saas_client/models/privilege_name_controlm.py +181 -0
  608. clients/ctm_saas_client/models/privileges.py +253 -0
  609. clients/ctm_saas_client/models/product_description.py +237 -0
  610. clients/ctm_saas_client/models/product_sections.py +151 -0
  611. clients/ctm_saas_client/models/provision_advance_parameters.py +209 -0
  612. clients/ctm_saas_client/models/query.py +175 -0
  613. clients/ctm_saas_client/models/raw_cms_xml_request.py +151 -0
  614. clients/ctm_saas_client/models/read_only_status.py +125 -0
  615. clients/ctm_saas_client/models/report_date_time_settings.py +175 -0
  616. clients/ctm_saas_client/models/report_filter.py +151 -0
  617. clients/ctm_saas_client/models/report_filters.py +95 -0
  618. clients/ctm_saas_client/models/report_result.py +126 -0
  619. clients/ctm_saas_client/models/request_parameters_wrapper_em_default_request_parameters_log_job_parameters.py +149 -0
  620. clients/ctm_saas_client/models/request_parameters_wrapper_em_default_request_parameters_why_job_parameter.py +149 -0
  621. clients/ctm_saas_client/models/rerun_parameters.py +125 -0
  622. clients/ctm_saas_client/models/rerun_zos_parameters.py +293 -0
  623. clients/ctm_saas_client/models/resource_max.py +124 -0
  624. clients/ctm_saas_client/models/resource_obj.py +237 -0
  625. clients/ctm_saas_client/models/resource_param.py +151 -0
  626. clients/ctm_saas_client/models/resource_set.py +95 -0
  627. clients/ctm_saas_client/models/restart_step.py +153 -0
  628. clients/ctm_saas_client/models/results_status.py +201 -0
  629. clients/ctm_saas_client/models/role_data.py +755 -0
  630. clients/ctm_saas_client/models/role_data_full.py +181 -0
  631. clients/ctm_saas_client/models/role_header.py +153 -0
  632. clients/ctm_saas_client/models/role_header_list.py +95 -0
  633. clients/ctm_saas_client/models/role_properties.py +125 -0
  634. clients/ctm_saas_client/models/rule_criteria.py +177 -0
  635. clients/ctm_saas_client/models/rule_projection.py +253 -0
  636. clients/ctm_saas_client/models/rule_statistics.py +286 -0
  637. clients/ctm_saas_client/models/rules_statistic_list.py +123 -0
  638. clients/ctm_saas_client/models/rules_statistic_list_summary.py +149 -0
  639. clients/ctm_saas_client/models/run_as_user_data.py +209 -0
  640. clients/ctm_saas_client/models/run_as_user_details_data.py +153 -0
  641. clients/ctm_saas_client/models/run_as_user_key_data.py +153 -0
  642. clients/ctm_saas_client/models/run_as_users_list.py +95 -0
  643. clients/ctm_saas_client/models/run_report.py +206 -0
  644. clients/ctm_saas_client/models/run_report_info.py +253 -0
  645. clients/ctm_saas_client/models/run_result.py +182 -0
  646. clients/ctm_saas_client/models/runas_definition_auth.py +153 -0
  647. clients/ctm_saas_client/models/runas_user_auth.py +181 -0
  648. clients/ctm_saas_client/models/saml2_identity_provider.py +203 -0
  649. clients/ctm_saas_client/models/saml_status.py +125 -0
  650. clients/ctm_saas_client/models/sample.py +177 -0
  651. clients/ctm_saas_client/models/search_params.py +664 -0
  652. clients/ctm_saas_client/models/search_tag_tuple.py +149 -0
  653. clients/ctm_saas_client/models/secret_key_value.py +154 -0
  654. clients/ctm_saas_client/models/secret_value.py +125 -0
  655. clients/ctm_saas_client/models/section_metadata_properties.py +227 -0
  656. clients/ctm_saas_client/models/service_auth.py +181 -0
  657. clients/ctm_saas_client/models/service_auth_action.py +237 -0
  658. clients/ctm_saas_client/models/service_provider_information.py +201 -0
  659. clients/ctm_saas_client/models/set_agent_params.py +181 -0
  660. clients/ctm_saas_client/models/set_agent_params_list.py +123 -0
  661. clients/ctm_saas_client/models/setting_key_properties.py +149 -0
  662. clients/ctm_saas_client/models/setting_properties.py +181 -0
  663. clients/ctm_saas_client/models/setting_properties_object.py +123 -0
  664. clients/ctm_saas_client/models/settings_metadata_properties.py +201 -0
  665. clients/ctm_saas_client/models/settings_update_object.py +153 -0
  666. clients/ctm_saas_client/models/sla_service.py +657 -0
  667. clients/ctm_saas_client/models/sla_service_status_by_jobs.py +349 -0
  668. clients/ctm_saas_client/models/ssh_key_properties.py +181 -0
  669. clients/ctm_saas_client/models/statistics.py +207 -0
  670. clients/ctm_saas_client/models/statistics_average_info.py +181 -0
  671. clients/ctm_saas_client/models/statistics_period.py +153 -0
  672. clients/ctm_saas_client/models/statistics_run_info.py +151 -0
  673. clients/ctm_saas_client/models/statistics_single_run.py +265 -0
  674. clients/ctm_saas_client/models/string_list_result.py +95 -0
  675. clients/ctm_saas_client/models/success_data.py +125 -0
  676. clients/ctm_saas_client/models/summary.py +201 -0
  677. clients/ctm_saas_client/models/system_parameter.py +181 -0
  678. clients/ctm_saas_client/models/system_setting.py +435 -0
  679. clients/ctm_saas_client/models/system_setting_annotation_property.py +95 -0
  680. clients/ctm_saas_client/models/system_setting_key_value.py +155 -0
  681. clients/ctm_saas_client/models/system_setting_key_value_component.py +183 -0
  682. clients/ctm_saas_client/models/system_setting_ldap.py +176 -0
  683. clients/ctm_saas_client/models/system_setting_property.py +126 -0
  684. clients/ctm_saas_client/models/term_group.py +95 -0
  685. clients/ctm_saas_client/models/token_data_request.py +210 -0
  686. clients/ctm_saas_client/models/token_data_response.py +324 -0
  687. clients/ctm_saas_client/models/token_list.py +126 -0
  688. clients/ctm_saas_client/models/token_list_array.py +95 -0
  689. clients/ctm_saas_client/models/tools_privilege_category.py +181 -0
  690. clients/ctm_saas_client/models/topology.py +123 -0
  691. clients/ctm_saas_client/models/upgrade_agent_info.py +265 -0
  692. clients/ctm_saas_client/models/upgrade_agent_info_list.py +95 -0
  693. clients/ctm_saas_client/models/upgrade_info.py +153 -0
  694. clients/ctm_saas_client/models/upgrade_notification.py +123 -0
  695. clients/ctm_saas_client/models/upgrade_record.py +601 -0
  696. clients/ctm_saas_client/models/upgrade_record_list.py +123 -0
  697. clients/ctm_saas_client/models/upgrade_request.py +321 -0
  698. clients/ctm_saas_client/models/upgrade_response.py +125 -0
  699. clients/ctm_saas_client/models/user_additional_properties.py +179 -0
  700. clients/ctm_saas_client/models/user_allowed_folders_properties.py +591 -0
  701. clients/ctm_saas_client/models/user_data.py +261 -0
  702. clients/ctm_saas_client/models/user_group_details_data.py +153 -0
  703. clients/ctm_saas_client/models/user_group_properties_data.py +181 -0
  704. clients/ctm_saas_client/models/user_header.py +293 -0
  705. clients/ctm_saas_client/models/user_password.py +125 -0
  706. clients/ctm_saas_client/models/user_preferences.py +125 -0
  707. clients/ctm_saas_client/models/validation_properties.py +331 -0
  708. clients/ctm_saas_client/models/value.py +126 -0
  709. clients/ctm_saas_client/models/values.py +95 -0
  710. clients/ctm_saas_client/models/variable_name_value.py +149 -0
  711. clients/ctm_saas_client/models/variable_names.py +125 -0
  712. clients/ctm_saas_client/models/variables.py +125 -0
  713. clients/ctm_saas_client/models/viewpoint_manager_privilege_category.py +209 -0
  714. clients/ctm_saas_client/models/warning_data.py +265 -0
  715. clients/ctm_saas_client/models/warning_list.py +123 -0
  716. clients/ctm_saas_client/models/warnings_collection.py +123 -0
  717. clients/ctm_saas_client/models/why_job_parameters.py +123 -0
  718. clients/ctm_saas_client/models/why_job_result_item.py +123 -0
  719. clients/ctm_saas_client/models/why_job_results.py +227 -0
  720. clients/ctm_saas_client/models/workflow_insights_status.py +149 -0
  721. clients/ctm_saas_client/models/workload_policies_file_results.py +233 -0
  722. clients/ctm_saas_client/models/workload_policy.py +265 -0
  723. clients/ctm_saas_client/models/workload_policy_list.py +123 -0
  724. clients/ctm_saas_client/models/workload_policy_state.py +153 -0
  725. clients/ctm_saas_client/models/workload_policy_state_list.py +123 -0
  726. clients/ctm_saas_client/models/workspace_folder.py +152 -0
  727. clients/ctm_saas_client/models/workspace_folders.py +123 -0
  728. clients/ctm_saas_client/models/zoo_keeper.py +265 -0
  729. clients/ctm_saas_client/models/zos_template_data.py +573 -0
  730. clients/ctm_saas_client/rest.py +323 -0
  731. ctm_python_client/__init__.py +2 -0
  732. ctm_python_client/core/__init__.py +0 -0
  733. ctm_python_client/core/comm.py +181 -0
  734. ctm_python_client/core/credential.py +44 -0
  735. ctm_python_client/core/monitoring.py +382 -0
  736. ctm_python_client/core/workflow.py +413 -0
  737. ctm_python_client/ext/__init__.py +0 -0
  738. ctm_python_client/ext/autogen.py +243 -0
  739. ctm_python_client/ext/credential.py +18 -0
  740. ctm_python_client/ext/viz.py +55 -0
  741. ctm_python_client-2.1.2.dist-info/LICENSE +29 -0
  742. ctm_python_client-2.1.2.dist-info/METADATA +19 -0
  743. ctm_python_client-2.1.2.dist-info/RECORD +745 -0
  744. ctm_python_client-2.1.2.dist-info/WHEEL +5 -0
  745. 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)