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,59 @@
1
+ from typing import List
2
+
3
+ from ...context import Context
4
+ from ....model.private.api.endpoint import EndpointCall
5
+ from ....model.public.client.common.changes import Change
6
+ from ....model.public.client.enum.object_types import ObjectType
7
+ from ....model.private.http.joc.joc_v_2_8_2 import (
8
+ ShowChangesFilter as ShowChangesFilter_V_2_8_2,
9
+ ShowChangesResponse as ShowChangesResponse_V_2_8_2,
10
+ ChangeItem as ChangeItem_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def get_changes_action(*, context: Context, names: List[str]) -> List[Change]:
17
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
18
+ request_data = ShowChangesFilter_V_2_8_2(
19
+ details=True,
20
+ names=names
21
+ )
22
+ else:
23
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
24
+
25
+ result = context.joc_api.dispatch(endpoint_id="inventory/changes", 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, ShowChangesResponse_V_2_8_2):
33
+ return _build_v_2_8_2_response(result)
34
+
35
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
36
+
37
+ #----------------------#
38
+ # Build 2.8.2 response #
39
+ #----------------------#
40
+ def _build_v_2_8_2_response(response: ShowChangesResponse_V_2_8_2) -> List[Change]:
41
+ if not response.changes:
42
+ return []
43
+
44
+ change_items: List[ChangeItem_V_2_8_2] = []
45
+ for change in response.changes:
46
+ if not change.configurations:
47
+ continue
48
+
49
+ for cfg in change.configurations:
50
+ change_items.append(cfg)
51
+
52
+ return [
53
+ Change(
54
+ path=item.path or "",
55
+ name=item.name,
56
+ object_type=ObjectType(item.object_type.value if item.object_type else "")
57
+ )
58
+ for item in change_items
59
+ ]
@@ -0,0 +1,29 @@
1
+ from ...context import Context
2
+ from ....model.public.client.common.git_credentials import GitCredentials
3
+ from ....model.private.api.endpoint import EndpointCall
4
+ from ....model.private.http.joc.joc_v_2_8_2 import (
5
+ GitCredentials as GitCredentials_V_2_8_2
6
+ )
7
+
8
+
9
+ def get_git_credentials_action(*, context: Context) -> GitCredentials:
10
+ # Calls the dispatcher for the matching JOC version
11
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/credentials", call=EndpointCall(
12
+ http_service=context.http_service,
13
+ access_token=context.auth_provider.login(),
14
+ payload=None,
15
+ options=None,
16
+ ))
17
+
18
+ if isinstance(result, GitCredentials_V_2_8_2):
19
+ return GitCredentials(
20
+ email=result.email,
21
+ git_account=result.git_account,
22
+ git_server=result.git_server,
23
+ keyfile_path=result.keyfile_path,
24
+ password=result.password,
25
+ personal_access_token=result.personal_access_token,
26
+ username=result.username
27
+ )
28
+
29
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
@@ -0,0 +1,72 @@
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
+ Category as Category_V_2_8_2,
9
+ GitCommandResponse as GitCommandResponse_V_2_8_2,
10
+ CommonFilter as CommonFilter_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_add_action(
17
+ *,
18
+ context: Context,
19
+ folder_path: str,
20
+ category: Literal["LOCAL", "ROLLOUT"],
21
+ audit_log: Optional[AuditLog]
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(folder_path=folder_path, category=category, audit_log=audit_log)
26
+ else:
27
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
28
+
29
+ # Calls the dispatcher for the matching JOC version
30
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/add", call=EndpointCall(
31
+ http_service=context.http_service,
32
+ access_token=context.auth_provider.login(),
33
+ payload=request_data,
34
+ options=None,
35
+ ))
36
+
37
+ if isinstance(result, GitCommandResponse_V_2_8_2):
38
+ return bool(result.exit_code == 0)
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
+ folder_path: str,
48
+ category: Literal["LOCAL", "ROLLOUT"],
49
+ audit_log: Optional[AuditLog]
50
+ ) -> CommonFilter_V_2_8_2:
51
+
52
+ # Validates folder path
53
+ if not folder_path:
54
+ raise ValueError("'folder_path' is required.")
55
+
56
+ # Validate: category
57
+ if category not in ("LOCAL", "ROLLOUT"):
58
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
59
+
60
+ # Build: Audit Log
61
+ res_audit_log = AuditParams_V_2_8_2(
62
+ ticket_link=audit_log.ticket_link,
63
+ comment=audit_log.comment,
64
+ time_spent=audit_log.time_spent
65
+ ) if audit_log else None
66
+
67
+ # Result
68
+ return CommonFilter_V_2_8_2(
69
+ folder=folder_path,
70
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
71
+ audit_log=res_audit_log,
72
+ )
@@ -0,0 +1,88 @@
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
+ CheckoutFilter as CheckoutFilter_V_2_8_2,
9
+ Category as Category_V_2_8_2,
10
+ GitCommandResponse as GitCommandResponse_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_checkout_action(
17
+ *,
18
+ context: Context,
19
+ branch: Optional[str],
20
+ tag: Optional[str],
21
+ folder_path: str,
22
+ category: Literal["LOCAL", "ROLLOUT"],
23
+ audit_log: Optional[AuditLog]
24
+ ) -> bool:
25
+
26
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
27
+ request_data = _build_v_2_8_2_request(
28
+ branch=branch,
29
+ tag=tag,
30
+ folder_path=folder_path,
31
+ category=category,
32
+ audit_log=audit_log
33
+ )
34
+ else:
35
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
36
+
37
+ # Calls the dispatcher for the matching JOC version
38
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/checkout", call=EndpointCall(
39
+ http_service=context.http_service,
40
+ access_token=context.auth_provider.login(),
41
+ payload=request_data,
42
+ options=None,
43
+ ))
44
+
45
+ if isinstance(result, GitCommandResponse_V_2_8_2):
46
+ return bool(result.exit_code == 0)
47
+
48
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
49
+
50
+ #---------------------#
51
+ # Build 2.8.2 request #
52
+ #---------------------#
53
+ def _build_v_2_8_2_request(
54
+ *,
55
+ branch: Optional[str],
56
+ tag: Optional[str],
57
+ folder_path: str,
58
+ category: Literal["LOCAL", "ROLLOUT"],
59
+ audit_log: Optional[AuditLog]
60
+ ) -> CheckoutFilter_V_2_8_2:
61
+
62
+ # Validates one of branch or tag
63
+ if sum([branch is not None, tag is not None]) != 1:
64
+ raise ValueError("Exactly one of 'branch' or 'tag' must be specified.")
65
+
66
+ # Validates folder_path
67
+ if not folder_path:
68
+ raise ValueError("'folder_path' is required.")
69
+
70
+ # Validate: category
71
+ if category not in ("LOCAL", "ROLLOUT"):
72
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
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 CheckoutFilter_V_2_8_2(
83
+ branch=branch,
84
+ tag=tag,
85
+ folder=folder_path,
86
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
87
+ audit_log=res_audit_log,
88
+ )
@@ -0,0 +1,84 @@
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
+ GitCommandResponse as GitCommandResponse_V_2_8_2,
9
+ CloneFilter as CloneFilter_V_2_8_2,
10
+ Category as Category_V_2_8_2,
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_clone_action(
17
+ *,
18
+ context: Context,
19
+ remote_url: str,
20
+ folder_path: str,
21
+ category: Literal["LOCAL", "ROLLOUT"],
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
+ remote_url=remote_url,
28
+ folder_path=folder_path,
29
+ category=category,
30
+ audit_log=audit_log
31
+ )
32
+ else:
33
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
34
+
35
+ # Calls the dispatcher for the matching JOC version
36
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/clone", call=EndpointCall(
37
+ http_service=context.http_service,
38
+ access_token=context.auth_provider.login(),
39
+ payload=request_data,
40
+ options=None,
41
+ ))
42
+
43
+ if isinstance(result, GitCommandResponse_V_2_8_2):
44
+ return bool(result.exit_code == 0)
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
+ remote_url: str,
54
+ folder_path: str,
55
+ category: Literal["LOCAL", "ROLLOUT"],
56
+ audit_log: Optional[AuditLog],
57
+ ) -> CloneFilter_V_2_8_2:
58
+
59
+ # Validates remote URL
60
+ if not remote_url:
61
+ raise ValueError("'remote_url' is required.")
62
+
63
+ # Validates folder path
64
+ if not folder_path:
65
+ raise ValueError("'folder_path' is required.")
66
+
67
+ # Validate: category
68
+ if category not in ("LOCAL", "ROLLOUT"):
69
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
70
+
71
+ # Build: Audit Log
72
+ res_audit_log = AuditParams_V_2_8_2(
73
+ ticket_link=audit_log.ticket_link,
74
+ comment=audit_log.comment,
75
+ time_spent=audit_log.time_spent
76
+ ) if audit_log else None
77
+
78
+ # Result
79
+ return CloneFilter_V_2_8_2(
80
+ remote_url=remote_url,
81
+ folder=folder_path,
82
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
83
+ audit_log=res_audit_log
84
+ )
@@ -0,0 +1,80 @@
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
+ CommitFilter as CommitFilter_V_2_8_2,
9
+ Category as Category_V_2_8_2,
10
+ GitCommandResponse as GitCommandResponse_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_commit_action(
17
+ *,
18
+ context: Context,
19
+ message: Optional[str],
20
+ folder_path: str,
21
+ category: Literal["LOCAL", "ROLLOUT"],
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
+ message=message,
28
+ folder_path=folder_path,
29
+ category=category,
30
+ audit_log=audit_log
31
+ )
32
+ else:
33
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
34
+
35
+ # Calls the dispatcher for the matching JOC version
36
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/commit", call=EndpointCall(
37
+ http_service=context.http_service,
38
+ access_token=context.auth_provider.login(),
39
+ payload=request_data,
40
+ options=None,
41
+ ))
42
+
43
+ if isinstance(result, GitCommandResponse_V_2_8_2):
44
+ return bool(result.exit_code == 0)
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
+ message: Optional[str],
54
+ folder_path: str,
55
+ category: Literal["LOCAL", "ROLLOUT"],
56
+ audit_log: Optional[AuditLog],
57
+ ) -> CommitFilter_V_2_8_2:
58
+
59
+ # Validates folder path
60
+ if not folder_path:
61
+ raise ValueError("'folder_path' is required.")
62
+
63
+ # Validate: category
64
+ if category not in ("LOCAL", "ROLLOUT"):
65
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
66
+
67
+ # Build: Audit Log
68
+ res_audit_log = AuditParams_V_2_8_2(
69
+ ticket_link=audit_log.ticket_link,
70
+ comment=audit_log.comment,
71
+ time_spent=audit_log.time_spent
72
+ ) if audit_log else None
73
+
74
+ # Result
75
+ return CommitFilter_V_2_8_2(
76
+ message=message,
77
+ folder=folder_path,
78
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
79
+ audit_log=res_audit_log
80
+ )
@@ -0,0 +1,72 @@
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
+ Category as Category_V_2_8_2,
9
+ GitCommandResponse as GitCommandResponse_V_2_8_2,
10
+ CommonFilter as CommonFilter_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_pull_action(
17
+ *,
18
+ context: Context,
19
+ folder_path: str,
20
+ category: Literal["LOCAL", "ROLLOUT"],
21
+ audit_log: Optional[AuditLog]
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(folder_path=folder_path, category=category, audit_log=audit_log)
26
+ else:
27
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
28
+
29
+ # Calls the dispatcher for the matching JOC version
30
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/pull", call=EndpointCall(
31
+ http_service=context.http_service,
32
+ access_token=context.auth_provider.login(),
33
+ payload=request_data,
34
+ options=None,
35
+ ))
36
+
37
+ if isinstance(result, GitCommandResponse_V_2_8_2):
38
+ return bool(result.exit_code == 0)
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
+ folder_path: str,
48
+ category: Literal["LOCAL", "ROLLOUT"],
49
+ audit_log: Optional[AuditLog]
50
+ ) -> CommonFilter_V_2_8_2:
51
+
52
+ # Validates folder path
53
+ if not folder_path:
54
+ raise ValueError("'folder_path' is required.")
55
+
56
+ # Validate: category
57
+ if category not in ("LOCAL", "ROLLOUT"):
58
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
59
+
60
+ # Build: Audit Log
61
+ res_audit_log = AuditParams_V_2_8_2(
62
+ ticket_link=audit_log.ticket_link,
63
+ comment=audit_log.comment,
64
+ time_spent=audit_log.time_spent
65
+ ) if audit_log else None
66
+
67
+ # Result
68
+ return CommonFilter_V_2_8_2(
69
+ folder=folder_path,
70
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
71
+ audit_log=res_audit_log,
72
+ )
@@ -0,0 +1,76 @@
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
+ CommonFilter as CommonFilter_V_2_8_2,
9
+ Category as Category_V_2_8_2,
10
+ GitCommandResponse as GitCommandResponse_V_2_8_2
11
+ )
12
+
13
+ from ....util.check_matching_version import check_matching_version
14
+
15
+
16
+ def git_push_action(
17
+ *,
18
+ context: Context,
19
+ folder_path: str,
20
+ category: Literal["LOCAL", "ROLLOUT"],
21
+ audit_log: Optional[AuditLog],
22
+ ) -> bool:
23
+
24
+ if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
25
+ request_data = _build_v_2_8_2_request(
26
+ folder_path=folder_path,
27
+ category=category,
28
+ audit_log=audit_log
29
+ )
30
+ else:
31
+ raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
32
+
33
+ # Calls the dispatcher for the matching JOC version
34
+ result = context.joc_api.dispatch(endpoint_id="inventory/repository/git/push", call=EndpointCall(
35
+ http_service=context.http_service,
36
+ access_token=context.auth_provider.login(),
37
+ payload=request_data,
38
+ options=None,
39
+ ))
40
+
41
+ if isinstance(result, GitCommandResponse_V_2_8_2):
42
+ return bool(result.exit_code == 0)
43
+
44
+ raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
45
+
46
+ #---------------------#
47
+ # Build 2.8.2 request #
48
+ #---------------------#
49
+ def _build_v_2_8_2_request(
50
+ *,
51
+ folder_path: str,
52
+ category: Literal["LOCAL", "ROLLOUT"],
53
+ audit_log: Optional[AuditLog],
54
+ ) -> CommonFilter_V_2_8_2:
55
+
56
+ # Validates folder path
57
+ if not folder_path:
58
+ raise ValueError("'folder_path' is required.")
59
+
60
+ # Validate: category
61
+ if category not in ("LOCAL", "ROLLOUT"):
62
+ raise ValueError("'category' must be one of 'LOCAL' or 'ROLLOUT'.")
63
+
64
+ # Build: Audit Log
65
+ res_audit_log = AuditParams_V_2_8_2(
66
+ ticket_link=audit_log.ticket_link,
67
+ comment=audit_log.comment,
68
+ time_spent=audit_log.time_spent
69
+ ) if audit_log else None
70
+
71
+ # Result
72
+ return CommonFilter_V_2_8_2(
73
+ folder=folder_path,
74
+ category=Category_V_2_8_2(category), # Raises ValueError() if invalid.
75
+ audit_log=res_audit_log
76
+ )