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,93 @@
1
+ from typing import Literal, 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
+ RegisterParameters as RegisterParameters_V_2_8_2,
10
+ RegisterParameter as RegisterParameter_V_2_8_2,
11
+ ControllerRole as ControllerRole_V_2_8_2
12
+ )
13
+
14
+ from ....util.check_matching_version import check_matching_version
15
+
16
+
17
+ def register_controller_action(
18
+ *,
19
+ context: Context,
20
+ controller_id: Optional[str],
21
+ url: str,
22
+ cluster_url: Optional[str],
23
+ role: Literal["STANDALONE", "PRIMARY", "BACKUP"],
24
+ title: Optional[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
+ controller_id=controller_id,
31
+ url=url,
32
+ cluster_url=cluster_url,
33
+ role=role,
34
+ title=title,
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="controller/register", 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
+ controller_id: Optional[str],
59
+ url: str,
60
+ cluster_url: Optional[str],
61
+ role: Literal["STANDALONE", "PRIMARY", "BACKUP"],
62
+ title: Optional[str],
63
+ audit_log: Optional[AuditLog]
64
+ ) -> RegisterParameters_V_2_8_2:
65
+
66
+ # Validate: url
67
+ if not url:
68
+ raise ValueError("'url' is required.")
69
+
70
+ # Validate: role
71
+ if role not in ["STANDALONE", "PRIMARY", "BACKUP"]:
72
+ raise ValueError(f"Invalid 'role': {role}.")
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 RegisterParameters_V_2_8_2(
83
+ controller_id=controller_id,
84
+ controllers=[
85
+ RegisterParameter_V_2_8_2(
86
+ url=url,
87
+ cluster_url=cluster_url,
88
+ role=ControllerRole_V_2_8_2(role), # Raises ValueError() if invalid.
89
+ title=title,
90
+ )
91
+ ],
92
+ audit_log=res_audit_log
93
+ )
@@ -0,0 +1,72 @@
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
+ URLParameter as URLParameter__V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def restart_controller_action(
16
+ *,
17
+ context: Context,
18
+ controller_id: str,
19
+ url: Optional[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
+ controller_id=controller_id,
26
+ url=url,
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="controller/restart", 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
+ controller_id: str,
51
+ url: Optional[str],
52
+ audit_log: Optional[AuditLog]
53
+ ) -> URLParameter__V_2_8_2:
54
+
55
+ # Validates controller id
56
+ if not controller_id:
57
+ raise ValueError("'controller_id' is required.")
58
+
59
+ # Build: Audit Log
60
+ res_audit_log = AuditParams_V_2_8_2(
61
+ ticket_link=audit_log.ticket_link,
62
+ comment=audit_log.comment,
63
+ time_spent=audit_log.time_spent
64
+ ) if audit_log else None
65
+
66
+ # Result
67
+ return URLParameter__V_2_8_2(
68
+ controller_id=controller_id,
69
+ url=url,
70
+ audit_log=res_audit_log,
71
+ with_switchover=False
72
+ )
@@ -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
+ URLParameter as URLParameter__V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def switchover_controller_cluster_action(
16
+ *,
17
+ context: Context,
18
+ controller_id: 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
+ controller_id=controller_id,
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="controller/cluster/switchover", 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
+ controller_id: str,
49
+ audit_log: Optional[AuditLog]
50
+ ) -> URLParameter__V_2_8_2:
51
+
52
+ # Validates controller id
53
+ if not controller_id:
54
+ raise ValueError("'controller_id' 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 URLParameter__V_2_8_2(
65
+ controller_id=controller_id,
66
+ audit_log=res_audit_log
67
+ )
@@ -0,0 +1,72 @@
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
+ URLParameter as URLParameter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def terminate_controller_action(
16
+ *,
17
+ context: Context,
18
+ controller_id: str,
19
+ url: Optional[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
+ controller_id=controller_id,
26
+ url=url,
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="controller/terminate", 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
+ controller_id: str,
51
+ url: Optional[str],
52
+ audit_log: Optional[AuditLog]
53
+ ) -> URLParameter_V_2_8_2:
54
+
55
+ # Validates controller id
56
+ if not controller_id:
57
+ raise ValueError("'controller_id' is required.")
58
+
59
+ # Build: Audit Log
60
+ res_audit_log = AuditParams_V_2_8_2(
61
+ ticket_link=audit_log.ticket_link,
62
+ comment=audit_log.comment,
63
+ time_spent=audit_log.time_spent
64
+ ) if audit_log else None
65
+
66
+ # Result
67
+ return URLParameter_V_2_8_2(
68
+ controller_id=controller_id,
69
+ url=url,
70
+ audit_log=res_audit_log,
71
+ with_switchover=False
72
+ )
@@ -0,0 +1,65 @@
1
+ from typing import Optional
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
+ TestConnect as TestConnect_V_2_8_2,
7
+ JobScheduler200 as JobScheduler200_V_2_8_2
8
+ )
9
+
10
+ from ....util.check_matching_version import check_matching_version
11
+
12
+
13
+ def test_controller_instance_action(
14
+ *,
15
+ context: Context,
16
+ controller_id: Optional[str],
17
+ url: str
18
+ ) -> bool:
19
+
20
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
21
+ request_data = _build_v_2_8_2_request(
22
+ controller_id=controller_id,
23
+ url=url
24
+ )
25
+ else:
26
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
27
+
28
+ # Calls the dispatcher for the matching JOC version
29
+ result = context.joc_api.dispatch(endpoint_id="controller/test", call=EndpointCall(
30
+ http_service=context.http_service,
31
+ access_token=context.auth_provider.login(),
32
+ payload=request_data,
33
+ options=None,
34
+ ))
35
+
36
+ if isinstance(result, JobScheduler200_V_2_8_2):
37
+ if not (
38
+ result.controller
39
+ and result.controller.connection_state
40
+ and result.controller.connection_state.severity != 0
41
+ ):
42
+ return False
43
+
44
+ return True
45
+
46
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
47
+
48
+ #---------------------#
49
+ # Build 2.8.2 request #
50
+ #---------------------#
51
+ def _build_v_2_8_2_request(
52
+ *,
53
+ controller_id: Optional[str],
54
+ url: str
55
+ ) -> TestConnect_V_2_8_2:
56
+
57
+ # Validates controller id
58
+ if not url:
59
+ raise ValueError("'url' is required.")
60
+
61
+ # Result
62
+ return TestConnect_V_2_8_2(
63
+ controller_id=controller_id,
64
+ url=url
65
+ )
@@ -0,0 +1,68 @@
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
+ URLParameter as URLParameter_V_2_8_2
10
+ )
11
+
12
+ from ....util.check_matching_version import check_matching_version
13
+
14
+
15
+ def unregister_controller_action(
16
+ *,
17
+ context: Context,
18
+ controller_id: 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
+ controller_id=controller_id,
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="controller/unregister", 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
+ controller_id: str,
49
+ audit_log: Optional[AuditLog]
50
+ ) -> URLParameter_V_2_8_2:
51
+
52
+ # Validates controller id
53
+ if not controller_id:
54
+ raise ValueError("'controller_id' 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 URLParameter_V_2_8_2(
65
+ controller_id=controller_id,
66
+ audit_log=res_audit_log,
67
+ with_switchover=False
68
+ )
@@ -0,0 +1,59 @@
1
+ from ...context import Context
2
+ from ....model.private.api.endpoint import EndpointCall
3
+ from ....model.public.client.filter.daily_plan_order_filters import DailyPlanCancelOrdersFilter
4
+ from ....model.private.http.joc.joc_v_2_8_2 import (
5
+ Folder as Folder_V_2_8_2,
6
+ DailyPlanCancelOrders as DailyPlanCancelOrders_V_2_8_2,
7
+ OK as OK_V_2_8_2
8
+ )
9
+
10
+ from ....util.check_matching_version import check_matching_version
11
+
12
+
13
+ def cancel_orders_action(
14
+ *,
15
+ context: Context,
16
+ filter: DailyPlanCancelOrdersFilter
17
+ ) -> bool:
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(filter)
21
+ else:
22
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
23
+
24
+ # Calls the dispatcher for the matching JOC version
25
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/cancel", call=EndpointCall(
26
+ http_service=context.http_service,
27
+ access_token=context.auth_provider.login(),
28
+ payload=request_data,
29
+ options=None
30
+ ))
31
+
32
+ if isinstance(result, OK_V_2_8_2):
33
+ return bool(result.ok)
34
+
35
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
36
+
37
+ #---------------------#
38
+ # Build 2.8.2 request #
39
+ #---------------------#
40
+ def _build_v_2_8_2_request(filter: DailyPlanCancelOrdersFilter) -> DailyPlanCancelOrders_V_2_8_2:
41
+ # Result
42
+ return DailyPlanCancelOrders_V_2_8_2(
43
+ daily_plan_date_from=filter.date_from,
44
+ daily_plan_date_to=filter.date_to,
45
+ controller_ids=filter.controller_ids,
46
+ order_ids=filter.order_ids,
47
+ workflow_paths=filter.workflow_paths,
48
+ schedule_paths=filter.schedule_paths,
49
+
50
+ schedule_folders=[
51
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
52
+ for f in filter.schedule_folders
53
+ ] if filter.schedule_folders else None,
54
+
55
+ workflow_folders=[
56
+ Folder_V_2_8_2(folder=f.folder_path, recursive=f.recursive)
57
+ for f in filter.workflow_folders
58
+ ] if filter.workflow_folders else None
59
+ )
@@ -0,0 +1,108 @@
1
+ from typing import List, Optional, Tuple
2
+
3
+ from ...context import Context
4
+ from ....model.public.client.common.cycle import Cycle
5
+ from ....model.public.client.common.audit_log import AuditLog
6
+ from ....model.public.client.common.schedule_time import ScheduleTime
7
+ from ....model.private.api.endpoint import EndpointCall
8
+ from ....model.private.http.joc.joc_v_2_8_2 import (
9
+ DailyPlanCopyOrder as DailyPlanCopyOrder_V_2_8_2,
10
+ Cycle as Cycle_V_2_8_2,
11
+ AuditParams as AuditParams_V_2_8_2,
12
+ OrderIDMap200 as OrderIDMap200_V_2_8_2
13
+ )
14
+
15
+ from ....util.check_matching_version import check_matching_version
16
+
17
+
18
+ def copy_orders_action(
19
+ *,
20
+ context: Context,
21
+ controller_id: str,
22
+ order_ids: List[str],
23
+ scheduled_for: Optional[ScheduleTime],
24
+ cycle: Optional[Cycle],
25
+ force_job_admission: bool,
26
+ sticky_daily_plan_date: bool,
27
+ audit_log: Optional[AuditLog]
28
+ ) -> List[Tuple[str, str]]:
29
+
30
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
31
+ request_data = _build_v_2_8_2_request(
32
+ timezone=context.client_config.timezone,
33
+ controller_id=controller_id,
34
+ order_ids=order_ids,
35
+ scheduled_for=scheduled_for,
36
+ cycle=cycle,
37
+ force_job_admission=force_job_admission,
38
+ sticky_daily_plan_date=sticky_daily_plan_date,
39
+ audit_log=audit_log
40
+ )
41
+ else:
42
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
43
+
44
+ # Calls the dispatcher for the matching JOC version
45
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/orders/copy", call=EndpointCall(
46
+ http_service=context.http_service,
47
+ access_token=context.auth_provider.login(),
48
+ payload=request_data,
49
+ options=None
50
+ ))
51
+
52
+ if isinstance(result, OrderIDMap200_V_2_8_2):
53
+ return [
54
+ (old_id, new_id)
55
+ for old_id, new_id in result.order_ids
56
+ ] if result.order_ids else []
57
+
58
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
59
+
60
+ #---------------------#
61
+ # Build 2.8.2 request #
62
+ #---------------------#
63
+ def _build_v_2_8_2_request(
64
+ *,
65
+ timezone: str,
66
+ controller_id: str,
67
+ order_ids: List[str],
68
+ scheduled_for: Optional[ScheduleTime],
69
+ cycle: Optional[Cycle],
70
+ force_job_admission: bool,
71
+ sticky_daily_plan_date: bool,
72
+ audit_log: Optional[AuditLog]
73
+ ) -> DailyPlanCopyOrder_V_2_8_2:
74
+
75
+ # Validate: timezone
76
+ if not timezone:
77
+ raise ValueError("'timezone' is required in client config.")
78
+
79
+ # Validate: controller_id
80
+ if not controller_id:
81
+ raise ValueError("'controller_id' is required.")
82
+
83
+ # Validate: order_ids
84
+ if not order_ids:
85
+ raise ValueError("At least one order id in 'order_ids' is required.")
86
+
87
+ # Build: audit_log
88
+ res_audit_log = AuditParams_V_2_8_2(
89
+ ticket_link=audit_log.ticket_link,
90
+ comment=audit_log.comment,
91
+ time_spent=audit_log.time_spent
92
+ ) if audit_log else None
93
+
94
+ # Result
95
+ return DailyPlanCopyOrder_V_2_8_2(
96
+ time_zone=timezone,
97
+ controller_id=controller_id,
98
+ order_ids=order_ids,
99
+ scheduled_for=scheduled_for.value if scheduled_for else None,
100
+ cycle=Cycle_V_2_8_2(
101
+ begin=str(cycle.begin),
102
+ end=str(cycle.end),
103
+ repeat=str(cycle.repeat)
104
+ ) if cycle else None,
105
+ force_job_admission=force_job_admission,
106
+ stick_daily_plan_date=sticky_daily_plan_date,
107
+ audit_log=res_audit_log
108
+ )
@@ -0,0 +1,24 @@
1
+ from ...context import Context
2
+ from ....model.private.api.endpoint import EndpointCall
3
+ from ....model.private.http.joc.joc_v_2_8_2 import (
4
+ OK as OK_V_2_8_2
5
+ )
6
+
7
+
8
+ def create_projections_action(
9
+ *,
10
+ context: Context
11
+ ) -> bool:
12
+
13
+ # Calls the dispatcher for the matching JOC version
14
+ result = context.joc_api.dispatch(endpoint_id="daily_plan/projections/recreate", call=EndpointCall(
15
+ http_service=context.http_service,
16
+ access_token=context.auth_provider.login(),
17
+ payload=None,
18
+ options=None
19
+ ))
20
+
21
+ if isinstance(result, OK_V_2_8_2):
22
+ return bool(result.ok)
23
+
24
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")