js7-client-python 2.0.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (389) hide show
  1. js7/__init__.py +8 -0
  2. js7/api/joc/http/v_2_8_2/agent/cluster/confirm_node_loss.py +36 -0
  3. js7/api/joc/http/v_2_8_2/agent/cluster/switchover.py +36 -0
  4. js7/api/joc/http/v_2_8_2/agent/delete.py +36 -0
  5. js7/api/joc/http/v_2_8_2/agents/agents.py +36 -0
  6. js7/api/joc/http/v_2_8_2/agents/cluster/delete.py +36 -0
  7. js7/api/joc/http/v_2_8_2/agents/cluster/deploy.py +36 -0
  8. js7/api/joc/http/v_2_8_2/agents/cluster/revoke.py +36 -0
  9. js7/api/joc/http/v_2_8_2/agents/cluster/store.py +36 -0
  10. js7/api/joc/http/v_2_8_2/agents/export.py +36 -0
  11. js7/api/joc/http/v_2_8_2/agents/import.py +74 -0
  12. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/deploy.py +36 -0
  13. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/revoke.py +36 -0
  14. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/store.py +36 -0
  15. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/delete.py +36 -0
  16. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/disable.py +36 -0
  17. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/enable.py +36 -0
  18. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/reset.py +36 -0
  19. js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/store.py +36 -0
  20. js7/api/joc/http/v_2_8_2/agents/inventory/deploy.py +36 -0
  21. js7/api/joc/http/v_2_8_2/agents/inventory/disable.py +36 -0
  22. js7/api/joc/http/v_2_8_2/agents/inventory/enable.py +36 -0
  23. js7/api/joc/http/v_2_8_2/agents/inventory/revoke.py +36 -0
  24. js7/api/joc/http/v_2_8_2/agents/inventory/store.py +36 -0
  25. js7/api/joc/http/v_2_8_2/agents/reset.py +36 -0
  26. js7/api/joc/http/v_2_8_2/authentication/auth.py +32 -0
  27. js7/api/joc/http/v_2_8_2/authentication/joc_cockpit_permissions.py +28 -0
  28. js7/api/joc/http/v_2_8_2/authentication/login.py +35 -0
  29. js7/api/joc/http/v_2_8_2/authentication/logout.py +28 -0
  30. js7/api/joc/http/v_2_8_2/configuration/configuration.py +36 -0
  31. js7/api/joc/http/v_2_8_2/configuration/save.py +36 -0
  32. js7/api/joc/http/v_2_8_2/controller/abort.py +36 -0
  33. js7/api/joc/http/v_2_8_2/controller/abort_and_restart.py +36 -0
  34. js7/api/joc/http/v_2_8_2/controller/cluster/appoint_nodes.py +36 -0
  35. js7/api/joc/http/v_2_8_2/controller/cluster/confirm_node_loss.py +36 -0
  36. js7/api/joc/http/v_2_8_2/controller/cluster/switchover.py +36 -0
  37. js7/api/joc/http/v_2_8_2/controller/components.py +36 -0
  38. js7/api/joc/http/v_2_8_2/controller/controller.py +36 -0
  39. js7/api/joc/http/v_2_8_2/controller/register.py +42 -0
  40. js7/api/joc/http/v_2_8_2/controller/restart.py +36 -0
  41. js7/api/joc/http/v_2_8_2/controller/terminate.py +36 -0
  42. js7/api/joc/http/v_2_8_2/controller/test.py +36 -0
  43. js7/api/joc/http/v_2_8_2/controller/unregister.py +36 -0
  44. js7/api/joc/http/v_2_8_2/daily_plan/orders/cancel.py +36 -0
  45. js7/api/joc/http/v_2_8_2/daily_plan/orders/copy.py +36 -0
  46. js7/api/joc/http/v_2_8_2/daily_plan/orders/delete.py +36 -0
  47. js7/api/joc/http/v_2_8_2/daily_plan/orders/generate.py +36 -0
  48. js7/api/joc/http/v_2_8_2/daily_plan/orders/modify.py +36 -0
  49. js7/api/joc/http/v_2_8_2/daily_plan/orders/orders.py +36 -0
  50. js7/api/joc/http/v_2_8_2/daily_plan/orders/submit.py +36 -0
  51. js7/api/joc/http/v_2_8_2/daily_plan/projections/calendar.py +36 -0
  52. js7/api/joc/http/v_2_8_2/daily_plan/projections/dates.py +36 -0
  53. js7/api/joc/http/v_2_8_2/daily_plan/projections/recreate.py +28 -0
  54. js7/api/joc/http/v_2_8_2/daily_plan/submissions/delete.py +36 -0
  55. js7/api/joc/http/v_2_8_2/iam/account/change_password.py +36 -0
  56. js7/api/joc/http/v_2_8_2/iam/account/permissions.py +36 -0
  57. js7/api/joc/http/v_2_8_2/iam/account/rename.py +36 -0
  58. js7/api/joc/http/v_2_8_2/iam/account/store.py +36 -0
  59. js7/api/joc/http/v_2_8_2/iam/accounts/accounts.py +36 -0
  60. js7/api/joc/http/v_2_8_2/iam/accounts/delete.py +36 -0
  61. js7/api/joc/http/v_2_8_2/iam/accounts/disable.py +36 -0
  62. js7/api/joc/http/v_2_8_2/iam/accounts/enable.py +36 -0
  63. js7/api/joc/http/v_2_8_2/iam/accounts/reset_password.py +36 -0
  64. js7/api/joc/http/v_2_8_2/iam/blocked_account/store.py +36 -0
  65. js7/api/joc/http/v_2_8_2/iam/blocked_accounts/blocked_accounts.py +36 -0
  66. js7/api/joc/http/v_2_8_2/iam/blocked_accounts/delete.py +36 -0
  67. js7/api/joc/http/v_2_8_2/iam/folder/folder.py +36 -0
  68. js7/api/joc/http/v_2_8_2/iam/folder/rename.py +36 -0
  69. js7/api/joc/http/v_2_8_2/iam/folders/delete.py +36 -0
  70. js7/api/joc/http/v_2_8_2/iam/folders/folders.py +36 -0
  71. js7/api/joc/http/v_2_8_2/iam/folders/store.py +36 -0
  72. js7/api/joc/http/v_2_8_2/iam/identity_service/delete.py +36 -0
  73. js7/api/joc/http/v_2_8_2/iam/identity_service/identity_service.py +36 -0
  74. js7/api/joc/http/v_2_8_2/iam/identity_service/rename.py +36 -0
  75. js7/api/joc/http/v_2_8_2/iam/identity_service/store.py +42 -0
  76. js7/api/joc/http/v_2_8_2/iam/identity_services/identity_services.py +36 -0
  77. js7/api/joc/http/v_2_8_2/iam/permission/permission.py +36 -0
  78. js7/api/joc/http/v_2_8_2/iam/permission/rename.py +36 -0
  79. js7/api/joc/http/v_2_8_2/iam/permissions/delete.py +36 -0
  80. js7/api/joc/http/v_2_8_2/iam/permissions/permissions.py +36 -0
  81. js7/api/joc/http/v_2_8_2/iam/permissions/store.py +36 -0
  82. js7/api/joc/http/v_2_8_2/iam/role/rename.py +36 -0
  83. js7/api/joc/http/v_2_8_2/iam/role/role.py +36 -0
  84. js7/api/joc/http/v_2_8_2/iam/role/store.py +36 -0
  85. js7/api/joc/http/v_2_8_2/iam/roles/delete.py +36 -0
  86. js7/api/joc/http/v_2_8_2/iam/roles/roles.py +36 -0
  87. js7/api/joc/http/v_2_8_2/inventory/changes/changes.py +36 -0
  88. js7/api/joc/http/v_2_8_2/inventory/dependencies.py +33 -0
  89. js7/api/joc/http/v_2_8_2/inventory/deployment/deploy.py +36 -0
  90. js7/api/joc/http/v_2_8_2/inventory/deployment/import_deploy.py +66 -0
  91. js7/api/joc/http/v_2_8_2/inventory/deployment/revoke.py +36 -0
  92. js7/api/joc/http/v_2_8_2/inventory/export/export.py +36 -0
  93. js7/api/joc/http/v_2_8_2/inventory/export/folder.py +36 -0
  94. js7/api/joc/http/v_2_8_2/inventory/import_objects.py +88 -0
  95. js7/api/joc/http/v_2_8_2/inventory/releasables/recall/folder.py +36 -0
  96. js7/api/joc/http/v_2_8_2/inventory/releasables/recall/recall.py +36 -0
  97. js7/api/joc/http/v_2_8_2/inventory/release.py +36 -0
  98. js7/api/joc/http/v_2_8_2/inventory/remove/folder.py +36 -0
  99. js7/api/joc/http/v_2_8_2/inventory/remove/remove.py +36 -0
  100. js7/api/joc/http/v_2_8_2/inventory/repository/delete.py +36 -0
  101. js7/api/joc/http/v_2_8_2/inventory/repository/git/add.py +36 -0
  102. js7/api/joc/http/v_2_8_2/inventory/repository/git/checkout.py +36 -0
  103. js7/api/joc/http/v_2_8_2/inventory/repository/git/clone.py +36 -0
  104. js7/api/joc/http/v_2_8_2/inventory/repository/git/commit.py +36 -0
  105. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/add.py +36 -0
  106. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/credentials.py +28 -0
  107. js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/remove.py +36 -0
  108. js7/api/joc/http/v_2_8_2/inventory/repository/git/pull.py +36 -0
  109. js7/api/joc/http/v_2_8_2/inventory/repository/git/push.py +36 -0
  110. js7/api/joc/http/v_2_8_2/inventory/repository/read.py +36 -0
  111. js7/api/joc/http/v_2_8_2/inventory/repository/store.py +36 -0
  112. js7/api/joc/http/v_2_8_2/inventory/repository/update.py +36 -0
  113. js7/api/joc/http/v_2_8_2/inventory/revalidate/folder.py +36 -0
  114. js7/api/joc/http/v_2_8_2/inventory/store.py +36 -0
  115. js7/api/joc/http/v_2_8_2/inventory/trash/delete/delete.py +36 -0
  116. js7/api/joc/http/v_2_8_2/inventory/trash/delete/folder.py +36 -0
  117. js7/api/joc/http/v_2_8_2/inventory/trash/restore.py +36 -0
  118. js7/api/joc/http/v_2_8_2/inventory/validate.py +42 -0
  119. js7/api/joc/http/v_2_8_2/joc/cluster/restart.py +36 -0
  120. js7/api/joc/http/v_2_8_2/joc/cluster/run.py +36 -0
  121. js7/api/joc/http/v_2_8_2/joc/cluster/switch_member.py +36 -0
  122. js7/api/joc/http/v_2_8_2/joc/license.py +28 -0
  123. js7/api/joc/http/v_2_8_2/joc/proxies/restart.py +36 -0
  124. js7/api/joc/http/v_2_8_2/joc/version.py +28 -0
  125. js7/api/joc/http/v_2_8_2/joc/versions.py +36 -0
  126. js7/api/joc/http/v_2_8_2/orders/add.py +33 -0
  127. js7/api/joc/http/v_2_8_2/orders/cancel.py +33 -0
  128. js7/api/joc/http/v_2_8_2/orders/confirm.py +36 -0
  129. js7/api/joc/http/v_2_8_2/orders/continue.py +36 -0
  130. js7/api/joc/http/v_2_8_2/orders/history.py +36 -0
  131. js7/api/joc/http/v_2_8_2/orders/orders.py +36 -0
  132. js7/api/joc/http/v_2_8_2/orders/remove_when_terminated.py +33 -0
  133. js7/api/joc/http/v_2_8_2/orders/resume.py +36 -0
  134. js7/api/joc/http/v_2_8_2/orders/suspend.py +36 -0
  135. js7/api/joc/http/v_2_8_2/settings/settings.py +28 -0
  136. js7/api/joc/http/v_2_8_2/settings/store.py +36 -0
  137. js7/api/joc/http/v_2_8_2/tasks/history.py +36 -0
  138. js7/api/joc/http/v_2_8_2/workflow/transition.py +36 -0
  139. js7/api/joc/http/v_2_8_2/workflow/workflow.py +36 -0
  140. js7/api/joc/http/v_2_8_2/workflows/resume.py +36 -0
  141. js7/api/joc/http/v_2_8_2/workflows/skip.py +36 -0
  142. js7/api/joc/http/v_2_8_2/workflows/stop.py +36 -0
  143. js7/api/joc/http/v_2_8_2/workflows/suspend.py +36 -0
  144. js7/api/joc/http/v_2_8_2/workflows/unskip.py +36 -0
  145. js7/api/joc/http/v_2_8_2/workflows/unstop.py +36 -0
  146. js7/api/joc/http/v_2_8_2/workflows/workflows.py +36 -0
  147. js7/api/joc/interface/dispatcher.py +76 -0
  148. js7/api/joc/interface/interface.py +8 -0
  149. js7/api/joc/interface/resolver.py +75 -0
  150. js7/client/action/agent/confirm_node_loss_agent_action.py +75 -0
  151. js7/client/action/agent/delete_subagent_action.py +77 -0
  152. js7/client/action/agent/delete_subagent_clusters_action.py +75 -0
  153. js7/client/action/agent/deploy_cluster_agents_action.py +75 -0
  154. js7/client/action/agent/deploy_standalone_agents_action.py +75 -0
  155. js7/client/action/agent/deploy_subagent_clusters_action.py +75 -0
  156. js7/client/action/agent/disable_standalone_agents_action.py +75 -0
  157. js7/client/action/agent/disable_subagents_action.py +75 -0
  158. js7/client/action/agent/enable_standalone_agents_action.py +75 -0
  159. js7/client/action/agent/enable_subagents_action.py +75 -0
  160. js7/client/action/agent/export_agents_action.py +101 -0
  161. js7/client/action/agent/get_agents_status_action.py +55 -0
  162. js7/client/action/agent/import_agents_action.py +139 -0
  163. js7/client/action/agent/remove_agent_action.py +79 -0
  164. js7/client/action/agent/reset_agents_action.py +79 -0
  165. js7/client/action/agent/reset_subagent_action.py +79 -0
  166. js7/client/action/agent/revoke_cluster_agents_action.py +75 -0
  167. js7/client/action/agent/revoke_standalone_agents_action.py +75 -0
  168. js7/client/action/agent/revoke_subagent_clusters_action.py +75 -0
  169. js7/client/action/agent/store_cluster_agents_action.py +99 -0
  170. js7/client/action/agent/store_standalone_agents_action.py +87 -0
  171. js7/client/action/agent/store_subagent_clusters_action.py +83 -0
  172. js7/client/action/agent/store_subagents_action.py +97 -0
  173. js7/client/action/agent/switchover_agent_action.py +75 -0
  174. js7/client/action/controller/appoint_nodes_controller_action.py +67 -0
  175. js7/client/action/controller/cancel_and_restart_controller_action.py +72 -0
  176. js7/client/action/controller/cancel_controller_action.py +71 -0
  177. js7/client/action/controller/confirm_cluster_node_loss_action.py +68 -0
  178. js7/client/action/controller/get_controller_components_action.py +41 -0
  179. js7/client/action/controller/get_controller_status_action.py +72 -0
  180. js7/client/action/controller/register_controller_action.py +93 -0
  181. js7/client/action/controller/restart_controller_action.py +72 -0
  182. js7/client/action/controller/switchover_controller_cluster_action.py +67 -0
  183. js7/client/action/controller/terminate_controller_action.py +72 -0
  184. js7/client/action/controller/test_controller_instance_action.py +65 -0
  185. js7/client/action/controller/unregister_controller_action.py +68 -0
  186. js7/client/action/daily_plan/cancel_orders_action.py +59 -0
  187. js7/client/action/daily_plan/copy_orders_action.py +108 -0
  188. js7/client/action/daily_plan/create_projections_action.py +24 -0
  189. js7/client/action/daily_plan/delete_orders_action.py +80 -0
  190. js7/client/action/daily_plan/delete_submissions_action.py +83 -0
  191. js7/client/action/daily_plan/generate_orders_action.py +121 -0
  192. js7/client/action/daily_plan/get_calendar_projections_action.py +59 -0
  193. js7/client/action/daily_plan/get_orders_action.py +70 -0
  194. js7/client/action/daily_plan/get_projection_dates_action.py +59 -0
  195. js7/client/action/daily_plan/modify_orders_action.py +130 -0
  196. js7/client/action/daily_plan/submit_orders_action.py +79 -0
  197. js7/client/action/helper/decrypt_action.py +82 -0
  198. js7/client/action/helper/encrypt_action.py +87 -0
  199. js7/client/action/iam/block_account_action.py +71 -0
  200. js7/client/action/iam/change_account_password_action.py +96 -0
  201. js7/client/action/iam/disable_accounts_action.py +75 -0
  202. js7/client/action/iam/enable_accounts_action.py +75 -0
  203. js7/client/action/iam/get_account_permissions_action.py +75 -0
  204. js7/client/action/iam/get_accounts_action.py +76 -0
  205. js7/client/action/iam/get_blocked_accounts_action.py +76 -0
  206. js7/client/action/iam/get_folder_permissions_action.py +112 -0
  207. js7/client/action/iam/get_identity_service_settings_action.py +70 -0
  208. js7/client/action/iam/get_identity_services_action.py +102 -0
  209. js7/client/action/iam/get_permissions_action.py +113 -0
  210. js7/client/action/iam/get_roles_action.py +57 -0
  211. js7/client/action/iam/remove_accounts_action.py +75 -0
  212. js7/client/action/iam/remove_folder_permissions_action.py +91 -0
  213. js7/client/action/iam/remove_identity_service_action.py +67 -0
  214. js7/client/action/iam/remove_permissions_action.py +88 -0
  215. js7/client/action/iam/remove_roles_action.py +75 -0
  216. js7/client/action/iam/rename_account_action.py +83 -0
  217. js7/client/action/iam/rename_folder_permissions_action.py +100 -0
  218. js7/client/action/iam/rename_identity_service_action.py +75 -0
  219. js7/client/action/iam/rename_permission_action.py +103 -0
  220. js7/client/action/iam/rename_role_action.py +83 -0
  221. js7/client/action/iam/reset_account_passwords_action.py +75 -0
  222. js7/client/action/iam/set_folder_permissions_action.py +96 -0
  223. js7/client/action/iam/set_permissions_action.py +91 -0
  224. js7/client/action/iam/store_account_action.py +69 -0
  225. js7/client/action/iam/store_identity_service_action.py +75 -0
  226. js7/client/action/iam/store_identity_service_settings_action.py +74 -0
  227. js7/client/action/iam/store_role_action.py +79 -0
  228. js7/client/action/iam/unblock_accounts_action.py +67 -0
  229. js7/client/action/inventory/deploy_configurations_action.py +138 -0
  230. js7/client/action/inventory/export_configurations_action.py +203 -0
  231. js7/client/action/inventory/export_folders_action.py +160 -0
  232. js7/client/action/inventory/get_change_dependencies_action.py +161 -0
  233. js7/client/action/inventory/get_changes_action.py +59 -0
  234. js7/client/action/inventory/get_git_credentials_action.py +29 -0
  235. js7/client/action/inventory/git_add_action.py +72 -0
  236. js7/client/action/inventory/git_checkout_action.py +88 -0
  237. js7/client/action/inventory/git_clone_action.py +84 -0
  238. js7/client/action/inventory/git_commit_action.py +80 -0
  239. js7/client/action/inventory/git_pull_action.py +72 -0
  240. js7/client/action/inventory/git_push_action.py +76 -0
  241. js7/client/action/inventory/import_configurations_action.py +153 -0
  242. js7/client/action/inventory/import_deploy_configurations_action.py +188 -0
  243. js7/client/action/inventory/read_from_local_repository_action.py +67 -0
  244. js7/client/action/inventory/recall_folder_action.py +89 -0
  245. js7/client/action/inventory/recall_released_configuration_action.py +75 -0
  246. js7/client/action/inventory/release_configuartions_action.py +89 -0
  247. js7/client/action/inventory/remove_configurations_action.py +77 -0
  248. js7/client/action/inventory/remove_configurations_from_trash_action.py +80 -0
  249. js7/client/action/inventory/remove_folder_action.py +67 -0
  250. js7/client/action/inventory/remove_folder_from_trash_action.py +69 -0
  251. js7/client/action/inventory/remove_git_credentials_action.py +53 -0
  252. js7/client/action/inventory/remove_repository_configuration_action.py +84 -0
  253. js7/client/action/inventory/restore_configuration_from_trash_action.py +84 -0
  254. js7/client/action/inventory/revalidate_folder_action.py +46 -0
  255. js7/client/action/inventory/revoke_configurations_action.py +86 -0
  256. js7/client/action/inventory/store_configuration_action.py +79 -0
  257. js7/client/action/inventory/store_git_credentials_action.py +99 -0
  258. js7/client/action/inventory/store_repository_configuration_action.py +124 -0
  259. js7/client/action/inventory/update_repository_configuration_action.py +85 -0
  260. js7/client/action/inventory/validate_configuration_action.py +58 -0
  261. js7/client/action/joc/get_components_versions_action.py +57 -0
  262. js7/client/action/joc/get_license_info_action.py +22 -0
  263. js7/client/action/joc/get_settings_action.py +19 -0
  264. js7/client/action/joc/get_version_action.py +17 -0
  265. js7/client/action/joc/restart_proxies_action.py +50 -0
  266. js7/client/action/joc/restart_service_action.py +74 -0
  267. js7/client/action/joc/run_service_action.py +74 -0
  268. js7/client/action/joc/store_settings_action.py +62 -0
  269. js7/client/action/joc/switch_over_action.py +89 -0
  270. js7/client/action/order/add_orders_action.py +115 -0
  271. js7/client/action/order/cancel_orders_action.py +93 -0
  272. js7/client/action/order/confirm_orders_action.py +86 -0
  273. js7/client/action/order/continue_orders_action.py +86 -0
  274. js7/client/action/order/get_order_history_action.py +84 -0
  275. js7/client/action/order/get_orders_action.py +83 -0
  276. js7/client/action/order/remove_terminated_orders_action.py +86 -0
  277. js7/client/action/order/resume_orders_action.py +102 -0
  278. js7/client/action/order/suspend_orders_action.py +97 -0
  279. js7/client/action/task/get_task_history_info_action.py +88 -0
  280. js7/client/action/workflow/get_workflow_versions_action.py +131 -0
  281. js7/client/action/workflow/resume_workflows_action.py +76 -0
  282. js7/client/action/workflow/set_workflow_version_as_current_action.py +86 -0
  283. js7/client/action/workflow/skip_job_instructions_action.py +83 -0
  284. js7/client/action/workflow/stop_job_instructions_action.py +83 -0
  285. js7/client/action/workflow/suspend_workflows_action.py +76 -0
  286. js7/client/action/workflow/unskip_job_instructions_action.py +83 -0
  287. js7/client/action/workflow/unstop_job_instructions_action.py +79 -0
  288. js7/client/auth/auth_provider.py +109 -0
  289. js7/client/auth/login.py +34 -0
  290. js7/client/auth/logout.py +22 -0
  291. js7/client/client.py +250 -0
  292. js7/client/context.py +40 -0
  293. js7/client/feature/agent/agent.py +26 -0
  294. js7/client/feature/agent/deploy.py +134 -0
  295. js7/client/feature/agent/manage.py +363 -0
  296. js7/client/feature/agent/operate.py +577 -0
  297. js7/client/feature/controller/controller.py +19 -0
  298. js7/client/feature/controller/manage.py +214 -0
  299. js7/client/feature/controller/operate.py +274 -0
  300. js7/client/feature/daily_plan/daily_plan.py +14 -0
  301. js7/client/feature/daily_plan/manage.py +179 -0
  302. js7/client/feature/daily_plan/operate.py +354 -0
  303. js7/client/feature/iam/iam.py +14 -0
  304. js7/client/feature/iam/manage.py +1311 -0
  305. js7/client/feature/inventory/inventory.py +13 -0
  306. js7/client/feature/inventory/manage.py +943 -0
  307. js7/client/feature/inventory/manage_repository.py +533 -0
  308. js7/client/feature/joc/joc.py +18 -0
  309. js7/client/feature/joc/manage.py +102 -0
  310. js7/client/feature/joc/operate.py +185 -0
  311. js7/client/feature/order/manage.py +79 -0
  312. js7/client/feature/order/operate.py +346 -0
  313. js7/client/feature/order/order.py +18 -0
  314. js7/client/feature/task/task.py +54 -0
  315. js7/client/feature/workflow/manage.py +54 -0
  316. js7/client/feature/workflow/operate.py +336 -0
  317. js7/client/feature/workflow/workflow.py +19 -0
  318. js7/java/lib/3rd-party/bcpg-jdk15to18-1.78.1.jar +0 -0
  319. js7/java/lib/3rd-party/bcpkix-jdk15to18-1.78.1.jar +0 -0
  320. js7/java/lib/3rd-party/bcprov-jdk15to18-1.78.1.jar +0 -0
  321. js7/java/lib/3rd-party/bcutil-jdk15to18-1.78.1.jar +0 -0
  322. js7/java/lib/3rd-party/commons-io-2.15.1.jar +0 -0
  323. js7/java/lib/3rd-party/commons-lang3-3.14.0.jar +0 -0
  324. js7/java/lib/3rd-party/jackson-core-2.14.2.jar +0 -0
  325. js7/java/lib/3rd-party/jackson-databind-2.14.2.jar +0 -0
  326. js7/java/lib/3rd-party/jackson-dataformat-xml-2.14.2.jar +0 -0
  327. js7/java/lib/3rd-party/jakarta.annotation-api-2.1.1.jar +0 -0
  328. js7/java/lib/3rd-party/javax.activation-api-1.2.0.jar +0 -0
  329. js7/java/lib/3rd-party/jaxb-api-2.4.0-b180830.0359.jar +0 -0
  330. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-api-2.23.1.jar +0 -0
  331. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-core-2.23.1.jar +0 -0
  332. js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-slf4j2-impl-2.23.1.jar +0 -0
  333. js7/java/lib/3rd-party/org.slf4j.slf4j-api-2.0.13.jar +0 -0
  334. js7/java/lib/3rd-party/stax2-api-4.2.1.jar +0 -0
  335. js7/java/lib/3rd-party/woodstox-core-6.5.0.jar +0 -0
  336. js7/java/lib/sos/sos-commons-encryption-2.7.3.jar +0 -0
  337. js7/java/lib/sos/sos-commons-exception-2.7.3.jar +0 -0
  338. js7/java/lib/sos/sos-commons-sign-2.7.3.jar +0 -0
  339. js7/java/lib/sos/sos-webservices-json-2.7.3.jar +0 -0
  340. js7/model/__init__.py +132 -0
  341. js7/model/configuration/auth_configuration.py +24 -0
  342. js7/model/configuration/client_configuration.py +6 -0
  343. js7/model/configuration/http_configuration.py +10 -0
  344. js7/model/error/http/joc_exceptions.py +151 -0
  345. js7/model/private/api/endpoint.py +30 -0
  346. js7/model/private/http/joc/joc_v_2_8_2.py +3666 -0
  347. js7/model/public/client/common/__init__.py +27 -0
  348. js7/model/public/client/common/accounts.py +21 -0
  349. js7/model/public/client/common/audit_log.py +8 -0
  350. js7/model/public/client/common/changes.py +18 -0
  351. js7/model/public/client/common/configurations.py +53 -0
  352. js7/model/public/client/common/cycle.py +12 -0
  353. js7/model/public/client/common/git_credentials.py +12 -0
  354. js7/model/public/client/common/identity_service.py +14 -0
  355. js7/model/public/client/common/schedule_time.py +50 -0
  356. js7/model/public/client/common/store_agents.py +96 -0
  357. js7/model/public/client/enum/__init__.py +19 -0
  358. js7/model/public/client/enum/object_types.py +48 -0
  359. js7/model/public/client/enum/operation_type.py +11 -0
  360. js7/model/public/client/enum/order_priority.py +9 -0
  361. js7/model/public/client/filter/__init__.py +35 -0
  362. js7/model/public/client/filter/daily_plan_order_filters.py +255 -0
  363. js7/model/public/client/filter/element/__init__.py +3 -0
  364. js7/model/public/client/filter/element/folder.py +6 -0
  365. js7/model/public/client/filter/element/workflow_id.py +10 -0
  366. js7/model/public/client/filter/export_filter.py +52 -0
  367. js7/model/public/client/filter/export_folders_filter.py +34 -0
  368. js7/model/public/client/filter/get_order_filter.py +59 -0
  369. js7/model/public/client/filter/order_history_filter.py +113 -0
  370. js7/model/public/client/filter/resume_order_filter.py +45 -0
  371. js7/model/public/client/filter/suspend_order_filter.py +44 -0
  372. js7/model/public/client/filter/tasks_filter.py +50 -0
  373. js7/model/public/client/input/__init__.py +2 -0
  374. js7/model/public/client/input/add_order.py +50 -0
  375. js7/service/http_service.py +206 -0
  376. js7/util/bytes_converter/bytes_to_archive_bytes.py +52 -0
  377. js7/util/bytes_converter/bytes_to_file.py +12 -0
  378. js7/util/bytes_converter/files_to_bytes.py +52 -0
  379. js7/util/bytes_converter/read_bytes_archive_files_to_bytes.py +69 -0
  380. js7/util/bytes_converter/sign_to_bytes.py +106 -0
  381. js7/util/check_matching_version.py +20 -0
  382. js7/util/detect_archive_type.py +37 -0
  383. js7/util/str_converter/order_id_to_order_name.py +5 -0
  384. js7/validator/http/joc_http_status_validator.py +155 -0
  385. js7_client_python-2.0.1.0.dist-info/LICENSE +674 -0
  386. js7_client_python-2.0.1.0.dist-info/METADATA +763 -0
  387. js7_client_python-2.0.1.0.dist-info/RECORD +389 -0
  388. js7_client_python-2.0.1.0.dist-info/WHEEL +5 -0
  389. js7_client_python-2.0.1.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,75 @@
