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,82 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Optional, Union
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def decrypt_action(
|
|
8
|
+
java_bin_path: Union[Path, str],
|
|
9
|
+
key_file_path: Union[Path, str],
|
|
10
|
+
key_password: Optional[str],
|
|
11
|
+
in_string: Optional[str],
|
|
12
|
+
in_file: Optional[Union[Path, str]],
|
|
13
|
+
out_path: Optional[Union[Path, str]],
|
|
14
|
+
) -> str:
|
|
15
|
+
|
|
16
|
+
BASE_DIR = Path(__file__).resolve().parent
|
|
17
|
+
java_lib_path = (BASE_DIR.parent.parent.parent / "java" / "lib").resolve()
|
|
18
|
+
|
|
19
|
+
java_bin_path = Path(java_bin_path)
|
|
20
|
+
key_file_path = Path(key_file_path)
|
|
21
|
+
in_file = Path(in_file) if in_file else None
|
|
22
|
+
out_path = Path(out_path) if out_path else None
|
|
23
|
+
|
|
24
|
+
if not java_lib_path.exists():
|
|
25
|
+
raise ValueError(f"Java lib path not found: {java_lib_path}.")
|
|
26
|
+
|
|
27
|
+
if not key_file_path.exists():
|
|
28
|
+
raise ValueError(f"'key_file_path' does not exist: {key_file_path}.")
|
|
29
|
+
|
|
30
|
+
if not in_string and not in_file:
|
|
31
|
+
raise ValueError("Either 'in_string' or 'in_file' must be provided.")
|
|
32
|
+
|
|
33
|
+
if in_file:
|
|
34
|
+
if not in_file.exists():
|
|
35
|
+
raise ValueError(f"'in_file' does not exist: {in_file}.")
|
|
36
|
+
if in_file.is_dir():
|
|
37
|
+
raise ValueError("'in_file' must be a file path, not a directory.")
|
|
38
|
+
|
|
39
|
+
sep = ";" if os.name == "nt" else ":"
|
|
40
|
+
|
|
41
|
+
classpath = (
|
|
42
|
+
f"{java_lib_path}/patches/*{sep}"
|
|
43
|
+
f"{java_lib_path}/sos/*{sep}"
|
|
44
|
+
f"{java_lib_path}/3rd-party/*{sep}"
|
|
45
|
+
f"{java_lib_path}/stdout"
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
cmd = [
|
|
49
|
+
str(java_bin_path),
|
|
50
|
+
"-classpath",
|
|
51
|
+
classpath,
|
|
52
|
+
"com.sos.commons.encryption.executable.Decrypt",
|
|
53
|
+
f"--key={key_file_path}",
|
|
54
|
+
]
|
|
55
|
+
|
|
56
|
+
if key_password:
|
|
57
|
+
cmd.append(f"--key-password={key_password}")
|
|
58
|
+
|
|
59
|
+
if in_string:
|
|
60
|
+
# Removes "enc:" if present
|
|
61
|
+
clean_string = in_string.removeprefix("enc:")
|
|
62
|
+
cmd.append(f"--in={clean_string}")
|
|
63
|
+
|
|
64
|
+
if in_file:
|
|
65
|
+
cmd.append(f"--infile={in_file}")
|
|
66
|
+
|
|
67
|
+
if out_path:
|
|
68
|
+
if out_path.exists() and out_path.is_dir():
|
|
69
|
+
raise ValueError("'out_path' must be a file path, not a directory.")
|
|
70
|
+
cmd.append(f"--outfile={out_path}")
|
|
71
|
+
|
|
72
|
+
try:
|
|
73
|
+
result = subprocess.run(
|
|
74
|
+
cmd,
|
|
75
|
+
capture_output=True,
|
|
76
|
+
text=True,
|
|
77
|
+
check=True,
|
|
78
|
+
)
|
|
79
|
+
except subprocess.CalledProcessError as e:
|
|
80
|
+
raise RuntimeError(f"Decrypt failed: {e.stderr}")
|
|
81
|
+
|
|
82
|
+
return result.stdout.strip()
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import os
|
|
2
|
+
import subprocess
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Optional, Union
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def encrypt_action(
|
|
8
|
+
java_bin_path: Union[Path, str],
|
|
9
|
+
cert_file_path: Union[Path, str],
|
|
10
|
+
in_string: Optional[str] = None,
|
|
11
|
+
in_file: Optional[Union[Path, str]] = None,
|
|
12
|
+
out_path: Optional[Union[Path, str]] = None,
|
|
13
|
+
) -> str:
|
|
14
|
+
|
|
15
|
+
BASE_DIR = Path(__file__).resolve().parent
|
|
16
|
+
java_lib_path = (BASE_DIR.parent.parent.parent / "java" / "lib").resolve()
|
|
17
|
+
|
|
18
|
+
java_bin_path = Path(java_bin_path)
|
|
19
|
+
cert_file_path = Path(cert_file_path)
|
|
20
|
+
in_file = Path(in_file) if in_file else None
|
|
21
|
+
out_path = Path(out_path) if out_path else None
|
|
22
|
+
|
|
23
|
+
# --- Validate ---
|
|
24
|
+
if not java_lib_path.exists():
|
|
25
|
+
raise ValueError(f"Java lib path not found: {java_lib_path}.")
|
|
26
|
+
|
|
27
|
+
if not cert_file_path.exists():
|
|
28
|
+
raise ValueError(f"'cert_file_path' does not exist: {cert_file_path}.")
|
|
29
|
+
|
|
30
|
+
if not in_string and not in_file:
|
|
31
|
+
raise ValueError("Either 'in_string' or 'in_file' must be provided.")
|
|
32
|
+
|
|
33
|
+
if in_string and in_file:
|
|
34
|
+
raise ValueError("Only one of 'in_string' or 'in_file' may be provided.")
|
|
35
|
+
|
|
36
|
+
if in_file:
|
|
37
|
+
if not in_file.exists():
|
|
38
|
+
raise ValueError(f"'in_file' does not exist: {in_file}.")
|
|
39
|
+
if in_file.is_dir():
|
|
40
|
+
raise ValueError("'in_file' must be a file path, not a directory.")
|
|
41
|
+
|
|
42
|
+
sep = ";" if os.name == "nt" else ":"
|
|
43
|
+
|
|
44
|
+
classpath = (
|
|
45
|
+
f"{java_lib_path}/patches/*{sep}"
|
|
46
|
+
f"{java_lib_path}/sos/*{sep}"
|
|
47
|
+
f"{java_lib_path}/3rd-party/*{sep}"
|
|
48
|
+
f"{java_lib_path}/stdout"
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
cmd = [
|
|
52
|
+
str(java_bin_path),
|
|
53
|
+
"-classpath",
|
|
54
|
+
classpath,
|
|
55
|
+
"com.sos.commons.encryption.executable.Encrypt",
|
|
56
|
+
f"--cert={cert_file_path}",
|
|
57
|
+
]
|
|
58
|
+
|
|
59
|
+
# --- Input ---
|
|
60
|
+
if in_string:
|
|
61
|
+
cmd.append(f"--in={in_string}")
|
|
62
|
+
|
|
63
|
+
if in_file:
|
|
64
|
+
cmd.append(f"--infile={in_file}")
|
|
65
|
+
|
|
66
|
+
# --- Output ---
|
|
67
|
+
if out_path:
|
|
68
|
+
if out_path.exists() and out_path.is_dir():
|
|
69
|
+
raise ValueError("'out_path' must be a file path, not a directory.")
|
|
70
|
+
cmd.append(f"--outfile={out_path}")
|
|
71
|
+
|
|
72
|
+
# --- Execution ---
|
|
73
|
+
try:
|
|
74
|
+
result = subprocess.run(
|
|
75
|
+
cmd,
|
|
76
|
+
capture_output=True,
|
|
77
|
+
text=True,
|
|
78
|
+
check=True,
|
|
79
|
+
)
|
|
80
|
+
except subprocess.CalledProcessError as e:
|
|
81
|
+
raise RuntimeError(
|
|
82
|
+
f"Encrypt failed:\nSTDOUT:\n{e.stdout}\nSTDERR:\n{e.stderr}"
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
output = result.stdout.strip().split()[0]
|
|
86
|
+
|
|
87
|
+
return "enc:" + output
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
BlockedAccount as BlockedAccount_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def block_account_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
account_name: str,
|
|
19
|
+
comment: Optional[str],
|
|
20
|
+
audit_log: Optional[AuditLog]
|
|
21
|
+
) -> bool:
|
|
22
|
+
|
|
23
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
24
|
+
request_data = _build_v_2_8_2_request(
|
|
25
|
+
account_name=account_name,
|
|
26
|
+
comment=comment,
|
|
27
|
+
audit_log=audit_log
|
|
28
|
+
)
|
|
29
|
+
else:
|
|
30
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
31
|
+
|
|
32
|
+
# Calls the dispatcher for the matching JOC version
|
|
33
|
+
result = context.joc_api.dispatch(endpoint_id="iam/blockedAccount/store", 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
|
+
account_name: str,
|
|
51
|
+
comment: Optional[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> BlockedAccount_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validate: account_name
|
|
56
|
+
if not account_name:
|
|
57
|
+
raise ValueError("'account_name' is required.")
|
|
58
|
+
|
|
59
|
+
# Build: audit_log
|
|
60
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
61
|
+
ticket_link=audit_log.ticket_link,
|
|
62
|
+
comment=audit_log.comment,
|
|
63
|
+
time_spent=audit_log.time_spent
|
|
64
|
+
) if audit_log else None
|
|
65
|
+
|
|
66
|
+
# Result
|
|
67
|
+
return BlockedAccount_V_2_8_2(
|
|
68
|
+
account_name=account_name,
|
|
69
|
+
audit_log=res_audit_log,
|
|
70
|
+
comment=comment,
|
|
71
|
+
)
|
|
@@ -0,0 +1,96 @@
|
|
|
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
|
+
AccountChangePassword as AccountChangePassword_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def change_account_password_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
account_name: str,
|
|
20
|
+
account_password: str,
|
|
21
|
+
new_account_password: str,
|
|
22
|
+
force_password_change: 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
|
+
request_data = _build_v_2_8_2_request(
|
|
28
|
+
identity_service_name=identity_service_name,
|
|
29
|
+
account_name=account_name,
|
|
30
|
+
account_password=account_password,
|
|
31
|
+
new_account_password=new_account_password,
|
|
32
|
+
force_password_change=force_password_change,
|
|
33
|
+
audit_log=audit_log
|
|
34
|
+
)
|
|
35
|
+
else:
|
|
36
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
37
|
+
|
|
38
|
+
# Calls the dispatcher for the matching JOC version
|
|
39
|
+
result = context.joc_api.dispatch(endpoint_id="iam/account/changepassword", call=EndpointCall(
|
|
40
|
+
http_service=context.http_service,
|
|
41
|
+
access_token=context.auth_provider.login(),
|
|
42
|
+
payload=request_data,
|
|
43
|
+
options=None,
|
|
44
|
+
))
|
|
45
|
+
|
|
46
|
+
if isinstance(result, OK_V_2_8_2):
|
|
47
|
+
return bool(result.ok)
|
|
48
|
+
|
|
49
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
50
|
+
|
|
51
|
+
#---------------------#
|
|
52
|
+
# Build 2.8.2 request #
|
|
53
|
+
#---------------------#
|
|
54
|
+
def _build_v_2_8_2_request(
|
|
55
|
+
*,
|
|
56
|
+
identity_service_name: str,
|
|
57
|
+
account_name: str,
|
|
58
|
+
account_password: str,
|
|
59
|
+
new_account_password: str,
|
|
60
|
+
force_password_change: bool,
|
|
61
|
+
audit_log: Optional[AuditLog]
|
|
62
|
+
) -> AccountChangePassword_V_2_8_2:
|
|
63
|
+
|
|
64
|
+
# Validate: identity_service_name
|
|
65
|
+
if not identity_service_name:
|
|
66
|
+
raise ValueError("'identity_service_name' is required.")
|
|
67
|
+
|
|
68
|
+
# Validate: account_name
|
|
69
|
+
if not account_name:
|
|
70
|
+
raise ValueError("'account_name' is required.")
|
|
71
|
+
|
|
72
|
+
# Validate: account_password
|
|
73
|
+
if not account_password:
|
|
74
|
+
raise ValueError("'account_password' is required.")
|
|
75
|
+
|
|
76
|
+
# Validate: new_account_password
|
|
77
|
+
if not new_account_password:
|
|
78
|
+
raise ValueError("'new_account_password' is required.")
|
|
79
|
+
|
|
80
|
+
# Build: audit_log
|
|
81
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
82
|
+
ticket_link=audit_log.ticket_link,
|
|
83
|
+
comment=audit_log.comment,
|
|
84
|
+
time_spent=audit_log.time_spent
|
|
85
|
+
) if audit_log else None
|
|
86
|
+
|
|
87
|
+
# Result
|
|
88
|
+
return AccountChangePassword_V_2_8_2(
|
|
89
|
+
identity_service_name=identity_service_name,
|
|
90
|
+
account_name=account_name,
|
|
91
|
+
old_password=account_password,
|
|
92
|
+
password=new_account_password,
|
|
93
|
+
repeated_password=new_account_password,
|
|
94
|
+
force_password_change=force_password_change,
|
|
95
|
+
audit_log=res_audit_log
|
|
96
|
+
)
|
|
@@ -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
|
+
AccountNamesFilter as AccountNamesFilter_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def disable_accounts_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
account_names: List[str],
|
|
20
|
+
audit_log: Optional[AuditLog]
|
|
21
|
+
) -> bool:
|
|
22
|
+
|
|
23
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
24
|
+
request_data = _build_v_2_8_2_request(
|
|
25
|
+
identity_service_name=identity_service_name,
|
|
26
|
+
account_names=account_names,
|
|
27
|
+
audit_log=audit_log
|
|
28
|
+
)
|
|
29
|
+
else:
|
|
30
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
31
|
+
|
|
32
|
+
# Calls the dispatcher for the matching JOC version
|
|
33
|
+
result = context.joc_api.dispatch(endpoint_id="iam/accounts/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
|
+
identity_service_name: str,
|
|
51
|
+
account_names: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> AccountNamesFilter_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validate: identity_service_name
|
|
56
|
+
if not identity_service_name:
|
|
57
|
+
raise ValueError("'identity_service_name' is required.")
|
|
58
|
+
|
|
59
|
+
# Validate: account_name
|
|
60
|
+
if not account_names:
|
|
61
|
+
raise ValueError("At least one account name in 'account_names' is required.")
|
|
62
|
+
|
|
63
|
+
# Build: audit_log
|
|
64
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
65
|
+
ticket_link=audit_log.ticket_link,
|
|
66
|
+
comment=audit_log.comment,
|
|
67
|
+
time_spent=audit_log.time_spent
|
|
68
|
+
) if audit_log else None
|
|
69
|
+
|
|
70
|
+
# Result
|
|
71
|
+
return AccountNamesFilter_V_2_8_2(
|
|
72
|
+
identity_service_name=identity_service_name,
|
|
73
|
+
account_names=account_names,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,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
|
+
AccountNamesFilter as AccountNamesFilter_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def enable_accounts_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
account_names: List[str],
|
|
20
|
+
audit_log: Optional[AuditLog]
|
|
21
|
+
) -> bool:
|
|
22
|
+
|
|
23
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
24
|
+
request_data = _build_v_2_8_2_request(
|
|
25
|
+
identity_service_name=identity_service_name,
|
|
26
|
+
account_names=account_names,
|
|
27
|
+
audit_log=audit_log
|
|
28
|
+
)
|
|
29
|
+
else:
|
|
30
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
31
|
+
|
|
32
|
+
# Calls the dispatcher for the matching JOC version
|
|
33
|
+
result = context.joc_api.dispatch(endpoint_id="iam/accounts/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
|
+
identity_service_name: str,
|
|
51
|
+
account_names: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> AccountNamesFilter_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validate: identity_service_name
|
|
56
|
+
if not identity_service_name:
|
|
57
|
+
raise ValueError("'identity_service_name' is required.")
|
|
58
|
+
|
|
59
|
+
# Validate: account_name
|
|
60
|
+
if not account_names:
|
|
61
|
+
raise ValueError("At least one account name in 'account_names' is required.")
|
|
62
|
+
|
|
63
|
+
# Build: audit_log
|
|
64
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
65
|
+
ticket_link=audit_log.ticket_link,
|
|
66
|
+
comment=audit_log.comment,
|
|
67
|
+
time_spent=audit_log.time_spent
|
|
68
|
+
) if audit_log else None
|
|
69
|
+
|
|
70
|
+
# Result
|
|
71
|
+
return AccountNamesFilter_V_2_8_2(
|
|
72
|
+
identity_service_name=identity_service_name,
|
|
73
|
+
account_names=account_names,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
from typing import Any, Dict, 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
|
+
AccountFilter as AccountFilter_V_2_8_2,
|
|
8
|
+
Accounts as Accounts_V_2_8_2,
|
|
9
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_account_permissions_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
account_name: str,
|
|
20
|
+
audit_log: Optional[AuditLog]
|
|
21
|
+
) -> Dict[str, Any]:
|
|
22
|
+
|
|
23
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
24
|
+
request_data = _build_v_2_8_2_request(
|
|
25
|
+
identity_service_name=identity_service_name,
|
|
26
|
+
account_name=account_name,
|
|
27
|
+
audit_log=audit_log
|
|
28
|
+
)
|
|
29
|
+
else:
|
|
30
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
31
|
+
|
|
32
|
+
# Calls the dispatcher for the matching JOC version
|
|
33
|
+
result = context.joc_api.dispatch(endpoint_id="iam/account/permissions", 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, Accounts_V_2_8_2):
|
|
41
|
+
return result.model_dump(mode="json")
|
|
42
|
+
|
|
43
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
44
|
+
|
|
45
|
+
#---------------------#
|
|
46
|
+
# Build 2.8.2 request #
|
|
47
|
+
#---------------------#
|
|
48
|
+
def _build_v_2_8_2_request(
|
|
49
|
+
*,
|
|
50
|
+
identity_service_name: str,
|
|
51
|
+
account_name: str,
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> AccountFilter_V_2_8_2:
|
|
54
|
+
|
|
55
|
+
# Validate: identity_service_name
|
|
56
|
+
if not identity_service_name:
|
|
57
|
+
raise ValueError("'identity_service_name' is required.")
|
|
58
|
+
|
|
59
|
+
# Validate: account_name
|
|
60
|
+
if not account_name:
|
|
61
|
+
raise ValueError("'account_name' 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 AccountFilter_V_2_8_2(
|
|
72
|
+
identity_service_name=identity_service_name,
|
|
73
|
+
account_name=account_name,
|
|
74
|
+
audit_log=res_audit_log
|
|
75
|
+
)
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
from typing import List, Optional
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
5
|
+
from ....model.public.client.common.accounts import Account
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
AccountListFilter as AccountListFilter_V_2_8_2,
|
|
8
|
+
Accounts as Accounts_V_2_8_2
|
|
9
|
+
)
|
|
10
|
+
|
|
11
|
+
from ....util.check_matching_version import check_matching_version
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def get_accounts_action(
|
|
15
|
+
*,
|
|
16
|
+
context: Context,
|
|
17
|
+
identity_service_name: str,
|
|
18
|
+
filter_account_name: Optional[str],
|
|
19
|
+
filter_enabled: bool,
|
|
20
|
+
filter_disabled: bool
|
|
21
|
+
) -> List[Account]:
|
|
22
|
+
|
|
23
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
24
|
+
request_data = _build_v_2_8_2_request(
|
|
25
|
+
identity_service_name=identity_service_name,
|
|
26
|
+
filter_account_name=filter_account_name,
|
|
27
|
+
filter_enabled=filter_enabled,
|
|
28
|
+
filter_disabled=filter_disabled
|
|
29
|
+
)
|
|
30
|
+
else:
|
|
31
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
32
|
+
|
|
33
|
+
# Calls the dispatcher for the matching JOC version
|
|
34
|
+
result = context.joc_api.dispatch(endpoint_id="iam/accounts", call=EndpointCall(
|
|
35
|
+
http_service=context.http_service,
|
|
36
|
+
access_token=context.auth_provider.login(),
|
|
37
|
+
payload=request_data,
|
|
38
|
+
options=None,
|
|
39
|
+
))
|
|
40
|
+
|
|
41
|
+
if isinstance(result, Accounts_V_2_8_2):
|
|
42
|
+
return [
|
|
43
|
+
Account(
|
|
44
|
+
account_name=a.account_name,
|
|
45
|
+
disabled=a.disabled,
|
|
46
|
+
force_password_change=a.force_password_change,
|
|
47
|
+
identity_service_name=a.identity_service_name,
|
|
48
|
+
roles=a.roles
|
|
49
|
+
)
|
|
50
|
+
for a in result.account_items
|
|
51
|
+
] if result.account_items else []
|
|
52
|
+
|
|
53
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
54
|
+
|
|
55
|
+
#---------------------#
|
|
56
|
+
# Build 2.8.2 request #
|
|
57
|
+
#---------------------#
|
|
58
|
+
def _build_v_2_8_2_request(
|
|
59
|
+
*,
|
|
60
|
+
identity_service_name: str,
|
|
61
|
+
filter_account_name: Optional[str],
|
|
62
|
+
filter_enabled: bool,
|
|
63
|
+
filter_disabled: bool
|
|
64
|
+
) -> AccountListFilter_V_2_8_2:
|
|
65
|
+
|
|
66
|
+
# Validate: identity_service_name
|
|
67
|
+
if not identity_service_name:
|
|
68
|
+
raise ValueError("'identity_service_name' is required.")
|
|
69
|
+
|
|
70
|
+
# Result
|
|
71
|
+
return AccountListFilter_V_2_8_2(
|
|
72
|
+
account_name=filter_account_name,
|
|
73
|
+
disabled=filter_disabled,
|
|
74
|
+
enabled=filter_enabled,
|
|
75
|
+
identity_service_name=identity_service_name
|
|
76
|
+
)
|