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,67 @@
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
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ IdentityServiceFilter as IdentityServiceFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def remove_identity_service_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: 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
+ identity_service_name=identity_service_name,
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/identityservice/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
+ identity_service_name: str,
49
+ audit_log: Optional[AuditLog]
50
+ ) -> IdentityServiceFilter_V_2_8_2:
51
+
52
+ # Validate: identity_service_name
53
+ if not identity_service_name:
54
+ raise ValueError("'identity_service_name' 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 IdentityServiceFilter_V_2_8_2(
65
+ identity_service_name=identity_service_name,
66
+ audit_log=res_audit_log
67
+ )
@@ -0,0 +1,88 @@
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
+ PermissionsFilter as PermissionsFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def remove_permissions_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ role_name: str,
20
+ controller_id: Optional[str],
21
+ permission_paths: List[str],
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_name=identity_service_name,
28
+ role_name=role_name,
29
+ controller_id=controller_id,
30
+ permission_paths=permission_paths,
31
+ audit_log=audit_log,
32
+ )
33
+ else:
34
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
35
+
36
+ # Calls the dispatcher for the matching JOC version
37
+ result = context.joc_api.dispatch(endpoint_id="iam/permissions/delete", call=EndpointCall(
38
+ http_service=context.http_service,
39
+ access_token=context.auth_provider.login(),
40
+ payload=request_data,
41
+ options=None,
42
+ ))
43
+
44
+ if isinstance(result, OK_V_2_8_2):
45
+ return bool(result.ok)
46
+
47
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
48
+
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: Optional[str],
58
+ permission_paths: List[str],
59
+ audit_log: Optional[AuditLog]
60
+ ) -> PermissionsFilter_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: permission_paths
71
+ if not permission_paths:
72
+ raise ValueError("At least one permission path in 'permission_paths' 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 PermissionsFilter_V_2_8_2(
83
+ identity_service_name=identity_service_name,
84
+ role_name=role_name,
85
+ controller_id=controller_id,
86
+ permission_paths=permission_paths,
87
+ audit_log=res_audit_log
88
+ )
@@ -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
+ RolesFilter as RolesFilter_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def remove_roles_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ role_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
+ role_names=role_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/roles/delete", 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
+ role_names: List[str],
52
+ audit_log: Optional[AuditLog]
53
+ ) -> RolesFilter_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: role_names
60
+ if not role_names:
61
+ raise ValueError("At least one role name in 'role_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 RolesFilter_2_8_2(
72
+ identity_service_name=identity_service_name,
73
+ role_names=role_names,
74
+ audit_log=res_audit_log
75
+ )
@@ -0,0 +1,83 @@
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
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ AccountRename as AccountRename_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def rename_account_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ account_name: str,
20
+ new_account_name: str,
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
+ account_name=account_name,
28
+ new_account_name=new_account_name,
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/account/rename", 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
+ account_name: str,
54
+ new_account_name: str,
55
+ audit_log: Optional[AuditLog]
56
+ ) -> AccountRename_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: account_name
63
+ if not account_name:
64
+ raise ValueError("'account_name' is required.")
65
+
66
+ # Validate: new_account_name
67
+ if not new_account_name:
68
+ raise ValueError("'new_account_name' is required.")
69
+
70
+ # Build: audit_log
71
+ res_audit_log = AuditParams_V_2_8_2(
72
+ ticket_link=audit_log.ticket_link,
73
+ comment=audit_log.comment,
74
+ time_spent=audit_log.time_spent
75
+ ) if audit_log else None
76
+
77
+ # Result
78
+ return AccountRename_V_2_8_2(
79
+ identity_service_name=identity_service_name,
80
+ account_old_name=account_name,
81
+ account_new_name=new_account_name,
82
+ audit_log=res_audit_log
83
+ )
@@ -0,0 +1,100 @@
1
+ from typing import Optional
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.filter.element.folder import Folder
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
+ FolderRename as FolderRename_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 rename_folder_permissions_action(
18
+ *,
19
+ context: Context,
20
+ identity_service_name: str,
21
+ folder_name: str,
22
+ new_folder: Folder,
23
+ controller_id: str,
24
+ role_name: str,
25
+ audit_log: Optional[AuditLog]
26
+ ) -> bool:
27
+
28
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
29
+ request_data = _build_v_2_8_2_request(
30
+ identity_service_name=identity_service_name,
31
+ folder_name=folder_name,
32
+ new_folder=new_folder,
33
+ controller_id=controller_id,
34
+ role_name=role_name,
35
+ audit_log=audit_log
36
+ )
37
+ else:
38
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
39
+
40
+ # Calls the dispatcher for the matching JOC version
41
+ result = context.joc_api.dispatch(endpoint_id="iam/folder/rename", call=EndpointCall(
42
+ http_service=context.http_service,
43
+ access_token=context.auth_provider.login(),
44
+ payload=request_data,
45
+ options=None,
46
+ ))
47
+
48
+ if isinstance(result, OK_V_2_8_2):
49
+ return bool(result.ok)
50
+
51
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
52
+
53
+ #---------------------#
54
+ # Build 2.8.2 request #
55
+ #---------------------#
56
+ def _build_v_2_8_2_request(
57
+ *,
58
+ identity_service_name: str,
59
+ folder_name: str,
60
+ new_folder: Folder,
61
+ controller_id: str,
62
+ role_name: str,
63
+ audit_log: Optional[AuditLog]
64
+ ) -> FolderRename_V_2_8_2:
65
+
66
+ # Validate: identity_service_name
67
+ if not identity_service_name:
68
+ raise ValueError("'identity_service_name' is required.")
69
+
70
+ # Validate: folder_name
71
+ if not folder_name:
72
+ raise ValueError("'folder_name' is required.")
73
+
74
+ # Validate: controller_id
75
+ if not controller_id:
76
+ raise ValueError("'controller_id' is required.")
77
+
78
+ # Validate: role_name
79
+ if not role_name:
80
+ raise ValueError("'role_name' is required.")
81
+
82
+ # Build: audit_log
83
+ res_audit_log = AuditParams_V_2_8_2(
84
+ ticket_link=audit_log.ticket_link,
85
+ comment=audit_log.comment,
86
+ time_spent=audit_log.time_spent
87
+ ) if audit_log else None
88
+
89
+ # Result
90
+ return FolderRename_V_2_8_2(
91
+ identity_service_name=identity_service_name,
92
+ old_folder_name=folder_name,
93
+ new_folder=Folder_V_2_8_2(
94
+ folder=new_folder.folder_path,
95
+ recursive=new_folder.recursive
96
+ ),
97
+ controller_id=controller_id,
98
+ role_name=role_name,
99
+ audit_log=res_audit_log
100
+ )
@@ -0,0 +1,75 @@
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
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ IdentityServiceRename as IdentityServiceRename_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def rename_identity_service_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ new_identity_service_name: 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
+ new_identity_service_name=new_identity_service_name,
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/identityservice/rename", 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
+ new_identity_service_name: str,
52
+ audit_log: Optional[AuditLog]
53
+ ) -> IdentityServiceRename_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: new_identity_service_name
60
+ if not new_identity_service_name:
61
+ raise ValueError("'new_identity_service_name' 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 IdentityServiceRename_V_2_8_2(
72
+ identity_service_old_name=identity_service_name,
73
+ identity_service_new_name=new_identity_service_name,
74
+ audit_log=res_audit_log
75
+ )
@@ -0,0 +1,103 @@
1
+ from typing import 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
+ PermissionRename as PermissionRename_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 rename_permission_action(
17
+ *,
18
+ context: Context,
19
+ identity_service_name: str,
20
+ permission_path: str,
21
+ new_permission: Tuple[str, bool],
22
+ role_name: str,
23
+ controller_id: str,
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
+ permission_path=permission_path,
31
+ new_permission=new_permission,
32
+ role_name=role_name,
33
+ controller_id=controller_id,
34
+ audit_log=audit_log
35
+ )
36
+ else:
37
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
38
+
39
+ # Calls the dispatcher for the matching JOC version
40
+ result = context.joc_api.dispatch(endpoint_id="iam/permission/rename", call=EndpointCall(
41
+ http_service=context.http_service,
42
+ access_token=context.auth_provider.login(),
43
+ payload=request_data,
44
+ options=None,
45
+ ))
46
+
47
+ if isinstance(result, OK_V_2_8_2):
48
+ return bool(result.ok)
49
+
50
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
51
+
52
+ #---------------------#
53
+ # Build 2.8.2 request #
54
+ #---------------------#
55
+ def _build_v_2_8_2_request(
56
+ *,
57
+ identity_service_name: str,
58
+ permission_path: str,
59
+ new_permission: Tuple[str, bool],
60
+ role_name: str,
61
+ controller_id: str,
62
+ audit_log: Optional[AuditLog]
63
+ ) -> PermissionRename_V_2_8_2:
64
+
65
+ # Validate: identity_service_name
66
+ if not identity_service_name:
67
+ raise ValueError("'identity_service_name' is required.")
68
+
69
+ # Validate: permission_path
70
+ if not permission_path:
71
+ raise ValueError("'permission_path' is required.")
72
+
73
+ # Validate: new_permission
74
+ if not new_permission:
75
+ raise ValueError("'new_permission' is required.")
76
+
77
+ # Validate: role_name
78
+ if not role_name:
79
+ raise ValueError("'role_name' is required.")
80
+
81
+ # Validate: controller_id
82
+ if not controller_id:
83
+ raise ValueError("'controller_id' is required.")
84
+
85
+ # Build: audit_log
86
+ res_audit_log = AuditParams_V_2_8_2(
87
+ ticket_link=audit_log.ticket_link,
88
+ comment=audit_log.comment,
89
+ time_spent=audit_log.time_spent
90
+ ) if audit_log else None
91
+
92
+ # Result
93
+ return PermissionRename_V_2_8_2(
94
+ identity_service_name=identity_service_name,
95
+ old_permission_path=permission_path,
96
+ new_permission=Permission_V_2_8_2(
97
+ permission_path=new_permission[0],
98
+ excluded=new_permission[1]
99
+ ),
100
+ role_name=role_name,
101
+ controller_id=controller_id,
102
+ audit_log=res_audit_log
103
+ )
@@ -0,0 +1,83 @@
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
+ AuditParams as AuditParams_V_2_8_2,
8
+ OK as OK_V_2_8_2,
9
+ RoleRename as RoleRename_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def rename_role_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ role_name: str,
20
+ new_role_name: str,
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
+ new_role_name=new_role_name,
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/rename", 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
+ new_role_name: str,
55
+ audit_log: Optional[AuditLog]
56
+ ) -> RoleRename_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
+ # Validate: new_role_name
67
+ if not new_role_name:
68
+ raise ValueError("'new_role_name' is required.")
69
+
70
+ # Build: audit_log
71
+ res_audit_log = AuditParams_V_2_8_2(
72
+ ticket_link=audit_log.ticket_link,
73
+ comment=audit_log.comment,
74
+ time_spent=audit_log.time_spent
75
+ ) if audit_log else None
76
+
77
+ # Result
78
+ return RoleRename_V_2_8_2(
79
+ identity_service_name=identity_service_name,
80
+ role_old_name=role_name,
81
+ role_new_name=new_role_name,
82
+ audit_log=res_audit_log
83
+ )