1
+ from typing import List, Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ AccountNamesFilter as AccountNamesFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def reset_account_passwords_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ account_names: List[str],
20
+ audit_log: Optional[AuditLog]
21
+ ) -> bool:
22
+
23
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
24
+ request_data = _build_v_2_8_2_request(
25
+ identity_service_name=identity_service_name,
26
+ account_names=account_names,
27
+ audit_log=audit_log
28
+ )
29
+ else:
30
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
31
+
32
+ # Calls the dispatcher for the matching JOC version
33
+ result = context.joc_api.dispatch(endpoint_id="iam/accounts/resetpassword", call=EndpointCall(
34
+ http_service=context.http_service,
35
+ access_token=context.auth_provider.login(),
36
+ payload=request_data,
37
+ options=None,
38
+ ))
39
+
40
+ if isinstance(result, OK_V_2_8_2):
41
+ return bool(result.ok)
42
+
43
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
44
+
45
+ #---------------------#
46
+ # Build 2.8.2 request #
47
+ #---------------------#
48
+ def _build_v_2_8_2_request(
49
+ *,
50
+ identity_service_name: str,
51
+ account_names: List[str],
52
+ audit_log: Optional[AuditLog]
53
+ ) -> AccountNamesFilter_V_2_8_2:
54
+
55
+ # Validate: identity_service_name
56
+ if not identity_service_name:
57
+ raise ValueError("'identity_service_name' is required.")
58
+
59
+ # Validate: account_name
60
+ if not account_names:
61
+ raise ValueError("At least one account name in 'account_names' is required.")
62
+
63
+ # Build: audit_log
64
+ res_audit_log = AuditParams_V_2_8_2(
65
+ ticket_link=audit_log.ticket_link,
66
+ comment=audit_log.comment,
67
+ time_spent=audit_log.time_spent
68
+ ) if audit_log else None
69
+
70
+ # Result
71
+ return AccountNamesFilter_V_2_8_2(
72
+ identity_service_name=identity_service_name,
73
+ account_names=account_names,
74
+ audit_log=res_audit_log
75
+ )
@@ -0,0 +1,96 @@
1
+ from typing import List, Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.public.client.filter.element.folder import Folder
6
+ from ....model.private.api.endpoint import EndpointCall
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ AuditParams as AuditParams_V_2_8_2,
9
+ OK as OK_V_2_8_2,
10
+ Folders as Folders_V_2_8_2,
11
+ Folder as Folder_V_2_8_2
12
+ )
13
+
14
+ from ....util.check_matching_version import check_matching_version
15
+
16
+
17
+ def set_folder_permissions_action(
18
+ *,
19
+ context: Context,
20
+ identity_service_name: str,
21
+ role_name: str,
22
+ controller_id: str,
23
+ folders: List[Folder],
24
+ audit_log: Optional[AuditLog]
25
+ ) -> bool:
26
+
27
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
28
+ request_data = _build_v_2_8_2_request(
29
+ identity_service_name=identity_service_name,
30
+ role_name=role_name,
31
+ controller_id=controller_id,
32
+ folders=folders,
33
+ audit_log=audit_log
34
+ )
35
+ else:
36
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
37
+
38
+ # Calls the dispatcher for the matching JOC version
39
+ result = context.joc_api.dispatch(endpoint_id="iam/folders/store", call=EndpointCall(
40
+ http_service=context.http_service,
41
+ access_token=context.auth_provider.login(),
42
+ payload=request_data,
43
+ options=None,
44
+ ))
45
+
46
+ if isinstance(result, OK_V_2_8_2):
47
+ return bool(result.ok)
48
+
49
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
50
+
51
+ #---------------------#
52
+ # Build 2.8.2 request #
53
+ #---------------------#
54
+ def _build_v_2_8_2_request(
55
+ *,
56
+ identity_service_name: str,
57
+ role_name: str,
58
+ controller_id: str,
59
+ folders: List[Folder],
60
+ audit_log: Optional[AuditLog]
61
+ ) -> Folders_V_2_8_2:
62
+
63
+ # Validate: identity_service_name
64
+ if not identity_service_name:
65
+ raise ValueError("'identity_service_name' is required.")
66
+
67
+ # Validate: role_name
68
+ if not role_name:
69
+ raise ValueError("'role_name' is required.")
70
+
71
+ # Validate: controller_id
72
+ if not controller_id:
73
+ raise ValueError("'controller_id' is required.")
74
+
75
+ # Validate: folders
76
+ if not folders:
77
+ raise ValueError("At least one folder in 'folders' is required.")
78
+
79
+ # Build: audit_log
80
+ res_audit_log = AuditParams_V_2_8_2(
81
+ ticket_link=audit_log.ticket_link,
82
+ comment=audit_log.comment,
83
+ time_spent=audit_log.time_spent
84
+ ) if audit_log else None
85
+
86
+ # Result
87
+ return Folders_V_2_8_2(
88
+ identity_service_name=identity_service_name,
89
+ role_name=role_name,
90
+ controller_id=controller_id,
91
+ folders=[
92
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
93
+ for f in folders
94
+ ],
95
+ audit_log=res_audit_log
96
+ )
@@ -0,0 +1,91 @@
1
+ from typing import List, Optional, Tuple
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ Permissions as Permissions_V_2_8_2,
10
+ Permission as Permission_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def set_permissions_action(
17
+ *,
18
+ context: Context,
19
+ identity_service_name: str,
20
+ role_name: str,
21
+ controller_id: str,
22
+ permissions: List[Tuple[str, bool]],
23
+ audit_log: Optional[AuditLog]
24
+ ) -> bool:
25
+
26
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
27
+ request_data = _build_v_2_8_2_request(
28
+ identity_service_name=identity_service_name,
29
+ role_name=role_name,
30
+ controller_id=controller_id,
31
+ permissions=permissions,
32
+ audit_log=audit_log
33
+ )
34
+ else:
35
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
36
+
37
+ # Calls the dispatcher for the matching JOC version
38
+ result = context.joc_api.dispatch(endpoint_id="iam/permissions/store", call=EndpointCall(
39
+ http_service=context.http_service,
40
+ access_token=context.auth_provider.login(),
41
+ payload=request_data,
42
+ options=None,
43
+ ))
44
+
45
+ if isinstance(result, OK_V_2_8_2):
46
+ return bool(result.ok)
47
+
48
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
49
+
50
+ #---------------------#
51
+ # Build 2.8.2 request #
52
+ #---------------------#
53
+ def _build_v_2_8_2_request(
54
+ *,
55
+ identity_service_name: str,
56
+ role_name: str,
57
+ controller_id: str,
58
+ permissions: List[Tuple[str, bool]],
59
+ audit_log: Optional[AuditLog]
60
+ ) -> Permissions_V_2_8_2:
61
+
62
+ # Validate: identity_service_name
63
+ if not identity_service_name:
64
+ raise ValueError("'identity_service_name' is required.")
65
+
66
+ # Validate: role_name
67
+ if not role_name:
68
+ raise ValueError("'role_name' is required.")
69
+
70
+ # Validate: controller_id
71
+ if not controller_id:
72
+ raise ValueError("'controller_id' is required.")
73
+
74
+ # Build: audit_log
75
+ res_audit_log = AuditParams_V_2_8_2(
76
+ ticket_link=audit_log.ticket_link,
77
+ comment=audit_log.comment,
78
+ time_spent=audit_log.time_spent
79
+ ) if audit_log else None
80
+
81
+ # Result
82
+ return Permissions_V_2_8_2(
83
+ identity_service_name=identity_service_name,
84
+ role_name=role_name,
85
+ controller_id=controller_id,
86
+ permissions=[
87
+ Permission_V_2_8_2(permission_path=p, excluded=e)
88
+ for p, e in permissions
89
+ ],
90
+ audit_log=res_audit_log
91
+ )
@@ -0,0 +1,69 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.public.client.common.accounts import Account
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ Account as Account_V_2_8_2,
9
+ AuditParams as AuditParams_V_2_8_2,
10
+ OK as OK_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def store_account_action(
17
+ *,
18
+ context: Context,
19
+ account: Account,
20
+ audit_log: Optional[AuditLog]
21
+ ) -> bool:
22
+
23
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
24
+ request_data = _build_v_2_8_2_request(
25
+ account=account,
26
+ audit_log=audit_log
27
+ )
28
+ else:
29
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
30
+
31
+ # Calls the dispatcher for the matching JOC version
32
+ result = context.joc_api.dispatch(endpoint_id="iam/account/store", call=EndpointCall(
33
+ http_service=context.http_service,
34
+ access_token=context.auth_provider.login(),
35
+ payload=request_data,
36
+ options=None,
37
+ ))
38
+
39
+ if isinstance(result, OK_V_2_8_2):
40
+ return bool(result.ok)
41
+
42
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
43
+
44
+ #---------------------#
45
+ # Build 2.8.2 request #
46
+ #---------------------#
47
+ def _build_v_2_8_2_request(
48
+ *,
49
+ account: Account,
50
+ audit_log: Optional[AuditLog]
51
+ ) -> Account_V_2_8_2:
52
+
53
+ # Build: audit_log
54
+ res_audit_log = AuditParams_V_2_8_2(
55
+ ticket_link=audit_log.ticket_link,
56
+ comment=audit_log.comment,
57
+ time_spent=audit_log.time_spent
58
+ ) if audit_log else None
59
+
60
+ # Result
61
+ return Account_V_2_8_2(
62
+ account_name=account.account_name,
63
+ password=account.password,
64
+ disabled=account.disabled,
65
+ force_password_change=account.force_password_change,
66
+ identity_service_name=account.identity_service_name,
67
+ roles=account.roles,
68
+ audit_log=res_audit_log
69
+ )
@@ -0,0 +1,75 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.identity_service import IdentityService
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.private.api.endpoint import EndpointCall
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ AuditParams as AuditParams_V_2_8_2,
9
+ OK as OK_V_2_8_2,
10
+ IdentityService as IdentityService_V_2_8_2,
11
+ IdentityServiceType as IdentityServiceType_V_2_8_2,
12
+ ServiceAuthenticationScheme as ServiceAuthenticationScheme_V_2_8_2
13
+ )
14
+
15
+ from ....util.check_matching_version import check_matching_version
16
+
17
+
18
+ def store_identity_service_action(
19
+ *,
20
+ context: Context,
21
+ identity_service: IdentityService,
22
+ audit_log: Optional[AuditLog]
23
+ ) -> bool:
24
+
25
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
26
+ request_data = _build_v_2_8_2_request(
27
+ identity_service=identity_service,
28
+ audit_log=audit_log
29
+ )
30
+ else:
31
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
32
+
33
+ # Calls the dispatcher for the matching JOC version
34
+ result = context.joc_api.dispatch(endpoint_id="iam/identityservice/store", call=EndpointCall(
35
+ http_service=context.http_service,
36
+ access_token=context.auth_provider.login(),
37
+ payload=request_data,
38
+ options=None,
39
+ ))
40
+
41
+ if isinstance(result, OK_V_2_8_2):
42
+ return bool(result.ok)
43
+
44
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
45
+
46
+ #---------------------#
47
+ # Build 2.8.2 request #
48
+ #---------------------#
49
+ def _build_v_2_8_2_request(
50
+ *,
51
+ identity_service: IdentityService,
52
+ audit_log: Optional[AuditLog]
53
+ ) -> IdentityService_V_2_8_2:
54
+
55
+ # Build: audit_log
56
+ res_audit_log = AuditParams_V_2_8_2(
57
+ ticket_link=audit_log.ticket_link,
58
+ comment=audit_log.comment,
59
+ time_spent=audit_log.time_spent
60
+ ) if audit_log else None
61
+
62
+ # Result
63
+ return IdentityService_V_2_8_2(
64
+ identity_service_name=identity_service.identity_service_name,
65
+ # Raises ValueError() if invalid.
66
+ identity_service_type=IdentityServiceType_V_2_8_2(identity_service.identity_service_type),
67
+ # Raises ValueError() if invalid.
68
+ service_authentication_scheme=ServiceAuthenticationScheme_V_2_8_2(identity_service.service_authentication_scheme),
69
+ second_factor=identity_service.second_factor,
70
+ second_factor_identity_service_name=identity_service.second_factor_identity_service_name,
71
+ disabled=identity_service.disabled,
72
+ required=identity_service.required,
73
+ ordering=identity_service.ordering,
74
+ audit_log=res_audit_log
75
+ )
@@ -0,0 +1,74 @@
1
+ import json
2
+ from typing import Any, Dict, Literal
3
+
4
+ from ...context import Context
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ Configuration as Configuration_V_2_8_2,
8
+ ConfigurationType as ConfigurationType_V_2_8_2,
9
+ ConfigurationOk as ConfigurationOk_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def store_identity_service_settings_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ identity_service_type: Literal["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"],
20
+ settings: Dict[str, Any]
21
+ ) -> bool:
22
+
23
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
24
+ request_data = _build_v_2_8_2_request(
25
+ identity_service_name=identity_service_name,
26
+ identity_service_type=identity_service_type,
27
+ settings=settings
28
+ )
29
+ else:
30
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
31
+
32
+ # Calls the dispatcher for the matching JOC version
33
+ result = context.joc_api.dispatch(endpoint_id="configuration/save", call=EndpointCall(
34
+ http_service=context.http_service,
35
+ access_token=context.auth_provider.login(),
36
+ payload=request_data,
37
+ options=None,
38
+ ))
39
+
40
+ if isinstance(result, ConfigurationOk_V_2_8_2):
41
+ return bool(result.id)
42
+
43
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
44
+
45
+ #---------------------#
46
+ # Build 2.8.2 request #
47
+ #---------------------#
48
+ def _build_v_2_8_2_request(
49
+ *,
50
+ identity_service_name: str,
51
+ identity_service_type: Literal["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"],
52
+ settings: Dict[str, Any]
53
+ ) -> Configuration_V_2_8_2:
54
+
55
+ # Validate: identity_service_name
56
+ if not identity_service_name:
57
+ raise ValueError("'identity_service_name' is required.")
58
+
59
+ # Validate: identity_service_type
60
+ if identity_service_type not in ["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]:
61
+ raise ValueError(f"identity service type: {identity_service_type} is not supported.")
62
+
63
+ # Validate: settings
64
+ if not settings:
65
+ raise ValueError("'settings' is required.")
66
+
67
+ # Result
68
+ return Configuration_V_2_8_2(
69
+ id=0,
70
+ name=identity_service_name,
71
+ object_type=identity_service_type,
72
+ configuration_type=ConfigurationType_V_2_8_2.IAM,
73
+ configuration_item=json.dumps(settings),
74
+ )
@@ -0,0 +1,79 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ RoleStore as RoleStore_V_2_8_2,
8
+ AuditParams as AuditParams_V_2_8_2,
9
+ OK as OK_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def store_role_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ role_name: str,
20
+ ordering: Optional[int],
21
+ audit_log: Optional[AuditLog]
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(
26
+ identity_service_name=identity_service_name,
27
+ role_name=role_name,
28
+ ordering=ordering,
29
+ audit_log=audit_log
30
+ )
31
+ else:
32
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
33
+
34
+ # Calls the dispatcher for the matching JOC version
35
+ result = context.joc_api.dispatch(endpoint_id="iam/role/store", call=EndpointCall(
36
+ http_service=context.http_service,
37
+ access_token=context.auth_provider.login(),
38
+ payload=request_data,
39
+ options=None,
40
+ ))
41
+
42
+ if isinstance(result, OK_V_2_8_2):
43
+ return bool(result.ok)
44
+
45
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
46
+
47
+ #---------------------#
48
+ # Build 2.8.2 request #
49
+ #---------------------#
50
+ def _build_v_2_8_2_request(
51
+ *,
52
+ identity_service_name: str,
53
+ role_name: str,
54
+ ordering: Optional[int],
55
+ audit_log: Optional[AuditLog]
56
+ ) -> RoleStore_V_2_8_2:
57
+
58
+ # Validate: identity_service_name
59
+ if not identity_service_name:
60
+ raise ValueError("'identity_service_name' is required.")
61
+
62
+ # Validate: role_name
63
+ if not role_name:
64
+ raise ValueError("'role_name' is required.")
65
+
66
+ # Build: audit_log
67
+ res_audit_log = AuditParams_V_2_8_2(
68
+ ticket_link=audit_log.ticket_link,
69
+ comment=audit_log.comment,
70
+ time_spent=audit_log.time_spent
71
+ ) if audit_log else None
72
+
73
+ # Result
74
+ return RoleStore_V_2_8_2(
75
+ identity_service_name=identity_service_name,
76
+ role_name=role_name,
77
+ ordering=ordering,
78
+ audit_log=res_audit_log
79
+ )
@@ -0,0 +1,67 @@
1
+ from typing import List, Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.audit_log import AuditLog
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ BlockedAccountsDeleteFilter as BlockedAccountsDeleteFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def unblock_accounts_action(
16
+ *,
17
+ context: Context,
18
+ account_names: List[str],
19
+ audit_log: Optional[AuditLog]
20
+ ) -> bool:
21
+
22
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
23
+ request_data = _build_v_2_8_2_request(
24
+ account_names=account_names,
25
+ audit_log=audit_log
26
+ )
27
+ else:
28
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
29
+
30
+ # Calls the dispatcher for the matching JOC version
31
+ result = context.joc_api.dispatch(endpoint_id="iam/blockedAccounts/delete", call=EndpointCall(
32
+ http_service=context.http_service,
33
+ access_token=context.auth_provider.login(),
34
+ payload=request_data,
35
+ options=None,
36
+ ))
37
+
38
+ if isinstance(result, OK_V_2_8_2):
39
+ return bool(result.ok)
40
+
41
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
42
+
43
+ #---------------------#
44
+ # Build 2.8.2 request #
45
+ #---------------------#
46
+ def _build_v_2_8_2_request(
47
+ *,
48
+ account_names: List[str],
49
+ audit_log: Optional[AuditLog]
50
+ ) -> BlockedAccountsDeleteFilter_V_2_8_2:
51
+
52
+ # Validate: account_names
53
+ if not account_names:
54
+ raise ValueError("At least one account name in 'account_names' is required.")
55
+
56
+ # Build: audit_log
57
+ res_audit_log = AuditParams_V_2_8_2(
58
+ ticket_link=audit_log.ticket_link,
59
+ comment=audit_log.comment,
60
+ time_spent=audit_log.time_spent
61
+ ) if audit_log else None
62
+
63
+ # Result
64
+ return BlockedAccountsDeleteFilter_V_2_8_2(
65
+ account_names=account_names,
66
+ audit_log=res_audit_log
67
+ )