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,76 @@
|
|
|
1
|
+
from datetime import datetime
|
|
2
|
+
from typing import List, Optional
|
|
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.public.client.common.accounts import BlockedAccount
|
|
8
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
9
|
+
BlockedAccountsFilter as BlockedAccountsFilter_V_2_8_2,
|
|
10
|
+
BlockedAccounts as BlockedAccounts_V_2_8_2,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
from ....util.check_matching_version import check_matching_version
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_blocked_accounts_action(
|
|
17
|
+
*,
|
|
18
|
+
context: Context,
|
|
19
|
+
filter_date_from: Optional[datetime],
|
|
20
|
+
filter_date_to: Optional[datetime],
|
|
21
|
+
filter_account_name: Optional[str]
|
|
22
|
+
) -> List[BlockedAccount]:
|
|
23
|
+
|
|
24
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
25
|
+
request_data = _build_v_2_8_2_request(
|
|
26
|
+
timezone=context.client_config.timezone,
|
|
27
|
+
filter_date_from=filter_date_from,
|
|
28
|
+
filter_date_to=filter_date_to,
|
|
29
|
+
filter_account_name=filter_account_name
|
|
30
|
+
)
|
|
31
|
+
else:
|
|
32
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
33
|
+
|
|
34
|
+
# Calls the dispatcher for the matching JOC version
|
|
35
|
+
result = context.joc_api.dispatch(endpoint_id="iam/blockedAccounts", call=EndpointCall(
|
|
36
|
+
http_service=context.http_service,
|
|
37
|
+
access_token=context.auth_provider.login(),
|
|
38
|
+
payload=request_data,
|
|
39
|
+
options=None,
|
|
40
|
+
))
|
|
41
|
+
|
|
42
|
+
if isinstance(result, BlockedAccounts_V_2_8_2):
|
|
43
|
+
return [
|
|
44
|
+
BlockedAccount(
|
|
45
|
+
account_name=a.account_name,
|
|
46
|
+
comment=a.comment,
|
|
47
|
+
blocked_since=a.since,
|
|
48
|
+
audit_log=AuditLog(
|
|
49
|
+
comment=a.audit_log.comment,
|
|
50
|
+
ticket_link=a.audit_log.ticket_link,
|
|
51
|
+
time_spent=a.audit_log.time_spent
|
|
52
|
+
) if a.audit_log else None
|
|
53
|
+
)
|
|
54
|
+
for a in result.blocked_accounts
|
|
55
|
+
] if result.blocked_accounts else []
|
|
56
|
+
|
|
57
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
58
|
+
|
|
59
|
+
#---------------------#
|
|
60
|
+
# Build 2.8.2 request #
|
|
61
|
+
#---------------------#
|
|
62
|
+
def _build_v_2_8_2_request(
|
|
63
|
+
*,
|
|
64
|
+
timezone: str,
|
|
65
|
+
filter_date_from: Optional[datetime],
|
|
66
|
+
filter_date_to: Optional[datetime],
|
|
67
|
+
filter_account_name: Optional[str]
|
|
68
|
+
) -> BlockedAccountsFilter_V_2_8_2:
|
|
69
|
+
|
|
70
|
+
# Result
|
|
71
|
+
return BlockedAccountsFilter_V_2_8_2(
|
|
72
|
+
time_zone=timezone,
|
|
73
|
+
date_from=filter_date_from,
|
|
74
|
+
date_to=filter_date_to,
|
|
75
|
+
account_name=filter_account_name
|
|
76
|
+
)
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
from typing import List, Optional, Union
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.filter.element.folder import Folder
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
FolderListFilter as FolderListFilter_V_2_8_2,
|
|
8
|
+
Folders as Folders_V_2_8_2,
|
|
9
|
+
FolderFilter as FolderFilter_V_2_8_2,
|
|
10
|
+
FolderItem as FolderItem_V_2_8_2
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
from ....util.check_matching_version import check_matching_version
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
def get_folder_permissions_action(
|
|
17
|
+
*,
|
|
18
|
+
context: Context,
|
|
19
|
+
identity_service_name: str,
|
|
20
|
+
folder_name: Optional[str],
|
|
21
|
+
role_name: str,
|
|
22
|
+
controller_id: str
|
|
23
|
+
) -> List[Folder]:
|
|
24
|
+
|
|
25
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
26
|
+
result = _build_v_2_8_2_request(
|
|
27
|
+
context=context,
|
|
28
|
+
identity_service_name=identity_service_name,
|
|
29
|
+
folder_name=folder_name,
|
|
30
|
+
role_name=role_name,
|
|
31
|
+
controller_id=controller_id
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
if isinstance(result, Folders_V_2_8_2):
|
|
35
|
+
return [
|
|
36
|
+
Folder(
|
|
37
|
+
folder_path=f.folder,
|
|
38
|
+
recursive=f.recursive or False
|
|
39
|
+
)
|
|
40
|
+
for f in result.folders
|
|
41
|
+
]
|
|
42
|
+
else:
|
|
43
|
+
return [
|
|
44
|
+
Folder(
|
|
45
|
+
folder_path=result.folder.folder,
|
|
46
|
+
recursive=result.folder.recursive or False
|
|
47
|
+
)
|
|
48
|
+
] if result.folder else []
|
|
49
|
+
else:
|
|
50
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
51
|
+
|
|
52
|
+
#---------------------#
|
|
53
|
+
# Build 2.8.2 request #
|
|
54
|
+
#---------------------#
|
|
55
|
+
def _build_v_2_8_2_request(
|
|
56
|
+
*,
|
|
57
|
+
context: Context,
|
|
58
|
+
identity_service_name: str,
|
|
59
|
+
folder_name: Optional[str],
|
|
60
|
+
role_name: str,
|
|
61
|
+
controller_id: str
|
|
62
|
+
) -> Union[Folders_V_2_8_2, FolderItem_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: role_name
|
|
69
|
+
if not role_name:
|
|
70
|
+
raise ValueError("'role_name' is required.")
|
|
71
|
+
|
|
72
|
+
if not folder_name:
|
|
73
|
+
# Build: folders_req
|
|
74
|
+
folders_req = FolderListFilter_V_2_8_2(
|
|
75
|
+
identity_service_name=identity_service_name,
|
|
76
|
+
role_name=role_name,
|
|
77
|
+
controller_id=controller_id
|
|
78
|
+
)
|
|
79
|
+
|
|
80
|
+
# Calls the dispatcher for the matching JOC version
|
|
81
|
+
folders_res = context.joc_api.dispatch(endpoint_id="iam/folders", call=EndpointCall(
|
|
82
|
+
http_service=context.http_service,
|
|
83
|
+
access_token=context.auth_provider.login(),
|
|
84
|
+
payload=folders_req,
|
|
85
|
+
options=None,
|
|
86
|
+
))
|
|
87
|
+
|
|
88
|
+
if not isinstance(folders_res, Folders_V_2_8_2):
|
|
89
|
+
raise RuntimeError(f"Unexpected response type: {type(folders_res).__name__}")
|
|
90
|
+
|
|
91
|
+
return folders_res
|
|
92
|
+
|
|
93
|
+
# Build: folder_req
|
|
94
|
+
folder_req = FolderFilter_V_2_8_2(
|
|
95
|
+
identity_service_name=identity_service_name,
|
|
96
|
+
role_name=role_name,
|
|
97
|
+
controller_id=controller_id,
|
|
98
|
+
folder_name=folder_name
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
# Calls the dispatcher for the matching JOC version
|
|
102
|
+
folder_res = context.joc_api.dispatch(endpoint_id="iam/folder", call=EndpointCall(
|
|
103
|
+
http_service=context.http_service,
|
|
104
|
+
access_token=context.auth_provider.login(),
|
|
105
|
+
payload=folder_req,
|
|
106
|
+
options=None,
|
|
107
|
+
))
|
|
108
|
+
|
|
109
|
+
if not isinstance(folder_res, FolderItem_V_2_8_2):
|
|
110
|
+
raise RuntimeError(f"Unexpected response type: {type(folder_res).__name__}")
|
|
111
|
+
|
|
112
|
+
return folder_res
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import json
|
|
2
|
+
from typing import Any, Dict, Literal
|
|
3
|
+
|
|
4
|
+
from ...context import Context
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
Configuration as Configuration_V_2_8_2,
|
|
8
|
+
ConfigurationType as ConfigurationType_V_2_8_2,
|
|
9
|
+
Configuration200 as Configuration200_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_identity_service_settings_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
identity_service_type: Literal["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]
|
|
20
|
+
) -> Dict[str, Any]:
|
|
21
|
+
|
|
22
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
23
|
+
request_data = _build_v_2_8_2_request(
|
|
24
|
+
identity_service_name=identity_service_name,
|
|
25
|
+
identity_service_type=identity_service_type
|
|
26
|
+
)
|
|
27
|
+
else:
|
|
28
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
29
|
+
|
|
30
|
+
# Calls the dispatcher for the matching JOC version
|
|
31
|
+
result = context.joc_api.dispatch(endpoint_id="configuration", call=EndpointCall(
|
|
32
|
+
http_service=context.http_service,
|
|
33
|
+
access_token=context.auth_provider.login(),
|
|
34
|
+
payload=request_data,
|
|
35
|
+
options=None,
|
|
36
|
+
))
|
|
37
|
+
|
|
38
|
+
if isinstance(result, Configuration200_V_2_8_2):
|
|
39
|
+
# model_dump(mode="json")
|
|
40
|
+
if not (result.configuration and result.configuration.configuration_item):
|
|
41
|
+
return {}
|
|
42
|
+
|
|
43
|
+
return json.loads(result.configuration.configuration_item)
|
|
44
|
+
|
|
45
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
46
|
+
|
|
47
|
+
#---------------------#
|
|
48
|
+
# Build 2.8.2 request #
|
|
49
|
+
#---------------------#
|
|
50
|
+
def _build_v_2_8_2_request(
|
|
51
|
+
*,
|
|
52
|
+
identity_service_name: str,
|
|
53
|
+
identity_service_type: Literal["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]
|
|
54
|
+
) -> Configuration_V_2_8_2:
|
|
55
|
+
|
|
56
|
+
# Validate: identity_service_name
|
|
57
|
+
if not identity_service_name:
|
|
58
|
+
raise ValueError("'identity_service_name' is required.")
|
|
59
|
+
|
|
60
|
+
# Validate: identity_service_type
|
|
61
|
+
if identity_service_type not in ["KEYCLOAK", "KEYCLOAK-JOC", "LDAP", "LDAP-JOC", "OIDC", "OIDC-JOC", "FIDO", "JOC", "CERTIFICATE"]:
|
|
62
|
+
raise ValueError(f"identity service type: {identity_service_type} is not supported.")
|
|
63
|
+
|
|
64
|
+
# Result
|
|
65
|
+
return Configuration_V_2_8_2(
|
|
66
|
+
id=0,
|
|
67
|
+
configuration_type=ConfigurationType_V_2_8_2.IAM,
|
|
68
|
+
name=identity_service_name,
|
|
69
|
+
object_type=identity_service_type
|
|
70
|
+
)
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
from typing import List, Optional, Union
|
|
2
|
+
|
|
3
|
+
from ...context import Context
|
|
4
|
+
from ....model.public.client.common.identity_service import IdentityService
|
|
5
|
+
from ....model.private.api.endpoint import EndpointCall
|
|
6
|
+
from ....model.private.http.joc.joc_v_2_8_2 import (
|
|
7
|
+
IdentityServiceFilter as IdentityServiceFilter_V_2_8_2,
|
|
8
|
+
IdentityService as IdentityService_V_2_8_2,
|
|
9
|
+
IdentityServices as IdentityServices_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_identity_services_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: Optional[str]
|
|
19
|
+
) -> List[IdentityService]:
|
|
20
|
+
|
|
21
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
22
|
+
result = _build_v_2_8_2_request(
|
|
23
|
+
context=context,
|
|
24
|
+
identity_service_name=identity_service_name
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
services: List[IdentityService] = []
|
|
28
|
+
|
|
29
|
+
if isinstance(result, IdentityServices_V_2_8_2):
|
|
30
|
+
if result.identity_service_items:
|
|
31
|
+
for s in result.identity_service_items:
|
|
32
|
+
services.append(IdentityService(
|
|
33
|
+
identity_service_name=s.identity_service_name,
|
|
34
|
+
identity_service_type=s.identity_service_type.value if s.identity_service_type else "UNKNOWN",
|
|
35
|
+
service_authentication_scheme=s.service_authentication_scheme.value,
|
|
36
|
+
second_factor=s.second_factor or False,
|
|
37
|
+
second_factor_identity_service_name=s.second_factor_identity_service_name,
|
|
38
|
+
disabled=s.disabled or False,
|
|
39
|
+
required=s.required or False,
|
|
40
|
+
ordering=s.ordering or 1
|
|
41
|
+
))
|
|
42
|
+
else:
|
|
43
|
+
services.append(IdentityService(
|
|
44
|
+
identity_service_name=result.identity_service_name,
|
|
45
|
+
identity_service_type=result.identity_service_type.value if result.identity_service_type else "UNKNOWN",
|
|
46
|
+
service_authentication_scheme=result.service_authentication_scheme.value,
|
|
47
|
+
second_factor=result.second_factor or False,
|
|
48
|
+
second_factor_identity_service_name=result.second_factor_identity_service_name,
|
|
49
|
+
disabled=result.disabled or False,
|
|
50
|
+
required=result.required or False,
|
|
51
|
+
ordering=result.ordering or 1
|
|
52
|
+
))
|
|
53
|
+
|
|
54
|
+
return services
|
|
55
|
+
else:
|
|
56
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
57
|
+
|
|
58
|
+
#---------------------#
|
|
59
|
+
# Build 2.8.2 request #
|
|
60
|
+
#---------------------#
|
|
61
|
+
def _build_v_2_8_2_request(
|
|
62
|
+
*,
|
|
63
|
+
context: Context,
|
|
64
|
+
identity_service_name: Optional[str]
|
|
65
|
+
) -> Union[IdentityServices_V_2_8_2, IdentityService_V_2_8_2]:
|
|
66
|
+
|
|
67
|
+
if not identity_service_name:
|
|
68
|
+
# Build: services_req
|
|
69
|
+
services_req = IdentityServiceFilter_V_2_8_2(
|
|
70
|
+
identity_service_name=None,
|
|
71
|
+
)
|
|
72
|
+
|
|
73
|
+
# Calls the dispatcher for the matching JOC version
|
|
74
|
+
services_res = context.joc_api.dispatch(endpoint_id="iam/identityservices", call=EndpointCall(
|
|
75
|
+
http_service=context.http_service,
|
|
76
|
+
access_token=context.auth_provider.login(),
|
|
77
|
+
payload=services_req,
|
|
78
|
+
options=None,
|
|
79
|
+
))
|
|
80
|
+
|
|
81
|
+
if not isinstance(services_res, IdentityServices_V_2_8_2):
|
|
82
|
+
raise RuntimeError(f"Unexpected response type: {type(services_res).__name__}")
|
|
83
|
+
|
|
84
|
+
return services_res
|
|
85
|
+
|
|
86
|
+
# Build: service_req
|
|
87
|
+
service_req = IdentityServiceFilter_V_2_8_2(
|
|
88
|
+
identity_service_name=identity_service_name
|
|
89
|
+
)
|
|
90
|
+
|
|
91
|
+
# Calls the dispatcher for the matching JOC version
|
|
92
|
+
service_res = context.joc_api.dispatch(endpoint_id="iam/identityservice", call=EndpointCall(
|
|
93
|
+
http_service=context.http_service,
|
|
94
|
+
access_token=context.auth_provider.login(),
|
|
95
|
+
payload=service_req,
|
|
96
|
+
options=None,
|
|
97
|
+
))
|
|
98
|
+
|
|
99
|
+
if not isinstance(service_res, IdentityService_V_2_8_2):
|
|
100
|
+
raise RuntimeError(f"Unexpected response type: {type(service_res).__name__}")
|
|
101
|
+
|
|
102
|
+
return service_res
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
from typing import List, Optional, Tuple, Union
|
|
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
|
+
PermissionListFilter as PermissionListFilter_V_2_8_2,
|
|
7
|
+
Permissions as Permissions_V_2_8_2,
|
|
8
|
+
PermissionItem as PermissionItem_V_2_8_2,
|
|
9
|
+
PermissionFilter as PermissionFilter_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def get_permissions_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
permission_path: Optional[str],
|
|
19
|
+
identity_service_name: str,
|
|
20
|
+
role_name: str,
|
|
21
|
+
controller_id: Optional[str],
|
|
22
|
+
without_excluded: bool
|
|
23
|
+
) -> List[Tuple[str, bool]]:
|
|
24
|
+
|
|
25
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
26
|
+
result = _build_v_2_8_2_request(
|
|
27
|
+
context=context,
|
|
28
|
+
permission_path=permission_path,
|
|
29
|
+
identity_service_name=identity_service_name,
|
|
30
|
+
role_name=role_name,
|
|
31
|
+
controller_id=controller_id
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
permissions: List[Tuple[str, bool]] = []
|
|
35
|
+
|
|
36
|
+
if isinstance(result, Permissions_V_2_8_2):
|
|
37
|
+
for p in result.permissions:
|
|
38
|
+
if p.excluded is True and without_excluded:
|
|
39
|
+
continue
|
|
40
|
+
|
|
41
|
+
permissions.append((p.permission_path, p.excluded or False))
|
|
42
|
+
else:
|
|
43
|
+
if result.permission:
|
|
44
|
+
if result.permission.excluded is True and without_excluded:
|
|
45
|
+
return permissions
|
|
46
|
+
|
|
47
|
+
permissions.append((result.permission.permission_path, result.permission.excluded or False))
|
|
48
|
+
|
|
49
|
+
return permissions
|
|
50
|
+
else:
|
|
51
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
52
|
+
|
|
53
|
+
#---------------------#
|
|
54
|
+
# Build 2.8.2 request #
|
|
55
|
+
#---------------------#
|
|
56
|
+
def _build_v_2_8_2_request(
|
|
57
|
+
*,
|
|
58
|
+
context: Context,
|
|
59
|
+
permission_path: Optional[str],
|
|
60
|
+
identity_service_name: str,
|
|
61
|
+
role_name: str,
|
|
62
|
+
controller_id: Optional[str]
|
|
63
|
+
) -> Union[PermissionItem_V_2_8_2, Permissions_V_2_8_2]:
|
|
64
|
+
|
|
65
|
+
# Validate: identity_service_name
|
|
66
|
+
if not identity_service_name:
|
|
67
|
+
raise ValueError("'identity_service_name' is required.")
|
|
68
|
+
|
|
69
|
+
# Validate: role_name
|
|
70
|
+
if not role_name:
|
|
71
|
+
raise ValueError("'role_name' is required.")
|
|
72
|
+
|
|
73
|
+
if not permission_path:
|
|
74
|
+
# Build: permissions_req
|
|
75
|
+
permissions_req = PermissionListFilter_V_2_8_2(
|
|
76
|
+
identity_service_name=identity_service_name,
|
|
77
|
+
role_name=role_name,
|
|
78
|
+
controller_id=controller_id
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
# Calls the dispatcher for the matching JOC version
|
|
82
|
+
permissions_res = context.joc_api.dispatch(endpoint_id="iam/permissions", call=EndpointCall(
|
|
83
|
+
http_service=context.http_service,
|
|
84
|
+
access_token=context.auth_provider.login(),
|
|
85
|
+
payload=permissions_req,
|
|
86
|
+
options=None,
|
|
87
|
+
))
|
|
88
|
+
|
|
89
|
+
if not isinstance(permissions_res, Permissions_V_2_8_2):
|
|
90
|
+
raise RuntimeError(f"Unexpected response type: {type(permissions_res).__name__}")
|
|
91
|
+
|
|
92
|
+
return permissions_res
|
|
93
|
+
|
|
94
|
+
# Build: permission_req
|
|
95
|
+
permission_req = PermissionFilter_V_2_8_2(
|
|
96
|
+
identity_service_name=identity_service_name,
|
|
97
|
+
role_name=role_name,
|
|
98
|
+
controller_id=controller_id,
|
|
99
|
+
permission_path=permission_path
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
# Calls the dispatcher for the matching JOC version
|
|
103
|
+
permission_res = context.joc_api.dispatch(endpoint_id="iam/permission", call=EndpointCall(
|
|
104
|
+
http_service=context.http_service,
|
|
105
|
+
access_token=context.auth_provider.login(),
|
|
106
|
+
payload=permission_req,
|
|
107
|
+
options=None,
|
|
108
|
+
))
|
|
109
|
+
|
|
110
|
+
if not isinstance(permission_res, PermissionItem_V_2_8_2):
|
|
111
|
+
raise RuntimeError(f"Unexpected response type: {type(permission_res).__name__}")
|
|
112
|
+
|
|
113
|
+
return permission_res
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
from typing import 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
|
+
RoleListFilter as RoleListFilter_V_2_8_2,
|
|
7
|
+
Roles as Roles_V_2_8_2
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
from ....util.check_matching_version import check_matching_version
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def get_roles_action(
|
|
14
|
+
*,
|
|
15
|
+
context: Context,
|
|
16
|
+
identity_service_name: str
|
|
17
|
+
) -> List[str]:
|
|
18
|
+
|
|
19
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
20
|
+
request_data = _build_v_2_8_2_request(
|
|
21
|
+
identity_service_name=identity_service_name
|
|
22
|
+
)
|
|
23
|
+
else:
|
|
24
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
25
|
+
|
|
26
|
+
# Calls the dispatcher for the matching JOC version
|
|
27
|
+
result = context.joc_api.dispatch(endpoint_id="iam/roles", call=EndpointCall(
|
|
28
|
+
http_service=context.http_service,
|
|
29
|
+
access_token=context.auth_provider.login(),
|
|
30
|
+
payload=request_data,
|
|
31
|
+
options=None,
|
|
32
|
+
))
|
|
33
|
+
|
|
34
|
+
if isinstance(result, Roles_V_2_8_2):
|
|
35
|
+
return [
|
|
36
|
+
r.role_name
|
|
37
|
+
for r in result.roles
|
|
38
|
+
] if result.roles else []
|
|
39
|
+
|
|
40
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
41
|
+
|
|
42
|
+
#---------------------#
|
|
43
|
+
# Build 2.8.2 request #
|
|
44
|
+
#---------------------#
|
|
45
|
+
def _build_v_2_8_2_request(
|
|
46
|
+
*,
|
|
47
|
+
identity_service_name: str
|
|
48
|
+
) -> RoleListFilter_V_2_8_2:
|
|
49
|
+
|
|
50
|
+
# Validate: identity_service_name
|
|
51
|
+
if not identity_service_name:
|
|
52
|
+
raise ValueError("'identity_service_name' is required.")
|
|
53
|
+
|
|
54
|
+
# Result
|
|
55
|
+
return RoleListFilter_V_2_8_2(
|
|
56
|
+
identity_service_name=identity_service_name
|
|
57
|
+
)
|
|
@@ -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
|
+
AccountsFilter as AccountsFilter_V_2_8_2,
|
|
8
|
+
AuditParams as AuditParams_V_2_8_2,
|
|
9
|
+
OK as OK_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def remove_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/delete", call=EndpointCall(
|
|
34
|
+
http_service=context.http_service,
|
|
35
|
+
access_token=context.auth_provider.login(),
|
|
36
|
+
payload=request_data,
|
|
37
|
+
options=None,
|
|
38
|
+
))
|
|
39
|
+
|
|
40
|
+
if isinstance(result, OK_V_2_8_2):
|
|
41
|
+
return bool(result.ok)
|
|
42
|
+
|
|
43
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
44
|
+
|
|
45
|
+
#---------------------#
|
|
46
|
+
# Build 2.8.2 request #
|
|
47
|
+
#---------------------#
|
|
48
|
+
def _build_v_2_8_2_request(
|
|
49
|
+
*,
|
|
50
|
+
identity_service_name: str,
|
|
51
|
+
account_names: List[str],
|
|
52
|
+
audit_log: Optional[AuditLog]
|
|
53
|
+
) -> AccountsFilter_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_names
|
|
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 AccountsFilter_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,91 @@
|
|
|
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
|
+
FoldersFilter as FoldersFilter_V_2_8_2
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
from ....util.check_matching_version import check_matching_version
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def remove_folder_permissions_action(
|
|
16
|
+
*,
|
|
17
|
+
context: Context,
|
|
18
|
+
identity_service_name: str,
|
|
19
|
+
role_name: str,
|
|
20
|
+
controller_id: str,
|
|
21
|
+
folder_names: List[str],
|
|
22
|
+
audit_log: Optional[AuditLog]
|
|
23
|
+
) -> bool:
|
|
24
|
+
|
|
25
|
+
if check_matching_version(min="2.6.5", max="2.8.3", check=context.version):
|
|
26
|
+
request_data = _build_v_2_8_2_request(
|
|
27
|
+
identity_service_name=identity_service_name,
|
|
28
|
+
role_name=role_name,
|
|
29
|
+
controller_id=controller_id,
|
|
30
|
+
folder_names=folder_names,
|
|
31
|
+
audit_log=audit_log
|
|
32
|
+
)
|
|
33
|
+
else:
|
|
34
|
+
raise RuntimeError(f"Version {context.version} is not compatible with building the request.")
|
|
35
|
+
|
|
36
|
+
# Calls the dispatcher for the matching JOC version
|
|
37
|
+
result = context.joc_api.dispatch(endpoint_id="iam/folders/delete", call=EndpointCall(
|
|
38
|
+
http_service=context.http_service,
|
|
39
|
+
access_token=context.auth_provider.login(),
|
|
40
|
+
payload=request_data,
|
|
41
|
+
options=None,
|
|
42
|
+
))
|
|
43
|
+
|
|
44
|
+
if isinstance(result, OK_V_2_8_2):
|
|
45
|
+
return bool(result.ok)
|
|
46
|
+
|
|
47
|
+
raise RuntimeError(f"Unexpected response type: {type(result).__name__}")
|
|
48
|
+
|
|
49
|
+
#---------------------#
|
|
50
|
+
# Build 2.8.2 request #
|
|
51
|
+
#---------------------#
|
|
52
|
+
def _build_v_2_8_2_request(
|
|
53
|
+
*,
|
|
54
|
+
identity_service_name: str,
|
|
55
|
+
role_name: str,
|
|
56
|
+
controller_id: str,
|
|
57
|
+
folder_names: List[str],
|
|
58
|
+
audit_log: Optional[AuditLog]
|
|
59
|
+
) -> FoldersFilter_V_2_8_2:
|
|
60
|
+
|
|
61
|
+
# Validate: identity_service_name
|
|
62
|
+
if not identity_service_name:
|
|
63
|
+
raise ValueError("'identity_service_name' is required.")
|
|
64
|
+
|
|
65
|
+
# Validate: role_name
|
|
66
|
+
if not role_name:
|
|
67
|
+
raise ValueError("'role_name' is required.")
|
|
68
|
+
|
|
69
|
+
# Validate: controller_id
|
|
70
|
+
if not controller_id:
|
|
71
|
+
raise ValueError("'controller_id' is required.")
|
|
72
|
+
|
|
73
|
+
# Validate: folder_names
|
|
74
|
+
if not folder_names:
|
|
75
|
+
raise ValueError("At least one folder name in 'folder_names' is required.")
|
|
76
|
+
|
|
77
|
+
# Build: audit_log
|
|
78
|
+
res_audit_log = AuditParams_V_2_8_2(
|
|
79
|
+
ticket_link=audit_log.ticket_link,
|
|
80
|
+
comment=audit_log.comment,
|
|
81
|
+
time_spent=audit_log.time_spent
|
|
82
|
+
) if audit_log else None
|
|
83
|
+
|
|
84
|
+
# Result
|
|
85
|
+
return FoldersFilter_V_2_8_2(
|
|
86
|
+
identity_service_name=identity_service_name,
|
|
87
|
+
role_name=role_name,
|
|
88
|
+
controller_id=controller_id,
|
|
89
|
+
folder_names=folder_names,
|
|
90
|
+
audit_log=res_audit_log
|
|
91
|
+
)
|