Py4HEAppE 1.0.0__tar.gz
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.
- py4heappe-1.0.0/.gitignore +15 -0
- py4heappe-1.0.0/.gitlab/stages/.check.yml +19 -0
- py4heappe-1.0.0/.gitlab/stages/.publish.yml +31 -0
- py4heappe-1.0.0/.gitlab/stages/.release.yml +105 -0
- py4heappe-1.0.0/.gitlab-ci.yml +14 -0
- py4heappe-1.0.0/CHANGELOG.md +10 -0
- py4heappe-1.0.0/LICENSE +20 -0
- py4heappe-1.0.0/PKG-INFO +147 -0
- py4heappe-1.0.0/README.md +122 -0
- py4heappe-1.0.0/docs/examples/example.py +278 -0
- py4heappe-1.0.0/docs/imgs/logo.png +0 -0
- py4heappe-1.0.0/pyproject.toml +29 -0
- py4heappe-1.0.0/requirements.txt +8 -0
- py4heappe-1.0.0/setup.cfg +4 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/PKG-INFO +147 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/SOURCES.txt +196 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/dependency_links.txt +1 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/entry_points.txt +2 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/requires.txt +8 -0
- py4heappe-1.0.0/src/Py4HEAppE.egg-info/top_level.txt +3 -0
- py4heappe-1.0.0/src/__init__.py +1 -0
- py4heappe-1.0.0/src/py4heappe/__init__.py +1 -0
- py4heappe-1.0.0/src/py4heappe/cli/__init__.py +1 -0
- py4heappe-1.0.0/src/py4heappe/cli/auth.py +153 -0
- py4heappe-1.0.0/src/py4heappe/cli/command_template.py +370 -0
- py4heappe-1.0.0/src/py4heappe/cli/configuration.py +65 -0
- py4heappe-1.0.0/src/py4heappe/cli/information.py +163 -0
- py4heappe-1.0.0/src/py4heappe/cli/job_management.py +211 -0
- py4heappe-1.0.0/src/py4heappe/cli/report.py +173 -0
- py4heappe-1.0.0/src/py4heappe/core/__init__.py +167 -0
- py4heappe-1.0.0/src/py4heappe/core/api/__init__.py +12 -0
- py4heappe-1.0.0/src/py4heappe/core/api/cluster_information_api.py +308 -0
- py4heappe-1.0.0/src/py4heappe/core/api/data_transfer_api.py +405 -0
- py4heappe-1.0.0/src/py4heappe/core/api/file_transfer_api.py +498 -0
- py4heappe-1.0.0/src/py4heappe/core/api/job_management_api.py +866 -0
- py4heappe-1.0.0/src/py4heappe/core/api/job_reporting_api.py +692 -0
- py4heappe-1.0.0/src/py4heappe/core/api/management_api.py +2540 -0
- py4heappe-1.0.0/src/py4heappe/core/api/user_and_limitation_management_api.py +676 -0
- py4heappe-1.0.0/src/py4heappe/core/api_client.py +632 -0
- py4heappe-1.0.0/src/py4heappe/core/base/__init__.py +1 -0
- py4heappe-1.0.0/src/py4heappe/core/base/exceptions.py +41 -0
- py4heappe-1.0.0/src/py4heappe/core/base/logger.py +11 -0
- py4heappe-1.0.0/src/py4heappe/core/base/utils.py +43 -0
- py4heappe-1.0.0/src/py4heappe/core/configuration.py +247 -0
- py4heappe-1.0.0/src/py4heappe/core/models/__init__.py +155 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user.py +398 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_group.py +268 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role.py +242 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role_ext.py +138 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role_type.py +95 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_type.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_user_group_role.py +320 -0
- py4heappe-1.0.0/src/py4heappe/core/models/allocated_nodes_ips_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authenticate_lexis_token_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_digital_signature_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_open_id_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_open_id_open_stack_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_password_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/authentication_credentials.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/bad_request_result.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cancel_job_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster.py +478 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_authentication_credentials.py +375 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_authentication_credentials_auth_type.py +97 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_connection_protocol.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_detailed_report_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_init_report_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type.py +528 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_detailed_report_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_ext.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_for_task_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_report_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_requested_group.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_resource_usage_ext.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_usage_ext.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_project.py +347 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_project_credential.py +294 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_proxy_connection.py +243 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_proxy_connection_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/cluster_report_ext.py +215 -0
- py4heappe-1.0.0/src/py4heappe/core/models/command_template.py +557 -0
- py4heappe-1.0.0/src/py4heappe/core/models/command_template_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter.py +347 -0
- py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter_value_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/contact.py +269 -0
- py4heappe-1.0.0/src/py4heappe/core/models/copy_job_data_from_temp_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/copy_job_data_to_temp_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_command_inner_template_parameter_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_from_generic_model.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_model.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_parameter_model.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_job_by_project_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_project_assignment_to_cluster_model.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_project_model.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_secure_shell_key_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/create_secure_shell_key_model_obsolete.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/current_cluster_node_usage_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/current_info_for_job_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/data_transfer_method_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/delete_job_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/deployment_type_ext.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/digital_signature_credentials_ext.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/download_file_from_cluster_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/download_parts_of_job_files_from_cluster_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/end_data_transfer_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/end_file_transfer_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/environment_variable_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/extended_command_template_ext.py +370 -0
- py4heappe-1.0.0/src/py4heappe/core/models/extended_command_template_parameter_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/extended_project_info_ext.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_information_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_cipher_type.py +94 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_cipher_type_ext.py +93 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_key_credentials_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_method.py +294 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_method_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_protocol.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_protocol_ext.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/get_command_template_parameters_name_model.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/get_current_usage_and_limitations_for_current_user_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/get_data_transfer_method_model.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/get_file_transfer_method_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/http_get_to_job_node_model.py +241 -0
- py4heappe-1.0.0/src/py4heappe/core/models/http_header_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/http_post_to_job_node_model.py +267 -0
- py4heappe-1.0.0/src/py4heappe/core/models/initialize_cluster_script_directory_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/instance_information_ext.py +344 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_detailed_report_ext.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_file_content_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_report_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_specification_by_project_ext.py +448 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_specification_ext.py +448 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_state_aggregation_report_ext.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/job_state_ext.py +96 -0
- py4heappe-1.0.0/src/py4heappe/core/models/lexis_credentials_ext.py +137 -0
- py4heappe-1.0.0/src/py4heappe/core/models/list_changed_files_for_job_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/list_jobs_for_current_user_model.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_from_generic_model.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_model.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_parameter_model.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/modify_project_assignment_to_cluster_model.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/modify_project_model.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/node_used_cores_and_limitation_ext.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/open_id_credentials_ext.py +137 -0
- py4heappe-1.0.0/src/py4heappe/core/models/open_stack_application_credentials_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/password_credentials_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/problem_details.py +89 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project.py +482 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_contact.py +215 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_detailed_report_ext.py +292 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_ext.py +266 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_for_task_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_list_report_ext.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_reference_ext.py +137 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_report_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/project_resource_usage_ext.py +266 -0
- py4heappe-1.0.0/src/py4heappe/core/models/proxy_type.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/proxy_type_ext.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/public_key_ext.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/recreate_secure_shell_key_model.py +214 -0
- py4heappe-1.0.0/src/py4heappe/core/models/regenerate_secure_shell_key_model.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/regenerate_secure_shell_key_model_obsolete.py +188 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_command_template_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_command_template_parameter_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_project_assignment_to_cluster_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_project_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_secure_shell_key_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/remove_secure_shell_key_model_obsolete.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/resource_allocation_type_ext.py +91 -0
- py4heappe-1.0.0/src/py4heappe/core/models/resource_limitation_ext.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/resource_usage_ext.py +163 -0
- py4heappe-1.0.0/src/py4heappe/core/models/scheduler_type.py +92 -0
- py4heappe-1.0.0/src/py4heappe/core/models/ssh_key_user_credentials_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/submit_job_model.py +136 -0
- py4heappe-1.0.0/src/py4heappe/core/models/submitted_job_info_ext.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/submitted_task_info_ext.py +370 -0
- py4heappe-1.0.0/src/py4heappe/core/models/synchronizable_files_ext.py +92 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_detailed_report_ext.py +318 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_file_offset_ext.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_paralization_parameter_ext.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_priority_ext.py +97 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_report_ext.py +266 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_specification_ext.py +682 -0
- py4heappe-1.0.0/src/py4heappe/core/models/task_state_ext.py +95 -0
- py4heappe-1.0.0/src/py4heappe/core/models/test_cluster_access_for_account_model.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/test_cluster_access_for_account_model_obsolete.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/models/unauthorized_result.py +110 -0
- py4heappe-1.0.0/src/py4heappe/core/models/usage_type.py +90 -0
- py4heappe-1.0.0/src/py4heappe/core/models/usage_type_ext.py +90 -0
- py4heappe-1.0.0/src/py4heappe/core/models/user_group_detailed_report_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/user_group_list_report_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/user_group_report_ext.py +240 -0
- py4heappe-1.0.0/src/py4heappe/core/models/version_information_ext.py +162 -0
- py4heappe-1.0.0/src/py4heappe/core/rest.py +311 -0
- py4heappe-1.0.0/src/py4heappe_cli.py +22 -0
- py4heappe-1.0.0/tests/__init__.py +1 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Visual Studio 2015 cache/options directory
|
|
2
|
+
.vs/
|
|
3
|
+
build/
|
|
4
|
+
dist/
|
|
5
|
+
py4heappe.egg-info/
|
|
6
|
+
.vscode
|
|
7
|
+
.idea/
|
|
8
|
+
__pycache__
|
|
9
|
+
.env
|
|
10
|
+
lexis_logs.log
|
|
11
|
+
py4heappe.log
|
|
12
|
+
UNKNOWN.egg-info/dependency_links.txt
|
|
13
|
+
UNKNOWN.egg-info/PKG-INFO
|
|
14
|
+
UNKNOWN.egg-info/SOURCES.txt
|
|
15
|
+
UNKNOWN.egg-info/top_level.txt
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
## CHECK STAGE
|
|
2
|
+
|
|
3
|
+
check_changelog:
|
|
4
|
+
image: ${RELEASE_CLI_IMAGE}
|
|
5
|
+
stage: check
|
|
6
|
+
script:
|
|
7
|
+
- |
|
|
8
|
+
if git diff --name-only HEAD~1 HEAD | grep -q "CHANGELOG.md"; then
|
|
9
|
+
echo "CHANGELOG.md was modified."
|
|
10
|
+
else
|
|
11
|
+
echo "CHANGELOG.md was not modified."
|
|
12
|
+
exit 1
|
|
13
|
+
fi
|
|
14
|
+
tags:
|
|
15
|
+
- Docker
|
|
16
|
+
- Centos9
|
|
17
|
+
- IT4I_Network
|
|
18
|
+
only:
|
|
19
|
+
- master
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
## PUBLISH STAGE
|
|
2
|
+
|
|
3
|
+
publish_package:
|
|
4
|
+
stage: publish
|
|
5
|
+
image: python:3.11
|
|
6
|
+
needs:
|
|
7
|
+
- job: push_to_github_job
|
|
8
|
+
before_script:
|
|
9
|
+
- apt-get update
|
|
10
|
+
- apt-get install -y curl
|
|
11
|
+
- curl -s https://deb.nodesource.com/setup_18.x | bash
|
|
12
|
+
- pip install --upgrade awscli
|
|
13
|
+
- pip install GitPython
|
|
14
|
+
- pip install virtualenv
|
|
15
|
+
- virtualenv venv
|
|
16
|
+
- source venv/bin/activate
|
|
17
|
+
script:
|
|
18
|
+
- pip install build
|
|
19
|
+
- pip install twine
|
|
20
|
+
- python -m build
|
|
21
|
+
- TWINE_USERNAME=__token__ TWINE_PASSWORD=${PYPI_TOKEN} python -m twine upload --repository pypi dist/*
|
|
22
|
+
- TWINE_USERNAME=gitlab-ci-token TWINE_PASSWORD=${CI_JOB_TOKEN} python -m twine upload --skip-existing --repository-url ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/pypi dist/*
|
|
23
|
+
tags:
|
|
24
|
+
- Docker
|
|
25
|
+
- Centos9
|
|
26
|
+
- IT4I_Network
|
|
27
|
+
artifacts:
|
|
28
|
+
paths:
|
|
29
|
+
- dist/*.whl
|
|
30
|
+
only:
|
|
31
|
+
- master
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# RELEASE STAGE
|
|
2
|
+
|
|
3
|
+
release_msg_job:
|
|
4
|
+
stage: release
|
|
5
|
+
image: alpine:latest
|
|
6
|
+
needs:
|
|
7
|
+
- job: check_changelog
|
|
8
|
+
script:
|
|
9
|
+
- TAG_NAME=$(awk '/^## /{sub(/^## /, ""); print; exit}' CHANGELOG.md)
|
|
10
|
+
- TAG_MESSAGE=$(awk '/^### /{flag=1} /^## /{if(flag) exit} flag' CHANGELOG.md)
|
|
11
|
+
- TAG_MESSAGE_BASE64=$(echo -n "${TAG_MESSAGE}" | base64 -w 0)
|
|
12
|
+
- echo "TAG_NAME=${TAG_NAME}" >> release_variables.env
|
|
13
|
+
- echo "TAG_MESSAGE=${TAG_MESSAGE_BASE64}" >> release_variables.env
|
|
14
|
+
before_script:
|
|
15
|
+
- apk update && apk upgrade
|
|
16
|
+
variables:
|
|
17
|
+
GIT_STRATEGY: clone
|
|
18
|
+
artifacts:
|
|
19
|
+
reports:
|
|
20
|
+
dotenv: release_variables.env
|
|
21
|
+
tags:
|
|
22
|
+
- Docker
|
|
23
|
+
- Centos9
|
|
24
|
+
- IT4I_Network
|
|
25
|
+
only:
|
|
26
|
+
- master
|
|
27
|
+
|
|
28
|
+
release_job:
|
|
29
|
+
stage: release
|
|
30
|
+
image: registry.gitlab.com/gitlab-org/release-cli:latest
|
|
31
|
+
needs:
|
|
32
|
+
- job: release_msg_job
|
|
33
|
+
artifacts: true
|
|
34
|
+
script:
|
|
35
|
+
- echo "Creating RELEASE \"$TAG_NAME"\"
|
|
36
|
+
- git config --global user.name "HEAppE Pipeline"
|
|
37
|
+
- git config --global user.email "support.heappe@it4i.cz"
|
|
38
|
+
- git checkout master
|
|
39
|
+
- git status
|
|
40
|
+
before_script:
|
|
41
|
+
- apk update && apk upgrade
|
|
42
|
+
- apk add git
|
|
43
|
+
release:
|
|
44
|
+
name: '${TAG_NAME}'
|
|
45
|
+
description: '$(echo "${TAG_MESSAGE}" | base64 -d)'
|
|
46
|
+
tag_name: '${TAG_NAME}'
|
|
47
|
+
variables:
|
|
48
|
+
GIT_STRATEGY: clone
|
|
49
|
+
tags:
|
|
50
|
+
- Docker
|
|
51
|
+
- Centos9
|
|
52
|
+
- IT4I_Network
|
|
53
|
+
only:
|
|
54
|
+
- master
|
|
55
|
+
|
|
56
|
+
push_to_github_job:
|
|
57
|
+
stage: release
|
|
58
|
+
needs:
|
|
59
|
+
- job: release_msg_job
|
|
60
|
+
artifacts: true
|
|
61
|
+
image: alpine:latest
|
|
62
|
+
script:
|
|
63
|
+
- git config --global user.name "HEAppE Pipeline"
|
|
64
|
+
- git config --global user.email "support.heappe@it4i.cz"
|
|
65
|
+
- git checkout origin/master
|
|
66
|
+
- git remote add github https://x-access-token:$GITHUB_TOKEN@github.com/It4innovations/Py4HEAppE.git
|
|
67
|
+
- git push github HEAD:$CI_COMMIT_REF_NAME --force
|
|
68
|
+
- git push github --tags --force
|
|
69
|
+
- echo "${TAG_MESSAGE}"
|
|
70
|
+
- MODIFICATION_TAG_MESSAGE=$(echo "${TAG_MESSAGE}" | base64 -d | sed '/^[[:space:]]*$/s/^.*$/\\n/' | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
|
|
71
|
+
- |
|
|
72
|
+
BODY=$(jq -n --arg tag_name "$TAG_NAME" \
|
|
73
|
+
--arg name "$TAG_NAME" \
|
|
74
|
+
--arg body "$MODIFICATION_TAG_MESSAGE" \
|
|
75
|
+
'{
|
|
76
|
+
tag_name: $tag_name,
|
|
77
|
+
name: $name,
|
|
78
|
+
body: $body,
|
|
79
|
+
draft: false,
|
|
80
|
+
prerelease: false
|
|
81
|
+
}')
|
|
82
|
+
- echo "${BODY}" | jq
|
|
83
|
+
- |
|
|
84
|
+
HTTP_STATUS=$(curl -s -o response.txt -w "%{http_code}" -X POST -H "Authorization: token $GITHUB_TOKEN" -d "$BODY" https://api.github.com/repos/It4innovations/Py4HEAppE/releases)
|
|
85
|
+
if [ "$HTTP_STATUS" -ne 201 ]; then
|
|
86
|
+
echo "Error: Failed to create GitHub release. HTTP status code: $HTTP_STATUS"
|
|
87
|
+
cat response.txt # Print the response for debugging
|
|
88
|
+
exit 1
|
|
89
|
+
else
|
|
90
|
+
echo "GitHub release created successfully. HTTP status code: $HTTP_STATUS"
|
|
91
|
+
echo "Response body:"
|
|
92
|
+
cat response.txt # Print the response body
|
|
93
|
+
fi
|
|
94
|
+
before_script:
|
|
95
|
+
- apk update && apk upgrade
|
|
96
|
+
- apk add --no-cache git curl jq
|
|
97
|
+
variables:
|
|
98
|
+
GIT_STRATEGY: clone
|
|
99
|
+
tags:
|
|
100
|
+
- Docker
|
|
101
|
+
- Centos9
|
|
102
|
+
- IT4I_Network
|
|
103
|
+
only:
|
|
104
|
+
- master
|
|
105
|
+
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## V1.0.0
|
|
9
|
+
|
|
10
|
+
### Compatible with HEAppE V4.2.X and V4.3.X
|
py4heappe-1.0.0/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 HEAppE
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
|
6
|
+
this software and associated documentation files (the "Software"), to deal in
|
|
7
|
+
the Software without restriction, including without limitation the rights to
|
|
8
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
|
9
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
|
10
|
+
subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|
17
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
18
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
|
19
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
20
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
py4heappe-1.0.0/PKG-INFO
ADDED
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: Py4HEAppE
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Py4HEAppE is client library for easy access to HEAppE Middleware
|
|
5
|
+
Author-email: IT4Innovations <support.heappe@it4i.cz>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/It4innovations/Py4HEAppE
|
|
8
|
+
Project-URL: Repository, https://github.com/It4innovations/Py4HEAppE.git
|
|
9
|
+
Project-URL: Issues, https://github.com/It4innovations/Py4HEAppE/issues
|
|
10
|
+
Keywords: LEXIS,HEAppE
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Operating System :: OS Independent
|
|
13
|
+
Requires-Python: >=3.11
|
|
14
|
+
Description-Content-Type: text/markdown
|
|
15
|
+
License-File: LICENSE
|
|
16
|
+
Requires-Dist: paramiko==3.5.0
|
|
17
|
+
Requires-Dist: scp==0.15.0
|
|
18
|
+
Requires-Dist: urllib3==2.2.3
|
|
19
|
+
Requires-Dist: certifi==2024.8.30
|
|
20
|
+
Requires-Dist: six==1.16.0
|
|
21
|
+
Requires-Dist: typer==0.13.1
|
|
22
|
+
Requires-Dist: python-dotenv==1.0.1
|
|
23
|
+
Requires-Dist: validators==0.34.0
|
|
24
|
+
Dynamic: license-file
|
|
25
|
+
|
|
26
|
+
<img align="right" width="35%" src="https://raw.githubusercontent.com/It4innovations/Py4HEAppE/refs/heads/master/docs/imgs/logo.png">
|
|
27
|
+
|
|
28
|
+
# Py4HEAppE (Python for HEAppE Middleware)
|
|
29
|
+
|
|
30
|
+
Py4HEAppE simplifies access to the [HEAppE](https://heappe.eu) features by providing a high-level Python interface that abstracts away the complexities of direct API interactions. This allows users to focus on their core tasks without worrying about the underlying details of API communication. It can be usable in <b>two modes</b> depends what the end-user needs:
|
|
31
|
+
- HEAppE CLI Commands
|
|
32
|
+
- HEAppE API Wrapper Library
|
|
33
|
+
|
|
34
|
+
## Key Benefits
|
|
35
|
+
|
|
36
|
+
### Ease of Use:
|
|
37
|
+
Py4HEAppE provides a straightforward and intuitive interface for interacting with the HEAppE API. Users can perform complex operations with simple function calls.
|
|
38
|
+
|
|
39
|
+
### Abstraction:
|
|
40
|
+
The library abstracts the intricacies of the HEAppE API, allowing users to work with high-level concepts and operations.
|
|
41
|
+
|
|
42
|
+
### Efficiency:
|
|
43
|
+
By using Py4HEAppE, users can quickly integrate HEAppE functionalities into their Python applications, reducing development time and effort.
|
|
44
|
+
|
|
45
|
+
### Consistency:
|
|
46
|
+
The library ensures consistent and reliable communication with the HEAppE API, handling errors and edge cases gracefully.
|
|
47
|
+
|
|
48
|
+
<!-- GETTING STARTED -->
|
|
49
|
+
## Getting Started
|
|
50
|
+
|
|
51
|
+
### Prerequisites
|
|
52
|
+
|
|
53
|
+
* Python (version 3.11)
|
|
54
|
+
* Pip (package installer)
|
|
55
|
+
* Access to Deployed HEAppE instance (HEAppE instance URL and HPC project identificator)
|
|
56
|
+
|
|
57
|
+
### Installation
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
pip install py4heappe
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
<b>Note:</b> In some cases, you can obtain a warning message like this <b>"WARNING: The script py4heappe.exe is installed in 'C:\Users\user\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.</b>" If you obtained a similar warning message, it is necessary to add the mentioned path into your operation system <b>PATH</b> variable or use a path with an executable file (i.e. C:\Users\user\AppData\Roaming\Python\Python311\Scripts\py4heappe.exe).
|
|
64
|
+
|
|
65
|
+
## HEAppE CLI
|
|
66
|
+
|
|
67
|
+
The HEAppE CLI (Command Line Interface) provides a convenient way to interact with the HEAppE Middleware directly from your terminal. It allows users to perform various operations such as authentication, job management, and information retrieval without needing to write any code. This makes it an ideal tool for end-users who need to manage HEAppE Instance efficiently.
|
|
68
|
+
|
|
69
|
+
### Usage
|
|
70
|
+
For using HEAppE CLI it is neeaded to initializing Py4HEAppE for usage with a specific HEAppE Instance (It is necessary to call for the first usage). Command requires <b>HPC project accounting string</b> and <b>HEAppE Instance URL</b>.
|
|
71
|
+
|
|
72
|
+
```shell
|
|
73
|
+
# Initial Setup
|
|
74
|
+
py4heappe Conf Init
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
All mentioned functions are aggregated to CLI's specific <b>commands groups (commands aggregations)</b>. To do so, type the following to provide help on how to use managers via CLI.
|
|
78
|
+
|
|
79
|
+
```shell
|
|
80
|
+
# List of commands groups (commands aggregations)
|
|
81
|
+
py4heappe --help
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Available Commands Groups (commands aggregations):
|
|
85
|
+
|
|
86
|
+
```shell
|
|
87
|
+
# Authentication commands group
|
|
88
|
+
py4heappe Auth --help
|
|
89
|
+
|
|
90
|
+
# Command Template Management commands group
|
|
91
|
+
py4heappe CmdTemp --help
|
|
92
|
+
|
|
93
|
+
# Information commands group
|
|
94
|
+
py4heappe Info --help
|
|
95
|
+
|
|
96
|
+
# Report commands group
|
|
97
|
+
py4heappe Report --help
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
<b>Note:</b> On Windows operation system need to use <b>"py4heappe.exe"</b> instead of <b>"py4heappe"</b>.
|
|
101
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
102
|
+
|
|
103
|
+
## HEAppE API Wrapper Library
|
|
104
|
+
|
|
105
|
+
In this mode, the Py4HEAppE package is used as a wrapper for HEAppE API specification. It allows users to perform various operations from <b>HEAppE API</b>, such as authentication, job management, and information retrieval, without needing to write their API wrapper code. It can be easily integrated with internal <b>Python</b> projects that HEAppE Middleware wants to be used. More information about usability can be found in the section below.
|
|
106
|
+
|
|
107
|
+
### Usage
|
|
108
|
+
|
|
109
|
+
It is required to specify following modules in "requirements.txt" file.
|
|
110
|
+
|
|
111
|
+
```text
|
|
112
|
+
paramiko==3.5.0
|
|
113
|
+
scp==0.15.0
|
|
114
|
+
urllib3==2.2.3
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
The code snapshot illustrated an example of "how to" obtain cluster information from the HEAppE Instance. For more detailed examples of basic HPC workflow, please refer to the [example.py](https://github.com/It4innovations/Py4HEAppE/blob/master/docs/examples/example.py) file.
|
|
118
|
+
|
|
119
|
+
```python
|
|
120
|
+
import json
|
|
121
|
+
import os
|
|
122
|
+
import time
|
|
123
|
+
from io import StringIO
|
|
124
|
+
from pathlib import Path
|
|
125
|
+
|
|
126
|
+
import py4heappe.core as hp
|
|
127
|
+
|
|
128
|
+
print("\nFetching cluster info...")
|
|
129
|
+
lac_body = {
|
|
130
|
+
"_preload_content": False
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
ciEndpoint = hp.ClusterInformationApi(api_instance)
|
|
134
|
+
r = ciEndpoint.heappe_cluster_information_list_available_clusters_get(**lac_body)
|
|
135
|
+
r_data = json.loads(r.data)
|
|
136
|
+
print(json.dumps(r_data, indent = 3))
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
140
|
+
|
|
141
|
+
|
|
142
|
+
## Acknowledgement
|
|
143
|
+
|
|
144
|
+
e-Infra CZ
|
|
145
|
+
This work was supported by the Ministry of Education, Youth and Sports of the Czech Republic through the e-INFRA CZ (ID:90254)
|
|
146
|
+
|
|
147
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
<img align="right" width="35%" src="https://raw.githubusercontent.com/It4innovations/Py4HEAppE/refs/heads/master/docs/imgs/logo.png">
|
|
2
|
+
|
|
3
|
+
# Py4HEAppE (Python for HEAppE Middleware)
|
|
4
|
+
|
|
5
|
+
Py4HEAppE simplifies access to the [HEAppE](https://heappe.eu) features by providing a high-level Python interface that abstracts away the complexities of direct API interactions. This allows users to focus on their core tasks without worrying about the underlying details of API communication. It can be usable in <b>two modes</b> depends what the end-user needs:
|
|
6
|
+
- HEAppE CLI Commands
|
|
7
|
+
- HEAppE API Wrapper Library
|
|
8
|
+
|
|
9
|
+
## Key Benefits
|
|
10
|
+
|
|
11
|
+
### Ease of Use:
|
|
12
|
+
Py4HEAppE provides a straightforward and intuitive interface for interacting with the HEAppE API. Users can perform complex operations with simple function calls.
|
|
13
|
+
|
|
14
|
+
### Abstraction:
|
|
15
|
+
The library abstracts the intricacies of the HEAppE API, allowing users to work with high-level concepts and operations.
|
|
16
|
+
|
|
17
|
+
### Efficiency:
|
|
18
|
+
By using Py4HEAppE, users can quickly integrate HEAppE functionalities into their Python applications, reducing development time and effort.
|
|
19
|
+
|
|
20
|
+
### Consistency:
|
|
21
|
+
The library ensures consistent and reliable communication with the HEAppE API, handling errors and edge cases gracefully.
|
|
22
|
+
|
|
23
|
+
<!-- GETTING STARTED -->
|
|
24
|
+
## Getting Started
|
|
25
|
+
|
|
26
|
+
### Prerequisites
|
|
27
|
+
|
|
28
|
+
* Python (version 3.11)
|
|
29
|
+
* Pip (package installer)
|
|
30
|
+
* Access to Deployed HEAppE instance (HEAppE instance URL and HPC project identificator)
|
|
31
|
+
|
|
32
|
+
### Installation
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
pip install py4heappe
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
<b>Note:</b> In some cases, you can obtain a warning message like this <b>"WARNING: The script py4heappe.exe is installed in 'C:\Users\user\AppData\Roaming\Python\Python311\Scripts' which is not on PATH.</b>" If you obtained a similar warning message, it is necessary to add the mentioned path into your operation system <b>PATH</b> variable or use a path with an executable file (i.e. C:\Users\user\AppData\Roaming\Python\Python311\Scripts\py4heappe.exe).
|
|
39
|
+
|
|
40
|
+
## HEAppE CLI
|
|
41
|
+
|
|
42
|
+
The HEAppE CLI (Command Line Interface) provides a convenient way to interact with the HEAppE Middleware directly from your terminal. It allows users to perform various operations such as authentication, job management, and information retrieval without needing to write any code. This makes it an ideal tool for end-users who need to manage HEAppE Instance efficiently.
|
|
43
|
+
|
|
44
|
+
### Usage
|
|
45
|
+
For using HEAppE CLI it is neeaded to initializing Py4HEAppE for usage with a specific HEAppE Instance (It is necessary to call for the first usage). Command requires <b>HPC project accounting string</b> and <b>HEAppE Instance URL</b>.
|
|
46
|
+
|
|
47
|
+
```shell
|
|
48
|
+
# Initial Setup
|
|
49
|
+
py4heappe Conf Init
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
All mentioned functions are aggregated to CLI's specific <b>commands groups (commands aggregations)</b>. To do so, type the following to provide help on how to use managers via CLI.
|
|
53
|
+
|
|
54
|
+
```shell
|
|
55
|
+
# List of commands groups (commands aggregations)
|
|
56
|
+
py4heappe --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Available Commands Groups (commands aggregations):
|
|
60
|
+
|
|
61
|
+
```shell
|
|
62
|
+
# Authentication commands group
|
|
63
|
+
py4heappe Auth --help
|
|
64
|
+
|
|
65
|
+
# Command Template Management commands group
|
|
66
|
+
py4heappe CmdTemp --help
|
|
67
|
+
|
|
68
|
+
# Information commands group
|
|
69
|
+
py4heappe Info --help
|
|
70
|
+
|
|
71
|
+
# Report commands group
|
|
72
|
+
py4heappe Report --help
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
<b>Note:</b> On Windows operation system need to use <b>"py4heappe.exe"</b> instead of <b>"py4heappe"</b>.
|
|
76
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
77
|
+
|
|
78
|
+
## HEAppE API Wrapper Library
|
|
79
|
+
|
|
80
|
+
In this mode, the Py4HEAppE package is used as a wrapper for HEAppE API specification. It allows users to perform various operations from <b>HEAppE API</b>, such as authentication, job management, and information retrieval, without needing to write their API wrapper code. It can be easily integrated with internal <b>Python</b> projects that HEAppE Middleware wants to be used. More information about usability can be found in the section below.
|
|
81
|
+
|
|
82
|
+
### Usage
|
|
83
|
+
|
|
84
|
+
It is required to specify following modules in "requirements.txt" file.
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
paramiko==3.5.0
|
|
88
|
+
scp==0.15.0
|
|
89
|
+
urllib3==2.2.3
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The code snapshot illustrated an example of "how to" obtain cluster information from the HEAppE Instance. For more detailed examples of basic HPC workflow, please refer to the [example.py](https://github.com/It4innovations/Py4HEAppE/blob/master/docs/examples/example.py) file.
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
import json
|
|
96
|
+
import os
|
|
97
|
+
import time
|
|
98
|
+
from io import StringIO
|
|
99
|
+
from pathlib import Path
|
|
100
|
+
|
|
101
|
+
import py4heappe.core as hp
|
|
102
|
+
|
|
103
|
+
print("\nFetching cluster info...")
|
|
104
|
+
lac_body = {
|
|
105
|
+
"_preload_content": False
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
ciEndpoint = hp.ClusterInformationApi(api_instance)
|
|
109
|
+
r = ciEndpoint.heappe_cluster_information_list_available_clusters_get(**lac_body)
|
|
110
|
+
r_data = json.loads(r.data)
|
|
111
|
+
print(json.dumps(r_data, indent = 3))
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
## Acknowledgement
|
|
118
|
+
|
|
119
|
+
e-Infra CZ
|
|
120
|
+
This work was supported by the Ministry of Education, Youth and Sports of the Czech Republic through the e-INFRA CZ (ID:90254)
|
|
121
|
+
|
|
122
|
+
<p align="right">(<a href="#readme-top">back to top</a>)</p>
|