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.
- js7/__init__.py +8 -0
- js7/api/joc/http/v_2_8_2/agent/cluster/confirm_node_loss.py +36 -0
- js7/api/joc/http/v_2_8_2/agent/cluster/switchover.py +36 -0
- js7/api/joc/http/v_2_8_2/agent/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/agents.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/cluster/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/cluster/deploy.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/cluster/revoke.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/cluster/store.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/export.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/import.py +74 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/deploy.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/revoke.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/store.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/disable.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/enable.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/reset.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/cluster/subagents/store.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/deploy.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/disable.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/enable.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/revoke.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/inventory/store.py +36 -0
- js7/api/joc/http/v_2_8_2/agents/reset.py +36 -0
- js7/api/joc/http/v_2_8_2/authentication/auth.py +32 -0
- js7/api/joc/http/v_2_8_2/authentication/joc_cockpit_permissions.py +28 -0
- js7/api/joc/http/v_2_8_2/authentication/login.py +35 -0
- js7/api/joc/http/v_2_8_2/authentication/logout.py +28 -0
- js7/api/joc/http/v_2_8_2/configuration/configuration.py +36 -0
- js7/api/joc/http/v_2_8_2/configuration/save.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/abort.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/abort_and_restart.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/cluster/appoint_nodes.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/cluster/confirm_node_loss.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/cluster/switchover.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/components.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/controller.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/register.py +42 -0
- js7/api/joc/http/v_2_8_2/controller/restart.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/terminate.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/test.py +36 -0
- js7/api/joc/http/v_2_8_2/controller/unregister.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/cancel.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/copy.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/generate.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/modify.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/orders.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/orders/submit.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/projections/calendar.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/projections/dates.py +36 -0
- js7/api/joc/http/v_2_8_2/daily_plan/projections/recreate.py +28 -0
- js7/api/joc/http/v_2_8_2/daily_plan/submissions/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/account/change_password.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/account/permissions.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/account/rename.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/account/store.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/accounts/accounts.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/accounts/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/accounts/disable.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/accounts/enable.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/accounts/reset_password.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/blocked_account/store.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/blocked_accounts/blocked_accounts.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/blocked_accounts/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/folder/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/folder/rename.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/folders/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/folders/folders.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/folders/store.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/identity_service/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/identity_service/identity_service.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/identity_service/rename.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/identity_service/store.py +42 -0
- js7/api/joc/http/v_2_8_2/iam/identity_services/identity_services.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/permission/permission.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/permission/rename.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/permissions/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/permissions/permissions.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/permissions/store.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/role/rename.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/role/role.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/role/store.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/roles/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/iam/roles/roles.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/changes/changes.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/dependencies.py +33 -0
- js7/api/joc/http/v_2_8_2/inventory/deployment/deploy.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/deployment/import_deploy.py +66 -0
- js7/api/joc/http/v_2_8_2/inventory/deployment/revoke.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/export/export.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/export/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/import_objects.py +88 -0
- js7/api/joc/http/v_2_8_2/inventory/releasables/recall/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/releasables/recall/recall.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/release.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/remove/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/remove/remove.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/add.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/checkout.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/clone.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/commit.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/add.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/credentials.py +28 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/credentials/remove.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/pull.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/git/push.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/read.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/store.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/repository/update.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/revalidate/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/store.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/trash/delete/delete.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/trash/delete/folder.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/trash/restore.py +36 -0
- js7/api/joc/http/v_2_8_2/inventory/validate.py +42 -0
- js7/api/joc/http/v_2_8_2/joc/cluster/restart.py +36 -0
- js7/api/joc/http/v_2_8_2/joc/cluster/run.py +36 -0
- js7/api/joc/http/v_2_8_2/joc/cluster/switch_member.py +36 -0
- js7/api/joc/http/v_2_8_2/joc/license.py +28 -0
- js7/api/joc/http/v_2_8_2/joc/proxies/restart.py +36 -0
- js7/api/joc/http/v_2_8_2/joc/version.py +28 -0
- js7/api/joc/http/v_2_8_2/joc/versions.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/add.py +33 -0
- js7/api/joc/http/v_2_8_2/orders/cancel.py +33 -0
- js7/api/joc/http/v_2_8_2/orders/confirm.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/continue.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/history.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/orders.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/remove_when_terminated.py +33 -0
- js7/api/joc/http/v_2_8_2/orders/resume.py +36 -0
- js7/api/joc/http/v_2_8_2/orders/suspend.py +36 -0
- js7/api/joc/http/v_2_8_2/settings/settings.py +28 -0
- js7/api/joc/http/v_2_8_2/settings/store.py +36 -0
- js7/api/joc/http/v_2_8_2/tasks/history.py +36 -0
- js7/api/joc/http/v_2_8_2/workflow/transition.py +36 -0
- js7/api/joc/http/v_2_8_2/workflow/workflow.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/resume.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/skip.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/stop.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/suspend.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/unskip.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/unstop.py +36 -0
- js7/api/joc/http/v_2_8_2/workflows/workflows.py +36 -0
- js7/api/joc/interface/dispatcher.py +76 -0
- js7/api/joc/interface/interface.py +8 -0
- js7/api/joc/interface/resolver.py +75 -0
- js7/client/action/agent/confirm_node_loss_agent_action.py +75 -0
- js7/client/action/agent/delete_subagent_action.py +77 -0
- js7/client/action/agent/delete_subagent_clusters_action.py +75 -0
- js7/client/action/agent/deploy_cluster_agents_action.py +75 -0
- js7/client/action/agent/deploy_standalone_agents_action.py +75 -0
- js7/client/action/agent/deploy_subagent_clusters_action.py +75 -0
- js7/client/action/agent/disable_standalone_agents_action.py +75 -0
- js7/client/action/agent/disable_subagents_action.py +75 -0
- js7/client/action/agent/enable_standalone_agents_action.py +75 -0
- js7/client/action/agent/enable_subagents_action.py +75 -0
- js7/client/action/agent/export_agents_action.py +101 -0
- js7/client/action/agent/get_agents_status_action.py +55 -0
- js7/client/action/agent/import_agents_action.py +139 -0
- js7/client/action/agent/remove_agent_action.py +79 -0
- js7/client/action/agent/reset_agents_action.py +79 -0
- js7/client/action/agent/reset_subagent_action.py +79 -0
- js7/client/action/agent/revoke_cluster_agents_action.py +75 -0
- js7/client/action/agent/revoke_standalone_agents_action.py +75 -0
- js7/client/action/agent/revoke_subagent_clusters_action.py +75 -0
- js7/client/action/agent/store_cluster_agents_action.py +99 -0
- js7/client/action/agent/store_standalone_agents_action.py +87 -0
- js7/client/action/agent/store_subagent_clusters_action.py +83 -0
- js7/client/action/agent/store_subagents_action.py +97 -0
- js7/client/action/agent/switchover_agent_action.py +75 -0
- js7/client/action/controller/appoint_nodes_controller_action.py +67 -0
- js7/client/action/controller/cancel_and_restart_controller_action.py +72 -0
- js7/client/action/controller/cancel_controller_action.py +71 -0
- js7/client/action/controller/confirm_cluster_node_loss_action.py +68 -0
- js7/client/action/controller/get_controller_components_action.py +41 -0
- js7/client/action/controller/get_controller_status_action.py +72 -0
- js7/client/action/controller/register_controller_action.py +93 -0
- js7/client/action/controller/restart_controller_action.py +72 -0
- js7/client/action/controller/switchover_controller_cluster_action.py +67 -0
- js7/client/action/controller/terminate_controller_action.py +72 -0
- js7/client/action/controller/test_controller_instance_action.py +65 -0
- js7/client/action/controller/unregister_controller_action.py +68 -0
- js7/client/action/daily_plan/cancel_orders_action.py +59 -0
- js7/client/action/daily_plan/copy_orders_action.py +108 -0
- js7/client/action/daily_plan/create_projections_action.py +24 -0
- js7/client/action/daily_plan/delete_orders_action.py +80 -0
- js7/client/action/daily_plan/delete_submissions_action.py +83 -0
- js7/client/action/daily_plan/generate_orders_action.py +121 -0
- js7/client/action/daily_plan/get_calendar_projections_action.py +59 -0
- js7/client/action/daily_plan/get_orders_action.py +70 -0
- js7/client/action/daily_plan/get_projection_dates_action.py +59 -0
- js7/client/action/daily_plan/modify_orders_action.py +130 -0
- js7/client/action/daily_plan/submit_orders_action.py +79 -0
- js7/client/action/helper/decrypt_action.py +82 -0
- js7/client/action/helper/encrypt_action.py +87 -0
- js7/client/action/iam/block_account_action.py +71 -0
- js7/client/action/iam/change_account_password_action.py +96 -0
- js7/client/action/iam/disable_accounts_action.py +75 -0
- js7/client/action/iam/enable_accounts_action.py +75 -0
- js7/client/action/iam/get_account_permissions_action.py +75 -0
- js7/client/action/iam/get_accounts_action.py +76 -0
- js7/client/action/iam/get_blocked_accounts_action.py +76 -0
- js7/client/action/iam/get_folder_permissions_action.py +112 -0
- js7/client/action/iam/get_identity_service_settings_action.py +70 -0
- js7/client/action/iam/get_identity_services_action.py +102 -0
- js7/client/action/iam/get_permissions_action.py +113 -0
- js7/client/action/iam/get_roles_action.py +57 -0
- js7/client/action/iam/remove_accounts_action.py +75 -0
- js7/client/action/iam/remove_folder_permissions_action.py +91 -0
- js7/client/action/iam/remove_identity_service_action.py +67 -0
- js7/client/action/iam/remove_permissions_action.py +88 -0
- js7/client/action/iam/remove_roles_action.py +75 -0
- js7/client/action/iam/rename_account_action.py +83 -0
- js7/client/action/iam/rename_folder_permissions_action.py +100 -0
- js7/client/action/iam/rename_identity_service_action.py +75 -0
- js7/client/action/iam/rename_permission_action.py +103 -0
- js7/client/action/iam/rename_role_action.py +83 -0
- js7/client/action/iam/reset_account_passwords_action.py +75 -0
- js7/client/action/iam/set_folder_permissions_action.py +96 -0
- js7/client/action/iam/set_permissions_action.py +91 -0
- js7/client/action/iam/store_account_action.py +69 -0
- js7/client/action/iam/store_identity_service_action.py +75 -0
- js7/client/action/iam/store_identity_service_settings_action.py +74 -0
- js7/client/action/iam/store_role_action.py +79 -0
- js7/client/action/iam/unblock_accounts_action.py +67 -0
- js7/client/action/inventory/deploy_configurations_action.py +138 -0
- js7/client/action/inventory/export_configurations_action.py +203 -0
- js7/client/action/inventory/export_folders_action.py +160 -0
- js7/client/action/inventory/get_change_dependencies_action.py +161 -0
- js7/client/action/inventory/get_changes_action.py +59 -0
- js7/client/action/inventory/get_git_credentials_action.py +29 -0
- js7/client/action/inventory/git_add_action.py +72 -0
- js7/client/action/inventory/git_checkout_action.py +88 -0
- js7/client/action/inventory/git_clone_action.py +84 -0
- js7/client/action/inventory/git_commit_action.py +80 -0
- js7/client/action/inventory/git_pull_action.py +72 -0
- js7/client/action/inventory/git_push_action.py +76 -0
- js7/client/action/inventory/import_configurations_action.py +153 -0
- js7/client/action/inventory/import_deploy_configurations_action.py +188 -0
- js7/client/action/inventory/read_from_local_repository_action.py +67 -0
- js7/client/action/inventory/recall_folder_action.py +89 -0
- js7/client/action/inventory/recall_released_configuration_action.py +75 -0
- js7/client/action/inventory/release_configuartions_action.py +89 -0
- js7/client/action/inventory/remove_configurations_action.py +77 -0
- js7/client/action/inventory/remove_configurations_from_trash_action.py +80 -0
- js7/client/action/inventory/remove_folder_action.py +67 -0
- js7/client/action/inventory/remove_folder_from_trash_action.py +69 -0
- js7/client/action/inventory/remove_git_credentials_action.py +53 -0
- js7/client/action/inventory/remove_repository_configuration_action.py +84 -0
- js7/client/action/inventory/restore_configuration_from_trash_action.py +84 -0
- js7/client/action/inventory/revalidate_folder_action.py +46 -0
- js7/client/action/inventory/revoke_configurations_action.py +86 -0
- js7/client/action/inventory/store_configuration_action.py +79 -0
- js7/client/action/inventory/store_git_credentials_action.py +99 -0
- js7/client/action/inventory/store_repository_configuration_action.py +124 -0
- js7/client/action/inventory/update_repository_configuration_action.py +85 -0
- js7/client/action/inventory/validate_configuration_action.py +58 -0
- js7/client/action/joc/get_components_versions_action.py +57 -0
- js7/client/action/joc/get_license_info_action.py +22 -0
- js7/client/action/joc/get_settings_action.py +19 -0
- js7/client/action/joc/get_version_action.py +17 -0
- js7/client/action/joc/restart_proxies_action.py +50 -0
- js7/client/action/joc/restart_service_action.py +74 -0
- js7/client/action/joc/run_service_action.py +74 -0
- js7/client/action/joc/store_settings_action.py +62 -0
- js7/client/action/joc/switch_over_action.py +89 -0
- js7/client/action/order/add_orders_action.py +115 -0
- js7/client/action/order/cancel_orders_action.py +93 -0
- js7/client/action/order/confirm_orders_action.py +86 -0
- js7/client/action/order/continue_orders_action.py +86 -0
- js7/client/action/order/get_order_history_action.py +84 -0
- js7/client/action/order/get_orders_action.py +83 -0
- js7/client/action/order/remove_terminated_orders_action.py +86 -0
- js7/client/action/order/resume_orders_action.py +102 -0
- js7/client/action/order/suspend_orders_action.py +97 -0
- js7/client/action/task/get_task_history_info_action.py +88 -0
- js7/client/action/workflow/get_workflow_versions_action.py +131 -0
- js7/client/action/workflow/resume_workflows_action.py +76 -0
- js7/client/action/workflow/set_workflow_version_as_current_action.py +86 -0
- js7/client/action/workflow/skip_job_instructions_action.py +83 -0
- js7/client/action/workflow/stop_job_instructions_action.py +83 -0
- js7/client/action/workflow/suspend_workflows_action.py +76 -0
- js7/client/action/workflow/unskip_job_instructions_action.py +83 -0
- js7/client/action/workflow/unstop_job_instructions_action.py +79 -0
- js7/client/auth/auth_provider.py +109 -0
- js7/client/auth/login.py +34 -0
- js7/client/auth/logout.py +22 -0
- js7/client/client.py +250 -0
- js7/client/context.py +40 -0
- js7/client/feature/agent/agent.py +26 -0
- js7/client/feature/agent/deploy.py +134 -0
- js7/client/feature/agent/manage.py +363 -0
- js7/client/feature/agent/operate.py +577 -0
- js7/client/feature/controller/controller.py +19 -0
- js7/client/feature/controller/manage.py +214 -0
- js7/client/feature/controller/operate.py +274 -0
- js7/client/feature/daily_plan/daily_plan.py +14 -0
- js7/client/feature/daily_plan/manage.py +179 -0
- js7/client/feature/daily_plan/operate.py +354 -0
- js7/client/feature/iam/iam.py +14 -0
- js7/client/feature/iam/manage.py +1311 -0
- js7/client/feature/inventory/inventory.py +13 -0
- js7/client/feature/inventory/manage.py +943 -0
- js7/client/feature/inventory/manage_repository.py +533 -0
- js7/client/feature/joc/joc.py +18 -0
- js7/client/feature/joc/manage.py +102 -0
- js7/client/feature/joc/operate.py +185 -0
- js7/client/feature/order/manage.py +79 -0
- js7/client/feature/order/operate.py +346 -0
- js7/client/feature/order/order.py +18 -0
- js7/client/feature/task/task.py +54 -0
- js7/client/feature/workflow/manage.py +54 -0
- js7/client/feature/workflow/operate.py +336 -0
- js7/client/feature/workflow/workflow.py +19 -0
- js7/java/lib/3rd-party/bcpg-jdk15to18-1.78.1.jar +0 -0
- js7/java/lib/3rd-party/bcpkix-jdk15to18-1.78.1.jar +0 -0
- js7/java/lib/3rd-party/bcprov-jdk15to18-1.78.1.jar +0 -0
- js7/java/lib/3rd-party/bcutil-jdk15to18-1.78.1.jar +0 -0
- js7/java/lib/3rd-party/commons-io-2.15.1.jar +0 -0
- js7/java/lib/3rd-party/commons-lang3-3.14.0.jar +0 -0
- js7/java/lib/3rd-party/jackson-core-2.14.2.jar +0 -0
- js7/java/lib/3rd-party/jackson-databind-2.14.2.jar +0 -0
- js7/java/lib/3rd-party/jackson-dataformat-xml-2.14.2.jar +0 -0
- js7/java/lib/3rd-party/jakarta.annotation-api-2.1.1.jar +0 -0
- js7/java/lib/3rd-party/javax.activation-api-1.2.0.jar +0 -0
- js7/java/lib/3rd-party/jaxb-api-2.4.0-b180830.0359.jar +0 -0
- js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-api-2.23.1.jar +0 -0
- js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-core-2.23.1.jar +0 -0
- js7/java/lib/3rd-party/org.apache.logging.log4j.log4j-slf4j2-impl-2.23.1.jar +0 -0
- js7/java/lib/3rd-party/org.slf4j.slf4j-api-2.0.13.jar +0 -0
- js7/java/lib/3rd-party/stax2-api-4.2.1.jar +0 -0
- js7/java/lib/3rd-party/woodstox-core-6.5.0.jar +0 -0
- js7/java/lib/sos/sos-commons-encryption-2.7.3.jar +0 -0
- js7/java/lib/sos/sos-commons-exception-2.7.3.jar +0 -0
- js7/java/lib/sos/sos-commons-sign-2.7.3.jar +0 -0
- js7/java/lib/sos/sos-webservices-json-2.7.3.jar +0 -0
- js7/model/__init__.py +132 -0
- js7/model/configuration/auth_configuration.py +24 -0
- js7/model/configuration/client_configuration.py +6 -0
- js7/model/configuration/http_configuration.py +10 -0
- js7/model/error/http/joc_exceptions.py +151 -0
- js7/model/private/api/endpoint.py +30 -0
- js7/model/private/http/joc/joc_v_2_8_2.py +3666 -0
- js7/model/public/client/common/__init__.py +27 -0
- js7/model/public/client/common/accounts.py +21 -0
- js7/model/public/client/common/audit_log.py +8 -0
- js7/model/public/client/common/changes.py +18 -0
- js7/model/public/client/common/configurations.py +53 -0
- js7/model/public/client/common/cycle.py +12 -0
- js7/model/public/client/common/git_credentials.py +12 -0
- js7/model/public/client/common/identity_service.py +14 -0
- js7/model/public/client/common/schedule_time.py +50 -0
- js7/model/public/client/common/store_agents.py +96 -0
- js7/model/public/client/enum/__init__.py +19 -0
- js7/model/public/client/enum/object_types.py +48 -0
- js7/model/public/client/enum/operation_type.py +11 -0
- js7/model/public/client/enum/order_priority.py +9 -0
- js7/model/public/client/filter/__init__.py +35 -0
- js7/model/public/client/filter/daily_plan_order_filters.py +255 -0
- js7/model/public/client/filter/element/__init__.py +3 -0
- js7/model/public/client/filter/element/folder.py +6 -0
- js7/model/public/client/filter/element/workflow_id.py +10 -0
- js7/model/public/client/filter/export_filter.py +52 -0
- js7/model/public/client/filter/export_folders_filter.py +34 -0
- js7/model/public/client/filter/get_order_filter.py +59 -0
- js7/model/public/client/filter/order_history_filter.py +113 -0
- js7/model/public/client/filter/resume_order_filter.py +45 -0
- js7/model/public/client/filter/suspend_order_filter.py +44 -0
- js7/model/public/client/filter/tasks_filter.py +50 -0
- js7/model/public/client/input/__init__.py +2 -0
- js7/model/public/client/input/add_order.py +50 -0
- js7/service/http_service.py +206 -0
- js7/util/bytes_converter/bytes_to_archive_bytes.py +52 -0
- js7/util/bytes_converter/bytes_to_file.py +12 -0
- js7/util/bytes_converter/files_to_bytes.py +52 -0
- js7/util/bytes_converter/read_bytes_archive_files_to_bytes.py +69 -0
- js7/util/bytes_converter/sign_to_bytes.py +106 -0
- js7/util/check_matching_version.py +20 -0
- js7/util/detect_archive_type.py +37 -0
- js7/util/str_converter/order_id_to_order_name.py +5 -0
- js7/validator/http/joc_http_status_validator.py +155 -0
- js7_client_python-2.0.1.0.dist-info/LICENSE +674 -0
- js7_client_python-2.0.1.0.dist-info/METADATA +763 -0
- js7_client_python-2.0.1.0.dist-info/RECORD +389 -0
- js7_client_python-2.0.1.0.dist-info/WHEEL +5 -0
- js7_client_python-2.0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from ......model.private.api.endpoint import EndpointDefinition, EndpointCall
|
|
2
|
+
from ......model.private.http.joc.joc_v_2_8_2 import ModifyWorkflows, OK
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def suspend(call: EndpointCall) -> OK:
|
|
6
|
+
if not call.access_token:
|
|
7
|
+
raise ValueError("'access_token' is required in function call.")
|
|
8
|
+
|
|
9
|
+
if not call.payload:
|
|
10
|
+
raise ValueError("'payload' is required in function call.")
|
|
11
|
+
|
|
12
|
+
if not isinstance(call.payload, ModifyWorkflows):
|
|
13
|
+
raise ValueError("'payload' is not an instance of model.http.joc_v_2_8_2.ModifyWorkflows.")
|
|
14
|
+
|
|
15
|
+
body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
|
|
16
|
+
|
|
17
|
+
with call.http_service as http:
|
|
18
|
+
resp = http.post(
|
|
19
|
+
path="/joc/api/workflows/suspend",
|
|
20
|
+
body=body,
|
|
21
|
+
headers={
|
|
22
|
+
"X-Access-Token": call.access_token,
|
|
23
|
+
"Accept": "application/json"
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return OK.model_validate_json(resp)
|
|
28
|
+
|
|
29
|
+
ENDPOINT_DEFINITION = EndpointDefinition(
|
|
30
|
+
id="workflows/suspend",
|
|
31
|
+
function=suspend,
|
|
32
|
+
version=("2.6.5", "2.8.3"),
|
|
33
|
+
payload_model=ModifyWorkflows,
|
|
34
|
+
response_model=OK,
|
|
35
|
+
options=None
|
|
36
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from ......model.private.api.endpoint import EndpointDefinition, EndpointCall
|
|
2
|
+
from ......model.private.http.joc.joc_v_2_8_2 import ModifyWorkflowLabels, OK
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def unskip(call: EndpointCall) -> OK:
|
|
6
|
+
if not call.access_token:
|
|
7
|
+
raise ValueError("'access_token' is required in function call.")
|
|
8
|
+
|
|
9
|
+
if not call.payload:
|
|
10
|
+
raise ValueError("'payload' is required in function call.")
|
|
11
|
+
|
|
12
|
+
if not isinstance(call.payload, ModifyWorkflowLabels):
|
|
13
|
+
raise ValueError("'payload' is not an instance of model.http.joc_v_2_8_2.ModifyWorkflowLabels.")
|
|
14
|
+
|
|
15
|
+
body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
|
|
16
|
+
|
|
17
|
+
with call.http_service as http:
|
|
18
|
+
resp = http.post(
|
|
19
|
+
path="/joc/api/workflow/unskip",
|
|
20
|
+
body=body,
|
|
21
|
+
headers={
|
|
22
|
+
"X-Access-Token": call.access_token,
|
|
23
|
+
"Accept": "application/json"
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return OK.model_validate_json(resp)
|
|
28
|
+
|
|
29
|
+
ENDPOINT_DEFINITION = EndpointDefinition(
|
|
30
|
+
id="workflow/unskip",
|
|
31
|
+
function=unskip,
|
|
32
|
+
version=("2.6.5", "2.8.3"),
|
|
33
|
+
payload_model=ModifyWorkflowLabels,
|
|
34
|
+
response_model=OK,
|
|
35
|
+
options=None
|
|
36
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from ......model.private.api.endpoint import EndpointDefinition, EndpointCall
|
|
2
|
+
from ......model.private.http.joc.joc_v_2_8_2 import ModifyWorkflowPositions, OK
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def unstop(call: EndpointCall) -> OK:
|
|
6
|
+
if not call.access_token:
|
|
7
|
+
raise ValueError("'access_token' is required in function call.")
|
|
8
|
+
|
|
9
|
+
if not call.payload:
|
|
10
|
+
raise ValueError("'payload' is required in function call.")
|
|
11
|
+
|
|
12
|
+
if not isinstance(call.payload, ModifyWorkflowPositions):
|
|
13
|
+
raise ValueError("'payload' is not an instance of model.http.joc_v_2_8_2.ModifyWorkflowPositions.")
|
|
14
|
+
|
|
15
|
+
body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
|
|
16
|
+
|
|
17
|
+
with call.http_service as http:
|
|
18
|
+
resp = http.post(
|
|
19
|
+
path="/joc/api/workflow/unstop",
|
|
20
|
+
body=body,
|
|
21
|
+
headers={
|
|
22
|
+
"X-Access-Token": call.access_token,
|
|
23
|
+
"Accept": "application/json"
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return OK.model_validate_json(resp)
|
|
28
|
+
|
|
29
|
+
ENDPOINT_DEFINITION = EndpointDefinition(
|
|
30
|
+
id="workflow/unstop",
|
|
31
|
+
function=unstop,
|
|
32
|
+
version=("2.6.5", "2.8.3"),
|
|
33
|
+
payload_model=ModifyWorkflowPositions,
|
|
34
|
+
response_model=OK,
|
|
35
|
+
options=None
|
|
36
|
+
)
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from ......model.private.api.endpoint import EndpointDefinition, EndpointCall
|
|
2
|
+
from ......model.private.http.joc.joc_v_2_8_2 import WorkflowsFilter, Workflows
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
def workflows(call: EndpointCall) -> Workflows:
|
|
6
|
+
if not call.access_token:
|
|
7
|
+
raise ValueError("'access_token' is required in function call.")
|
|
8
|
+
|
|
9
|
+
if not call.payload:
|
|
10
|
+
raise ValueError("'payload' is required in function call.")
|
|
11
|
+
|
|
12
|
+
if not isinstance(call.payload, WorkflowsFilter):
|
|
13
|
+
raise ValueError("'payload' is not an instance of model.http.joc_v_2_8_2.WorkflowsFilter.")
|
|
14
|
+
|
|
15
|
+
body = call.payload.model_dump_json(by_alias=True, exclude_none=True)
|
|
16
|
+
|
|
17
|
+
with call.http_service as http:
|
|
18
|
+
resp = http.post(
|
|
19
|
+
path="/joc/api/workflows",
|
|
20
|
+
body=body,
|
|
21
|
+
headers={
|
|
22
|
+
"X-Access-Token": call.access_token,
|
|
23
|
+
"Accept": "application/json"
|
|
24
|
+
}
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
return Workflows.model_validate_json(resp)
|
|
28
|
+
|
|
29
|
+
ENDPOINT_DEFINITION = EndpointDefinition(
|
|
30
|
+
id="workflows",
|
|
31
|
+
function=workflows,
|
|
32
|
+
version=("2.6.5", "2.8.3"),
|
|
33
|
+
payload_model=WorkflowsFilter,
|
|
34
|
+
response_model=Workflows,
|
|
35
|
+
options=None
|
|
36
|
+
)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from typing import Optional, Union, get_args, get_origin
|
|
2
|
+
from pydantic import BaseModel
|
|
3
|
+
|
|
4
|
+
from .resolver import Resolver
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall, EndpointDefinition
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Dispatcher(Resolver):
|
|
9
|
+
def __init__(self, version: Optional[str]):
|
|
10
|
+
super().__init__()
|
|
11
|
+
self._version = version
|
|
12
|
+
|
|
13
|
+
def set_version(self, version: str):
|
|
14
|
+
self._version = version
|
|
15
|
+
|
|
16
|
+
def dispatch(self, *, endpoint_id: str, call: EndpointCall) -> Union[BaseModel, bytes, bytearray]:
|
|
17
|
+
# Auto discovery if no version is set.
|
|
18
|
+
if not self._version:
|
|
19
|
+
for ep in self._endpoint_cache:
|
|
20
|
+
if endpoint_id == ep.id:
|
|
21
|
+
try:
|
|
22
|
+
return self._execute(ep, call)
|
|
23
|
+
except RuntimeError:
|
|
24
|
+
continue
|
|
25
|
+
|
|
26
|
+
raise RuntimeError("Auto discovery for endpoint failed.")
|
|
27
|
+
|
|
28
|
+
ep = self.resolve(version=self._version, endpoint_id=endpoint_id)
|
|
29
|
+
|
|
30
|
+
return self._execute(ep, call)
|
|
31
|
+
|
|
32
|
+
def _execute(self, endpoint_definition: EndpointDefinition, call: EndpointCall):
|
|
33
|
+
# Validates payload
|
|
34
|
+
if endpoint_definition.payload_model:
|
|
35
|
+
if not call.payload:
|
|
36
|
+
raise ValueError("Payload is required for this endpoint")
|
|
37
|
+
if not isinstance(call.payload, endpoint_definition.payload_model):
|
|
38
|
+
raise TypeError(
|
|
39
|
+
f"Payload must be {endpoint_definition.payload_model.__name__}"
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
# Validates options
|
|
43
|
+
if endpoint_definition.options:
|
|
44
|
+
call_options = call.options or {}
|
|
45
|
+
|
|
46
|
+
for name, typ in endpoint_definition.options.items():
|
|
47
|
+
value = call_options.get(name)
|
|
48
|
+
|
|
49
|
+
# Optional[T]
|
|
50
|
+
if get_origin(typ) is Union and type(None) in get_args(typ):
|
|
51
|
+
inner = next(t for t in get_args(typ) if t is not type(None))
|
|
52
|
+
if value is not None and not isinstance(value, inner):
|
|
53
|
+
raise TypeError(
|
|
54
|
+
f"Option '{name}' must be {inner.__name__} or None"
|
|
55
|
+
)
|
|
56
|
+
continue
|
|
57
|
+
|
|
58
|
+
# Required option
|
|
59
|
+
if value is None:
|
|
60
|
+
raise ValueError(f"Missing option '{name}'")
|
|
61
|
+
|
|
62
|
+
if not isinstance(value, typ):
|
|
63
|
+
raise TypeError(
|
|
64
|
+
f"Option '{name}' must be {typ.__name__}"
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
# Calls the endpoint function from 'EndpointDefinition'
|
|
68
|
+
result = endpoint_definition.function(call)
|
|
69
|
+
|
|
70
|
+
# Validate response type
|
|
71
|
+
if not isinstance(result, endpoint_definition.response_model):
|
|
72
|
+
raise TypeError(
|
|
73
|
+
f"Invalid response type: expected {endpoint_definition.response_model.__name__}"
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
return result
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import importlib
|
|
2
|
+
import os
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import List
|
|
5
|
+
|
|
6
|
+
from ....model.private.api.endpoint import EndpointDefinition
|
|
7
|
+
|
|
8
|
+
from ....util.check_matching_version import check_matching_version
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class Resolver:
|
|
12
|
+
def __init__(self):
|
|
13
|
+
self._endpoint_cache: List[EndpointDefinition] = []
|
|
14
|
+
self._load_endpoints(
|
|
15
|
+
base_package="js7.api.joc.http",
|
|
16
|
+
base_path = Path(__file__).parents[1] / "http"
|
|
17
|
+
)
|
|
18
|
+
|
|
19
|
+
def _load_endpoints(self, *, base_package: str, base_path: Path) -> None:
|
|
20
|
+
"""
|
|
21
|
+
Walks through js7/api/joc/http and imports all modules
|
|
22
|
+
that expose ENDPOINT_DEFINITION.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
for root, _, files in os.walk(base_path):
|
|
26
|
+
for file in files:
|
|
27
|
+
if not file.endswith(".py"):
|
|
28
|
+
continue
|
|
29
|
+
if file.startswith("__"):
|
|
30
|
+
continue
|
|
31
|
+
|
|
32
|
+
file_path = Path(root) / file
|
|
33
|
+
|
|
34
|
+
# relative path without .py
|
|
35
|
+
rel_path = file_path.relative_to(base_path).with_suffix("")
|
|
36
|
+
|
|
37
|
+
# module import path
|
|
38
|
+
module_path = ".".join(
|
|
39
|
+
[base_package] + list(rel_path.parts)
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
module = importlib.import_module(module_path)
|
|
43
|
+
|
|
44
|
+
if hasattr(module, "ENDPOINT_DEFINITION"):
|
|
45
|
+
endpoint_def = getattr(module, "ENDPOINT_DEFINITION")
|
|
46
|
+
|
|
47
|
+
if not isinstance(endpoint_def, EndpointDefinition):
|
|
48
|
+
raise TypeError(
|
|
49
|
+
f"{module_path}.ENDPOINT_DEFINITION is not EndpointDefinition"
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
self._endpoint_cache.append(endpoint_def)
|
|
53
|
+
|
|
54
|
+
def resolve(self, *, version: str, endpoint_id: str) -> EndpointDefinition:
|
|
55
|
+
"""
|
|
56
|
+
Resolves the endpoint definition for a given JOC version.
|
|
57
|
+
"""
|
|
58
|
+
|
|
59
|
+
if not self._endpoint_cache:
|
|
60
|
+
raise RuntimeError("Endpoint cache is empty.")
|
|
61
|
+
|
|
62
|
+
for ep in self._endpoint_cache:
|
|
63
|
+
ep_min_version, ep_max_version = ep.version
|
|
64
|
+
|
|
65
|
+
version_is_ok = check_matching_version(
|
|
66
|
+
min=ep_min_version,
|
|
67
|
+
max=ep_max_version,
|
|
68
|
+
check=version
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
if endpoint_id == ep.id and version_is_ok:
|
|
72
|
+
return ep
|
|
73
|
+
|
|
74
|
+
raise ValueError(f"Endpoint with id: {endpoint_id} and version {version} is not available.")
|
|
75
|
+
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import Optional
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
8
|
+
OK as OK_V_2_8_2,
|
|
9
|
+
AgentCommand as AgentCommand_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def confirm_node_loss_agent_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
agent_id: 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
|
+
agent_id=agent_id,
|
|
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="agent/cluster/confirm_node_loss", 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
|
+
agent_id: str,
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> AgentCommand_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validates controller_id
|
|
56
|
+
if not controller_id:
|
|
57
|
+
raise ValueError("'controller_id' is required.")
|
|
58
|
+
|
|
59
|
+
# Validates agent_id
|
|
60
|
+
if not agent_id:
|
|
61
|
+
raise ValueError("'agent_id' 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 AgentCommand_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
agent_id=agent_id,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,77 @@
|
|
|
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
|
+
SubAgentsCommand as SubAgentsCommand_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def delete_subagent_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
subagent_id: 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
|
+
subagent_id=subagent_id,
|
|
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="agents/inventory/cluster/subagents/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
|
+
controller_id: str,
|
|
51
|
+
subagent_id: str,
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> SubAgentsCommand_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validates controller_id
|
|
56
|
+
if not controller_id:
|
|
57
|
+
raise ValueError("'controller_id' is required.")
|
|
58
|
+
|
|
59
|
+
# Validates subagent_id
|
|
60
|
+
if not subagent_id:
|
|
61
|
+
raise ValueError("'subagent_id' 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 SubAgentsCommand_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
subagent_ids=[
|
|
74
|
+
subagent_id
|
|
75
|
+
],
|
|
76
|
+
audit_log=res_audit_log
|
|
77
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
8
|
+
OK as OK_V_2_8_2,
|
|
9
|
+
DeploySubagentClusters as DeploySubagentClusters_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def delete_subagent_clusters_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
subagent_cluster_ids: 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
|
+
controller_id=controller_id,
|
|
26
|
+
subagent_cluster_ids=subagent_cluster_ids,
|
|
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="agents/cluster/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
|
+
controller_id: str,
|
|
51
|
+
subagent_cluster_ids: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> DeploySubagentClusters_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validates controller_id
|
|
56
|
+
if not controller_id:
|
|
57
|
+
raise ValueError("'controller_id' is required.")
|
|
58
|
+
|
|
59
|
+
# Validates subagent_cluster_id
|
|
60
|
+
if not subagent_cluster_ids:
|
|
61
|
+
raise ValueError("At least one id in 'subagent_cluster_ids' are 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 DeploySubagentClusters_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
subagent_cluster_ids=subagent_cluster_ids,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
8
|
+
OK as OK_V_2_8_2,
|
|
9
|
+
DeployClusterAgents as DeployClusterAgents_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def deploy_cluster_agents_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
agent_ids: 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
|
+
controller_id=controller_id,
|
|
26
|
+
agent_ids=agent_ids,
|
|
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="agents/inventory/cluster/deploy", 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
|
+
agent_ids: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> DeployClusterAgents_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validates controller_id
|
|
56
|
+
if not controller_id:
|
|
57
|
+
raise ValueError("'controller_id' is required.")
|
|
58
|
+
|
|
59
|
+
# Validates agent_ids
|
|
60
|
+
if not agent_ids:
|
|
61
|
+
raise ValueError("At least one agent id in 'agent_ids' 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 DeployClusterAgents_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
cluster_agent_ids=agent_ids,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
8
|
+
OK as OK_V_2_8_2,
|
|
9
|
+
DeployAgents as DeployAgents_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def deploy_standalone_agents_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
agent_ids: 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
|
+
controller_id=controller_id,
|
|
26
|
+
agent_ids=agent_ids,
|
|
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="agents/inventory/deploy", 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
|
+
agent_ids: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> DeployAgents_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validates controller_id
|
|
56
|
+
if not controller_id:
|
|
57
|
+
raise ValueError("'controller_id' is required.")
|
|
58
|
+
|
|
59
|
+
# Validates agent_ids
|
|
60
|
+
if not agent_ids:
|
|
61
|
+
raise ValueError("At least one id in 'agent_ids' are 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 DeployAgents_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
agent_ids=agent_ids,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|