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,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 deploy_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/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
|
+
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
|
+
DeployAgents as DeployAgents_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def disable_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/disable", 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 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 DeployAgents_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
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
|
+
SubAgentsCommand as SubAgentsCommand_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def disable_subagents_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
subagent_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_ids=subagent_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/subagents/disable", 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_ids: List[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_ids
|
|
60
|
+
if not subagent_ids:
|
|
61
|
+
raise ValueError("At least one agent id in 'subagent_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 SubAgentsCommand_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
subagent_ids=subagent_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 enable_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/enable", 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 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 DeployAgents_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
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
|
+
SubAgentsCommand as SubAgentsCommand_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def enable_subagents_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
controller_id: str,
|
|
19
|
+
subagent_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_ids=subagent_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/subagents/enable", 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_ids: List[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_ids
|
|
60
|
+
if not subagent_ids:
|
|
61
|
+
raise ValueError("At least one agent id in 'subagent_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 SubAgentsCommand_V_2_8_2(
|
|
72
|
+
controller_id=controller_id,
|
|
73
|
+
subagent_ids=subagent_ids,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import List, Literal, Optional, Union
|
|
3
|
+
|
|
4
|
+
from ...context import Context
|
|
5
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
6
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
7
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
8
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
9
|
+
AgentExportFilter as AgentExportFilter_V_2_8_2,
|
|
10
|
+
ExportFile as ExportFile_V_2_8_2,
|
|
11
|
+
ArchiveFormat as ArchiveFormat_V_2_8_2
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
from ....util.bytes_converter.bytes_to_file import bytes_to_file
|
|
15
|
+
from ....util.check_matching_version import check_matching_version
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def export_agents_action(
|
|
19
|
+
*,
|
|
20
|
+
context: Context,
|
|
21
|
+
out_path: Union[Path, str],
|
|
22
|
+
archive_format: Literal["ZIP", "TAR_GZ"],
|
|
23
|
+
agent_ids: List[str],
|
|
24
|
+
audit_log: Optional[AuditLog]
|
|
25
|
+
) -> bool:
|
|
26
|
+
|
|
27
|
+
# Normalize out_path
|
|
28
|
+
out_path = Path(out_path)
|
|
29
|
+
|
|
30
|
+
# Determine expected suffix from archive_format
|
|
31
|
+
expected_suffix = ".tar.gz" if archive_format == "TAR_GZ" else ".zip"
|
|
32
|
+
|
|
33
|
+
# Append suffix if missing or wrong
|
|
34
|
+
if not out_path.name.endswith((".zip", ".tar.gz")):
|
|
35
|
+
out_path = out_path.with_name(out_path.name + expected_suffix)
|
|
36
|
+
|
|
37
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
38
|
+
request_data = _build_v_2_8_2_request(
|
|
39
|
+
out_path=out_path,
|
|
40
|
+
archive_format=archive_format,
|
|
41
|
+
agent_ids=agent_ids,
|
|
42
|
+
audit_log=audit_log
|
|
43
|
+
)
|
|
44
|
+
else:
|
|
45
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
46
|
+
|
|
47
|
+
# Calls the dispatcher for the matching JOC version
|
|
48
|
+
result = context.joc_api.dispatch(endpoint_id="agents/export", call=EndpointCall(
|
|
49
|
+
http_service=context.http_service,
|
|
50
|
+
access_token=context.auth_provider.login(),
|
|
51
|
+
payload=request_data,
|
|
52
|
+
options=None,
|
|
53
|
+
))
|
|
54
|
+
|
|
55
|
+
if isinstance(result, bytes):
|
|
56
|
+
return bytes_to_file(data=result, out_path=Path(out_path))
|
|
57
|
+
|
|
58
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
59
|
+
|
|
60
|
+
#---------------------#
|
|
61
|
+
# Build 2.8.2 request #
|
|
62
|
+
#---------------------#
|
|
63
|
+
def _build_v_2_8_2_request(
|
|
64
|
+
*,
|
|
65
|
+
out_path: Union[Path, str],
|
|
66
|
+
archive_format: Literal["ZIP", "TAR_GZ"],
|
|
67
|
+
agent_ids: List[str],
|
|
68
|
+
audit_log: Optional[AuditLog]
|
|
69
|
+
) -> AgentExportFilter_V_2_8_2:
|
|
70
|
+
|
|
71
|
+
# Validate: out_path
|
|
72
|
+
if not out_path:
|
|
73
|
+
raise ValueError("'out_path' is required.")
|
|
74
|
+
|
|
75
|
+
# Validate: archive_format
|
|
76
|
+
if not archive_format:
|
|
77
|
+
raise ValueError("'archive_format' is required.")
|
|
78
|
+
|
|
79
|
+
# Validate: agent_ids
|
|
80
|
+
if not agent_ids:
|
|
81
|
+
raise ValueError("At least one agent id in 'agent_ids' is required.")
|
|
82
|
+
|
|
83
|
+
# Build: export_file
|
|
84
|
+
res_export_file = ExportFile_V_2_8_2(
|
|
85
|
+
filename=Path(out_path).name,
|
|
86
|
+
format=(ArchiveFormat_V_2_8_2(archive_format)) # Raises ValueError() if invalid.
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
# Build: Audit Log
|
|
90
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
91
|
+
ticket_link=audit_log.ticket_link,
|
|
92
|
+
comment=audit_log.comment,
|
|
93
|
+
time_spent=audit_log.time_spent
|
|
94
|
+
) if audit_log else None
|
|
95
|
+
|
|
96
|
+
# Result
|
|
97
|
+
return AgentExportFilter_V_2_8_2(
|
|
98
|
+
agent_ids=agent_ids,
|
|
99
|
+
export_file=res_export_file,
|
|
100
|
+
audit_log=res_audit_log
|
|
101
|
+
)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
from typing import Any, Dict, List
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
5
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
6
|
+
ReadAgentsV as ReadAgentsV_V_2_8_2,
|
|
7
|
+
AgentsV as AgentsV_V_2_8_2
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from ....util.check_matching_version import check_matching_version
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def get_agents_status_action(
|
|
14
|
+
*,
|
|
15
|
+
context: Context,
|
|
16
|
+
controller_id: str,
|
|
17
|
+
agent_ids: List[str]
|
|
18
|
+
) -> Dict[str, Any]:
|
|
19
|
+
|
|
20
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
21
|
+
request_data = _build_v_2_8_2_request(controller_id=controller_id, agent_ids=agent_ids)
|
|
22
|
+
else:
|
|
23
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
24
|
+
|
|
25
|
+
# Calls the dispatcher for the matching JOC version
|
|
26
|
+
result = context.joc_api.dispatch(endpoint_id="agents", call=EndpointCall(
|
|
27
|
+
http_service=context.http_service,
|
|
28
|
+
access_token=context.auth_provider.login(),
|
|
29
|
+
payload=request_data,
|
|
30
|
+
options=None,
|
|
31
|
+
))
|
|
32
|
+
|
|
33
|
+
if isinstance(result, AgentsV_V_2_8_2):
|
|
34
|
+
return result.model_dump(mode="json").get("agents") or {}
|
|
35
|
+
|
|
36
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
37
|
+
|
|
38
|
+
#---------------------#
|
|
39
|
+
# Build 2.8.2 request #
|
|
40
|
+
#---------------------#
|
|
41
|
+
def _build_v_2_8_2_request(*, controller_id: str, agent_ids: List[str]) -> ReadAgentsV_V_2_8_2:
|
|
42
|
+
# Validates controller_id
|
|
43
|
+
if not controller_id:
|
|
44
|
+
raise ValueError("'controller_id' is required.")
|
|
45
|
+
|
|
46
|
+
# Validate: agent_ids
|
|
47
|
+
if not agent_ids:
|
|
48
|
+
raise ValueError("At least one agent id in 'agent_ids' is required.")
|
|
49
|
+
|
|
50
|
+
# Result
|
|
51
|
+
return ReadAgentsV_V_2_8_2(
|
|
52
|
+
controller_id=controller_id,
|
|
53
|
+
agent_ids=agent_ids,
|
|
54
|
+
compact=False,
|
|
55
|
+
)
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
from typing import Any, Dict, List, Literal, Optional, Tuple, Union
|
|
3
|
+
|
|
4
|
+
from ...context import Context
|
|
5
|
+
from ....model.public.client.common.audit_log import AuditLog
|
|
6
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
7
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (OK as OK_V_2_8_2)
|
|
8
|
+
|
|
9
|
+
from ....util.detect_archive_type import detect_archive_type
|
|
10
|
+
from ....util.bytes_converter.files_to_bytes import files_to_bytes
|
|
11
|
+
from ....util.bytes_converter.bytes_to_archive_bytes import bytes_to_archive_bytes
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
from ....util.bytes_converter.read_bytes_archive_files_to_bytes import read_bytes_archive_files_to_bytes
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def import_agents_action(
|
|
17
|
+
*,
|
|
18
|
+
context: Context,
|
|
19
|
+
controller_id: str,
|
|
20
|
+
file_path: Union[Path, str],
|
|
21
|
+
archive_format: Literal["ZIP", "TAR_GZ"],
|
|
22
|
+
overwrite: bool,
|
|
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
|
+
options, data = _build_v_2_8_2_request(
|
|
28
|
+
controller_id=controller_id,
|
|
29
|
+
file_path=Path(file_path),
|
|
30
|
+
archive_format=archive_format,
|
|
31
|
+
overwrite=overwrite,
|
|
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="agents/import", call=EndpointCall(
|
|
39
|
+
http_service=context.http_service,
|
|
40
|
+
access_token=context.auth_provider.login(),
|
|
41
|
+
payload=data,
|
|
42
|
+
options=options,
|
|
43
|
+
))
|
|
44
|
+
|
|
45
|
+
if isinstance(result, OK_V_2_8_2):
|
|
46
|
+
return bool(result.ok)
|
|
47
|
+
|
|
48
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
49
|
+
|
|
50
|
+
#---------------------------------------#
|
|
51
|
+
# Build 2.8.2 request #
|
|
52
|
+
# Returns: [Formdata, List of archives] #
|
|
53
|
+
#---------------------------------------#
|
|
54
|
+
def _build_v_2_8_2_request(
|
|
55
|
+
*,
|
|
56
|
+
controller_id: str,
|
|
57
|
+
file_path: Path,
|
|
58
|
+
archive_format: Literal["ZIP", "TAR_GZ"],
|
|
59
|
+
overwrite: bool,
|
|
60
|
+
audit_log: Optional[AuditLog]
|
|
61
|
+
) -> Tuple[Dict[str, Any], bytes]:
|
|
62
|
+
|
|
63
|
+
# Validate: controller_id
|
|
64
|
+
if not controller_id:
|
|
65
|
+
raise ValueError("'controller_id' is required.")
|
|
66
|
+
|
|
67
|
+
# Validate: file_path
|
|
68
|
+
if not file_path.exists():
|
|
69
|
+
raise ValueError(f"File path does not exist: {file_path}")
|
|
70
|
+
|
|
71
|
+
# Validate: archive_format
|
|
72
|
+
if archive_format not in ("ZIP", "TAR_GZ"):
|
|
73
|
+
raise ValueError("'archive_format' must be 'ZIP' or 'TAR_GZ'.")
|
|
74
|
+
|
|
75
|
+
# Build: files_as_bytes
|
|
76
|
+
files_as_bytes = files_to_bytes(
|
|
77
|
+
file_path=file_path,
|
|
78
|
+
filter_suffixes=[".json", ".zip", ".tar.gz", ".tgz"]
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
if not files_as_bytes:
|
|
82
|
+
raise ValueError(
|
|
83
|
+
"No matching files found for import. "
|
|
84
|
+
"Expected: '*.json', '*.zip', '*.tar.gz', '*.tgz'."
|
|
85
|
+
)
|
|
86
|
+
|
|
87
|
+
# Build: res_files
|
|
88
|
+
files: List[Tuple[str, bytes]] = []
|
|
89
|
+
|
|
90
|
+
for path, file in files_as_bytes:
|
|
91
|
+
# Skips invalid filenames
|
|
92
|
+
if path.rsplit("/", 1)[-1].startswith((".", "_", "-")):
|
|
93
|
+
continue
|
|
94
|
+
|
|
95
|
+
archive_type = detect_archive_type(file)
|
|
96
|
+
|
|
97
|
+
if not archive_type and path.endswith(".json"):
|
|
98
|
+
files.append((path, file))
|
|
99
|
+
else:
|
|
100
|
+
arch_files = read_bytes_archive_files_to_bytes(
|
|
101
|
+
file=file,
|
|
102
|
+
filter_suffixes=[".json"]
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
if not arch_files:
|
|
106
|
+
continue
|
|
107
|
+
|
|
108
|
+
for arch_path, arch_file in arch_files:
|
|
109
|
+
# Skips invalid filenames
|
|
110
|
+
if arch_path.rsplit("/", 1)[-1].startswith((".", "_", "-")):
|
|
111
|
+
continue
|
|
112
|
+
|
|
113
|
+
# Removes archive suffix
|
|
114
|
+
path = path.split(".")[0]
|
|
115
|
+
|
|
116
|
+
new_path = path + "/" + arch_path
|
|
117
|
+
files.append((new_path, arch_file))
|
|
118
|
+
|
|
119
|
+
# Build: res_archive
|
|
120
|
+
res_archive = bytes_to_archive_bytes(archive_format=archive_format, files=files)
|
|
121
|
+
|
|
122
|
+
# Build: options
|
|
123
|
+
res_options: Dict[str, Any] = {
|
|
124
|
+
"format": archive_format,
|
|
125
|
+
"overwrite": overwrite,
|
|
126
|
+
"controller_id": controller_id
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
# Build: audit_log
|
|
130
|
+
if audit_log:
|
|
131
|
+
if audit_log.ticket_link:
|
|
132
|
+
res_options["audit_log_ticket_link"] = audit_log.ticket_link
|
|
133
|
+
if audit_log.comment:
|
|
134
|
+
res_options["audit_log_comment"] = audit_log.comment
|
|
135
|
+
if audit_log.time_spent:
|
|
136
|
+
res_options["audit_log_time_spent"] = audit_log.time_spent
|
|
137
|
+
|
|
138
|
+
# Result
|
|
139
|
+
return res_options, res_archive
|