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,76 @@
1
+ from datetime import datetime
2
+ from typing import List, Optional
3
+
4
+ from ...context import Context
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.private.api.endpoint import EndpointCall
7
+ from ....model.public.client.common.accounts import BlockedAccount
8
+ from ....model.private.http.joc.joc_v_2_8_2 import (
9
+ BlockedAccountsFilter as BlockedAccountsFilter_V_2_8_2,
10
+ BlockedAccounts as BlockedAccounts_V_2_8_2,
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def get_blocked_accounts_action(
17
+ *,
18
+ context: Context,
19
+ filter_date_from: Optional[datetime],
20
+ filter_date_to: Optional[datetime],
21
+ filter_account_name: Optional[str]
22
+ ) -> List[BlockedAccount]:
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
+ timezone=context.client_config.timezone,
27
+ filter_date_from=filter_date_from,
28
+ filter_date_to=filter_date_to,
29
+ filter_account_name=filter_account_name
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/blockedAccounts", 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, BlockedAccounts_V_2_8_2):
43
+ return [
44
+ BlockedAccount(
45
+ account_name=a.account_name,
46
+ comment=a.comment,
47
+ blocked_since=a.since,
48
+ audit_log=AuditLog(
49
+ comment=a.audit_log.comment,
50
+ ticket_link=a.audit_log.ticket_link,
51
+ time_spent=a.audit_log.time_spent
52
+ ) if a.audit_log else None
53
+ )
54
+ for a in result.blocked_accounts
55
+ ] if result.blocked_accounts else []
56
+
57
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
58
+
59
+ #---------------------#
60
+ # Build 2.8.2 request #
61
+ #---------------------#
62
+ def _build_v_2_8_2_request(
63
+ *,
64
+ timezone: str,
65
+ filter_date_from: Optional[datetime],
66
+ filter_date_to: Optional[datetime],
67
+ filter_account_name: Optional[str]
68
+ ) -> BlockedAccountsFilter_V_2_8_2:
69
+
70
+ # Result
71
+ return BlockedAccountsFilter_V_2_8_2(
72
+ time_zone=timezone,
73
+ date_from=filter_date_from,
74
+ date_to=filter_date_to,
75
+ account_name=filter_account_name
76
+ )
@@ -0,0 +1,112 @@
1
+ from typing import List, Optional, Union
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.filter.element.folder import Folder
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ FolderListFilter as FolderListFilter_V_2_8_2,
8
+ Folders as Folders_V_2_8_2,
9
+ FolderFilter as FolderFilter_V_2_8_2,
10
+ FolderItem as FolderItem_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def get_folder_permissions_action(
17
+ *,
18
+ context: Context,
19
+ identity_service_name: str,
20
+ folder_name: Optional[str],
21
+ role_name: str,
22
+ controller_id: str
23
+ ) -> List[Folder]:
24
+
25
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
26
+ result = _build_v_2_8_2_request(
27
+ context=context,
28
+ identity_service_name=identity_service_name,
29
+ folder_name=folder_name,
30
+ role_name=role_name,
31
+ controller_id=controller_id
32
+ )
33
+
34
+ if isinstance(result, Folders_V_2_8_2):
35
+ return [
36
+ Folder(
37
+ folder_path=f.folder,
38
+ recursive=f.recursive or False
39
+ )
40
+ for f in result.folders
41
+ ]
42
+ else:
43
+ return [
44
+ Folder(
45
+ folder_path=result.folder.folder,
46
+ recursive=result.folder.recursive or False
47
+ )
48
+ ] if result.folder else []
49
+ else:
50
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
51
+
52
+ #---------------------#
53
+ # Build 2.8.2 request #
54
+ #---------------------#
55
+ def _build_v_2_8_2_request(
56
+ *,
57
+ context: Context,
58
+ identity_service_name: str,
59
+ folder_name: Optional[str],
60
+ role_name: str,
61
+ controller_id: str
62
+ ) -> Union[Folders_V_2_8_2, FolderItem_V_2_8_2]:
63
+
64
+ # Validate: identity_service_name
65
+ if not identity_service_name:
66
+ raise ValueError("'identity_service_name' is required.")
67
+
68
+ # Validate: role_name
69
+ if not role_name:
70
+ raise ValueError("'role_name' is required.")
71
+
72
+ if not folder_name:
73
+ # Build: folders_req
74
+ folders_req = FolderListFilter_V_2_8_2(
75
+ identity_service_name=identity_service_name,
76
+ role_name=role_name,
77
+ controller_id=controller_id
78
+ )
79
+
80
+ # Calls the dispatcher for the matching JOC version
81
+ folders_res = context.joc_api.dispatch(endpoint_id="iam/folders", call=EndpointCall(
82
+ http_service=context.http_service,
83
+ access_token=context.auth_provider.login(),
84
+ payload=folders_req,
85
+ options=None,
86
+ ))
87
+
88
+ if not isinstance(folders_res, Folders_V_2_8_2):
89
+ raise RuntimeError(f"Unexpected response type: {type(folders_res).__name__}")
90
+
91
+ return folders_res
92
+
93
+ # Build: folder_req
94
+ folder_req = FolderFilter_V_2_8_2(
95
+ identity_service_name=identity_service_name,
96
+ role_name=role_name,
97
+ controller_id=controller_id,
98
+ folder_name=folder_name
99
+ )
100
+
101
+ # Calls the dispatcher for the matching JOC version
102
+ folder_res = context.joc_api.dispatch(endpoint_id="iam/folder", call=EndpointCall(
103
+ http_service=context.http_service,
104
+ access_token=context.auth_provider.login(),
105
+ payload=folder_req,
106
+ options=None,
107
+ ))
108
+
109
+ if not isinstance(folder_res, FolderItem_V_2_8_2):
110
+ raise RuntimeError(f"Unexpected response type: {type(folder_res).__name__}")
111
+
112
+ return folder_res
@@ -0,0 +1,70 @@
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
+ Configuration200 as Configuration200_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def get_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
+ ) -> Dict[str, Any]:
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
+ identity_service_type=identity_service_type
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="configuration", 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, Configuration200_V_2_8_2):
39
+ # model_dump(mode="json")
40
+ if not (result.configuration and result.configuration.configuration_item):
41
+ return {}
42
+
43
+ return json.loads(result.configuration.configuration_item)
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
+ identity_service_type: Literal["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]
54
+ ) -> Configuration_V_2_8_2:
55
+
56
+ # Validate: identity_service_name
57
+ if not identity_service_name:
58
+ raise ValueError("'identity_service_name' is required.")
59
+
60
+ # Validate: identity_service_type
61
+ if identity_service_type not in ["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]:
62
+ raise ValueError(f"identity service type: {identity_service_type} is not supported.")
63
+
64
+ # Result
65
+ return Configuration_V_2_8_2(
66
+ id=0,
67
+ configuration_type=ConfigurationType_V_2_8_2.IAM,
68
+ name=identity_service_name,
69
+ object_type=identity_service_type
70
+ )
@@ -0,0 +1,102 @@
1
+ from typing import List, Optional, Union
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.identity_service import IdentityService
5
+ from ....model.private.api.endpoint import EndpointCall
6
+ from ....model.private.http.joc.joc_v_2_8_2 import (
7
+ IdentityServiceFilter as IdentityServiceFilter_V_2_8_2,
8
+ IdentityService as IdentityService_V_2_8_2,
9
+ IdentityServices as IdentityServices_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def get_identity_services_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: Optional[str]
19
+ ) -> List[IdentityService]:
20
+
21
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
22
+ result = _build_v_2_8_2_request(
23
+ context=context,
24
+ identity_service_name=identity_service_name
25
+ )
26
+
27
+ services: List[IdentityService] = []
28
+
29
+ if isinstance(result, IdentityServices_V_2_8_2):
30
+ if result.identity_service_items:
31
+ for s in result.identity_service_items:
32
+ services.append(IdentityService(
33
+ identity_service_name=s.identity_service_name,
34
+ identity_service_type=s.identity_service_type.value if s.identity_service_type else "UNKNOWN",
35
+ service_authentication_scheme=s.service_authentication_scheme.value,
36
+ second_factor=s.second_factor or False,
37
+ second_factor_identity_service_name=s.second_factor_identity_service_name,
38
+ disabled=s.disabled or False,
39
+ required=s.required or False,
40
+ ordering=s.ordering or 1
41
+ ))
42
+ else:
43
+ services.append(IdentityService(
44
+ identity_service_name=result.identity_service_name,
45
+ identity_service_type=result.identity_service_type.value if result.identity_service_type else "UNKNOWN",
46
+ service_authentication_scheme=result.service_authentication_scheme.value,
47
+ second_factor=result.second_factor or False,
48
+ second_factor_identity_service_name=result.second_factor_identity_service_name,
49
+ disabled=result.disabled or False,
50
+ required=result.required or False,
51
+ ordering=result.ordering or 1
52
+ ))
53
+
54
+ return services
55
+ else:
56
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
57
+
58
+ #---------------------#
59
+ # Build 2.8.2 request #
60
+ #---------------------#
61
+ def _build_v_2_8_2_request(
62
+ *,
63
+ context: Context,
64
+ identity_service_name: Optional[str]
65
+ ) -> Union[IdentityServices_V_2_8_2, IdentityService_V_2_8_2]:
66
+
67
+ if not identity_service_name:
68
+ # Build: services_req
69
+ services_req = IdentityServiceFilter_V_2_8_2(
70
+ identity_service_name=None,
71
+ )
72
+
73
+ # Calls the dispatcher for the matching JOC version
74
+ services_res = context.joc_api.dispatch(endpoint_id="iam/identityservices", call=EndpointCall(
75
+ http_service=context.http_service,
76
+ access_token=context.auth_provider.login(),
77
+ payload=services_req,
78
+ options=None,
79
+ ))
80
+
81
+ if not isinstance(services_res, IdentityServices_V_2_8_2):
82
+ raise RuntimeError(f"Unexpected response type: {type(services_res).__name__}")
83
+
84
+ return services_res
85
+
86
+ # Build: service_req
87
+ service_req = IdentityServiceFilter_V_2_8_2(
88
+ identity_service_name=identity_service_name
89
+ )
90
+
91
+ # Calls the dispatcher for the matching JOC version
92
+ service_res = context.joc_api.dispatch(endpoint_id="iam/identityservice", call=EndpointCall(
93
+ http_service=context.http_service,
94
+ access_token=context.auth_provider.login(),
95
+ payload=service_req,
96
+ options=None,
97
+ ))
98
+
99
+ if not isinstance(service_res, IdentityService_V_2_8_2):
100
+ raise RuntimeError(f"Unexpected response type: {type(service_res).__name__}")
101
+
102
+ return service_res
@@ -0,0 +1,113 @@
1
+ from typing import List, Optional, Tuple, Union
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.private.http.joc.joc_v_2_8_2 import (
6
+ PermissionListFilter as PermissionListFilter_V_2_8_2,
7
+ Permissions as Permissions_V_2_8_2,
8
+ PermissionItem as PermissionItem_V_2_8_2,
9
+ PermissionFilter as PermissionFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def get_permissions_action(
16
+ *,
17
+ context: Context,
18
+ permission_path: Optional[str],
19
+ identity_service_name: str,
20
+ role_name: str,
21
+ controller_id: Optional[str],
22
+ without_excluded: bool
23
+ ) -> List[Tuple[str, bool]]:
24
+
25
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
26
+ result = _build_v_2_8_2_request(
27
+ context=context,
28
+ permission_path=permission_path,
29
+ identity_service_name=identity_service_name,
30
+ role_name=role_name,
31
+ controller_id=controller_id
32
+ )
33
+
34
+ permissions: List[Tuple[str, bool]] = []
35
+
36
+ if isinstance(result, Permissions_V_2_8_2):
37
+ for p in result.permissions:
38
+ if p.excluded is True and without_excluded:
39
+ continue
40
+
41
+ permissions.append((p.permission_path, p.excluded or False))
42
+ else:
43
+ if result.permission:
44
+ if result.permission.excluded is True and without_excluded:
45
+ return permissions
46
+
47
+ permissions.append((result.permission.permission_path, result.permission.excluded or False))
48
+
49
+ return permissions
50
+ else:
51
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
52
+
53
+ #---------------------#
54
+ # Build 2.8.2 request #
55
+ #---------------------#
56
+ def _build_v_2_8_2_request(
57
+ *,
58
+ context: Context,
59
+ permission_path: Optional[str],
60
+ identity_service_name: str,
61
+ role_name: str,
62
+ controller_id: Optional[str]
63
+ ) -> Union[PermissionItem_V_2_8_2, Permissions_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: role_name
70
+ if not role_name:
71
+ raise ValueError("'role_name' is required.")
72
+
73
+ if not permission_path:
74
+ # Build: permissions_req
75
+ permissions_req = PermissionListFilter_V_2_8_2(
76
+ identity_service_name=identity_service_name,
77
+ role_name=role_name,
78
+ controller_id=controller_id
79
+ )
80
+
81
+ # Calls the dispatcher for the matching JOC version
82
+ permissions_res = context.joc_api.dispatch(endpoint_id="iam/permissions", call=EndpointCall(
83
+ http_service=context.http_service,
84
+ access_token=context.auth_provider.login(),
85
+ payload=permissions_req,
86
+ options=None,
87
+ ))
88
+
89
+ if not isinstance(permissions_res, Permissions_V_2_8_2):
90
+ raise RuntimeError(f"Unexpected response type: {type(permissions_res).__name__}")
91
+
92
+ return permissions_res
93
+
94
+ # Build: permission_req
95
+ permission_req = PermissionFilter_V_2_8_2(
96
+ identity_service_name=identity_service_name,
97
+ role_name=role_name,
98
+ controller_id=controller_id,
99
+ permission_path=permission_path
100
+ )
101
+
102
+ # Calls the dispatcher for the matching JOC version
103
+ permission_res = context.joc_api.dispatch(endpoint_id="iam/permission", call=EndpointCall(
104
+ http_service=context.http_service,
105
+ access_token=context.auth_provider.login(),
106
+ payload=permission_req,
107
+ options=None,
108
+ ))
109
+
110
+ if not isinstance(permission_res, PermissionItem_V_2_8_2):
111
+ raise RuntimeError(f"Unexpected response type: {type(permission_res).__name__}")
112
+
113
+ return permission_res
@@ -0,0 +1,57 @@
1
+ from typing import List
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.private.http.joc.joc_v_2_8_2 import (
6
+ RoleListFilter as RoleListFilter_V_2_8_2,
7
+ Roles as Roles_V_2_8_2
8
+ )
9
+
10
+ from ....util.check_matching_version import check_matching_version
11
+
12
+
13
+ def get_roles_action(
14
+ *,
15
+ context: Context,
16
+ identity_service_name: str
17
+ ) -> List[str]:
18
+
19
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
20
+ request_data = _build_v_2_8_2_request(
21
+ identity_service_name=identity_service_name
22
+ )
23
+ else:
24
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
25
+
26
+ # Calls the dispatcher for the matching JOC version
27
+ result = context.joc_api.dispatch(endpoint_id="iam/roles", call=EndpointCall(
28
+ http_service=context.http_service,
29
+ access_token=context.auth_provider.login(),
30
+ payload=request_data,
31
+ options=None,
32
+ ))
33
+
34
+ if isinstance(result, Roles_V_2_8_2):
35
+ return [
36
+ r.role_name
37
+ for r in result.roles
38
+ ] if result.roles else []
39
+
40
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
41
+
42
+ #---------------------#
43
+ # Build 2.8.2 request #
44
+ #---------------------#
45
+ def _build_v_2_8_2_request(
46
+ *,
47
+ identity_service_name: str
48
+ ) -> RoleListFilter_V_2_8_2:
49
+
50
+ # Validate: identity_service_name
51
+ if not identity_service_name:
52
+ raise ValueError("'identity_service_name' is required.")
53
+
54
+ # Result
55
+ return RoleListFilter_V_2_8_2(
56
+ identity_service_name=identity_service_name
57
+ )
@@ -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
+ AccountsFilter as AccountsFilter_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 remove_accounts_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/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
+ account_names: List[str],
52
+ audit_log: Optional[AuditLog]
53
+ ) -> AccountsFilter_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_names
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 AccountsFilter_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,91 @@
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
+ FoldersFilter as FoldersFilter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def remove_folder_permissions_action(
16
+ *,
17
+ context: Context,
18
+ identity_service_name: str,
19
+ role_name: str,
20
+ controller_id: str,
21
+ folder_names: 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
+ folder_names=folder_names,
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/folders/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
+ # Build 2.8.2 request #
51
+ #---------------------#
52
+ def _build_v_2_8_2_request(
53
+ *,
54
+ identity_service_name: str,
55
+ role_name: str,
56
+ controller_id: str,
57
+ folder_names: List[str],
58
+ audit_log: Optional[AuditLog]
59
+ ) -> FoldersFilter_V_2_8_2:
60
+
61
+ # Validate: identity_service_name
62
+ if not identity_service_name:
63
+ raise ValueError("'identity_service_name' is required.")
64
+
65
+ # Validate: role_name
66
+ if not role_name:
67
+ raise ValueError("'role_name' is required.")
68
+
69
+ # Validate: controller_id
70
+ if not controller_id:
71
+ raise ValueError("'controller_id' is required.")
72
+
73
+ # Validate: folder_names
74
+ if not folder_names:
75
+ raise ValueError("At least one folder name in 'folder_names' is required.")
76
+
77
+ # Build: audit_log
78
+ res_audit_log = AuditParams_V_2_8_2(
79
+ ticket_link=audit_log.ticket_link,
80
+ comment=audit_log.comment,
81
+ time_spent=audit_log.time_spent
82
+ ) if audit_log else None
83
+
84
+ # Result
85
+ return FoldersFilter_V_2_8_2(
86
+ identity_service_name=identity_service_name,
87
+ role_name=role_name,
88
+ controller_id=controller_id,
89
+ folder_names=folder_names,
90
+ audit_log=res_audit_log
91
+ )