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.
Files changed (198) hide show
  1. py4heappe-1.0.0/.gitignore +15 -0
  2. py4heappe-1.0.0/.gitlab/stages/.check.yml +19 -0
  3. py4heappe-1.0.0/.gitlab/stages/.publish.yml +31 -0
  4. py4heappe-1.0.0/.gitlab/stages/.release.yml +105 -0
  5. py4heappe-1.0.0/.gitlab-ci.yml +14 -0
  6. py4heappe-1.0.0/CHANGELOG.md +10 -0
  7. py4heappe-1.0.0/LICENSE +20 -0
  8. py4heappe-1.0.0/PKG-INFO +147 -0
  9. py4heappe-1.0.0/README.md +122 -0
  10. py4heappe-1.0.0/docs/examples/example.py +278 -0
  11. py4heappe-1.0.0/docs/imgs/logo.png +0 -0
  12. py4heappe-1.0.0/pyproject.toml +29 -0
  13. py4heappe-1.0.0/requirements.txt +8 -0
  14. py4heappe-1.0.0/setup.cfg +4 -0
  15. py4heappe-1.0.0/src/Py4HEAppE.egg-info/PKG-INFO +147 -0
  16. py4heappe-1.0.0/src/Py4HEAppE.egg-info/SOURCES.txt +196 -0
  17. py4heappe-1.0.0/src/Py4HEAppE.egg-info/dependency_links.txt +1 -0
  18. py4heappe-1.0.0/src/Py4HEAppE.egg-info/entry_points.txt +2 -0
  19. py4heappe-1.0.0/src/Py4HEAppE.egg-info/requires.txt +8 -0
  20. py4heappe-1.0.0/src/Py4HEAppE.egg-info/top_level.txt +3 -0
  21. py4heappe-1.0.0/src/__init__.py +1 -0
  22. py4heappe-1.0.0/src/py4heappe/__init__.py +1 -0
  23. py4heappe-1.0.0/src/py4heappe/cli/__init__.py +1 -0
  24. py4heappe-1.0.0/src/py4heappe/cli/auth.py +153 -0
  25. py4heappe-1.0.0/src/py4heappe/cli/command_template.py +370 -0
  26. py4heappe-1.0.0/src/py4heappe/cli/configuration.py +65 -0
  27. py4heappe-1.0.0/src/py4heappe/cli/information.py +163 -0
  28. py4heappe-1.0.0/src/py4heappe/cli/job_management.py +211 -0
  29. py4heappe-1.0.0/src/py4heappe/cli/report.py +173 -0
  30. py4heappe-1.0.0/src/py4heappe/core/__init__.py +167 -0
  31. py4heappe-1.0.0/src/py4heappe/core/api/__init__.py +12 -0
  32. py4heappe-1.0.0/src/py4heappe/core/api/cluster_information_api.py +308 -0
  33. py4heappe-1.0.0/src/py4heappe/core/api/data_transfer_api.py +405 -0
  34. py4heappe-1.0.0/src/py4heappe/core/api/file_transfer_api.py +498 -0
  35. py4heappe-1.0.0/src/py4heappe/core/api/job_management_api.py +866 -0
  36. py4heappe-1.0.0/src/py4heappe/core/api/job_reporting_api.py +692 -0
  37. py4heappe-1.0.0/src/py4heappe/core/api/management_api.py +2540 -0
  38. py4heappe-1.0.0/src/py4heappe/core/api/user_and_limitation_management_api.py +676 -0
  39. py4heappe-1.0.0/src/py4heappe/core/api_client.py +632 -0
  40. py4heappe-1.0.0/src/py4heappe/core/base/__init__.py +1 -0
  41. py4heappe-1.0.0/src/py4heappe/core/base/exceptions.py +41 -0
  42. py4heappe-1.0.0/src/py4heappe/core/base/logger.py +11 -0
  43. py4heappe-1.0.0/src/py4heappe/core/base/utils.py +43 -0
  44. py4heappe-1.0.0/src/py4heappe/core/configuration.py +247 -0
  45. py4heappe-1.0.0/src/py4heappe/core/models/__init__.py +155 -0
  46. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user.py +398 -0
  47. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_group.py +268 -0
  48. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role.py +242 -0
  49. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role_ext.py +138 -0
  50. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_role_type.py +95 -0
  51. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_type.py +91 -0
  52. py4heappe-1.0.0/src/py4heappe/core/models/adaptor_user_user_group_role.py +320 -0
  53. py4heappe-1.0.0/src/py4heappe/core/models/allocated_nodes_ips_model.py +136 -0
  54. py4heappe-1.0.0/src/py4heappe/core/models/authenticate_lexis_token_model.py +110 -0
  55. py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_digital_signature_model.py +110 -0
  56. py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_open_id_model.py +110 -0
  57. py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_open_id_open_stack_model.py +136 -0
  58. py4heappe-1.0.0/src/py4heappe/core/models/authenticate_user_password_model.py +110 -0
  59. py4heappe-1.0.0/src/py4heappe/core/models/authentication_credentials.py +110 -0
  60. py4heappe-1.0.0/src/py4heappe/core/models/bad_request_result.py +110 -0
  61. py4heappe-1.0.0/src/py4heappe/core/models/cancel_job_model.py +136 -0
  62. py4heappe-1.0.0/src/py4heappe/core/models/cluster.py +478 -0
  63. py4heappe-1.0.0/src/py4heappe/core/models/cluster_authentication_credentials.py +375 -0
  64. py4heappe-1.0.0/src/py4heappe/core/models/cluster_authentication_credentials_auth_type.py +97 -0
  65. py4heappe-1.0.0/src/py4heappe/core/models/cluster_connection_protocol.py +91 -0
  66. py4heappe-1.0.0/src/py4heappe/core/models/cluster_detailed_report_ext.py +214 -0
  67. py4heappe-1.0.0/src/py4heappe/core/models/cluster_ext.py +188 -0
  68. py4heappe-1.0.0/src/py4heappe/core/models/cluster_init_report_ext.py +136 -0
  69. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type.py +528 -0
  70. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_detailed_report_ext.py +240 -0
  71. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_ext.py +292 -0
  72. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_for_task_ext.py +188 -0
  73. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_report_ext.py +214 -0
  74. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_requested_group.py +136 -0
  75. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_type_resource_usage_ext.py +292 -0
  76. py4heappe-1.0.0/src/py4heappe/core/models/cluster_node_usage_ext.py +318 -0
  77. py4heappe-1.0.0/src/py4heappe/core/models/cluster_project.py +347 -0
  78. py4heappe-1.0.0/src/py4heappe/core/models/cluster_project_credential.py +294 -0
  79. py4heappe-1.0.0/src/py4heappe/core/models/cluster_proxy_connection.py +243 -0
  80. py4heappe-1.0.0/src/py4heappe/core/models/cluster_proxy_connection_ext.py +214 -0
  81. py4heappe-1.0.0/src/py4heappe/core/models/cluster_report_ext.py +215 -0
  82. py4heappe-1.0.0/src/py4heappe/core/models/command_template.py +557 -0
  83. py4heappe-1.0.0/src/py4heappe/core/models/command_template_ext.py +240 -0
  84. py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter.py +347 -0
  85. py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter_ext.py +136 -0
  86. py4heappe-1.0.0/src/py4heappe/core/models/command_template_parameter_value_ext.py +136 -0
  87. py4heappe-1.0.0/src/py4heappe/core/models/contact.py +269 -0
  88. py4heappe-1.0.0/src/py4heappe/core/models/copy_job_data_from_temp_model.py +162 -0
  89. py4heappe-1.0.0/src/py4heappe/core/models/copy_job_data_to_temp_model.py +162 -0
  90. py4heappe-1.0.0/src/py4heappe/core/models/create_command_inner_template_parameter_model.py +162 -0
  91. py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_from_generic_model.py +292 -0
  92. py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_model.py +318 -0
  93. py4heappe-1.0.0/src/py4heappe/core/models/create_command_template_parameter_model.py +214 -0
  94. py4heappe-1.0.0/src/py4heappe/core/models/create_job_by_project_model.py +136 -0
  95. py4heappe-1.0.0/src/py4heappe/core/models/create_project_assignment_to_cluster_model.py +188 -0
  96. py4heappe-1.0.0/src/py4heappe/core/models/create_project_model.py +318 -0
  97. py4heappe-1.0.0/src/py4heappe/core/models/create_secure_shell_key_model.py +162 -0
  98. py4heappe-1.0.0/src/py4heappe/core/models/create_secure_shell_key_model_obsolete.py +188 -0
  99. py4heappe-1.0.0/src/py4heappe/core/models/current_cluster_node_usage_model.py +136 -0
  100. py4heappe-1.0.0/src/py4heappe/core/models/current_info_for_job_model.py +136 -0
  101. py4heappe-1.0.0/src/py4heappe/core/models/data_transfer_method_ext.py +188 -0
  102. py4heappe-1.0.0/src/py4heappe/core/models/delete_job_model.py +136 -0
  103. py4heappe-1.0.0/src/py4heappe/core/models/deployment_type_ext.py +91 -0
  104. py4heappe-1.0.0/src/py4heappe/core/models/digital_signature_credentials_ext.py +162 -0
  105. py4heappe-1.0.0/src/py4heappe/core/models/download_file_from_cluster_model.py +162 -0
  106. py4heappe-1.0.0/src/py4heappe/core/models/download_parts_of_job_files_from_cluster_model.py +162 -0
  107. py4heappe-1.0.0/src/py4heappe/core/models/end_data_transfer_model.py +136 -0
  108. py4heappe-1.0.0/src/py4heappe/core/models/end_file_transfer_model.py +162 -0
  109. py4heappe-1.0.0/src/py4heappe/core/models/environment_variable_ext.py +136 -0
  110. py4heappe-1.0.0/src/py4heappe/core/models/extended_command_template_ext.py +370 -0
  111. py4heappe-1.0.0/src/py4heappe/core/models/extended_command_template_parameter_ext.py +188 -0
  112. py4heappe-1.0.0/src/py4heappe/core/models/extended_project_info_ext.py +318 -0
  113. py4heappe-1.0.0/src/py4heappe/core/models/file_information_ext.py +136 -0
  114. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_cipher_type.py +94 -0
  115. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_cipher_type_ext.py +93 -0
  116. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_key_credentials_ext.py +240 -0
  117. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_method.py +294 -0
  118. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_method_ext.py +240 -0
  119. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_protocol.py +91 -0
  120. py4heappe-1.0.0/src/py4heappe/core/models/file_transfer_protocol_ext.py +91 -0
  121. py4heappe-1.0.0/src/py4heappe/core/models/get_command_template_parameters_name_model.py +188 -0
  122. py4heappe-1.0.0/src/py4heappe/core/models/get_current_usage_and_limitations_for_current_user_model.py +110 -0
  123. py4heappe-1.0.0/src/py4heappe/core/models/get_data_transfer_method_model.py +188 -0
  124. py4heappe-1.0.0/src/py4heappe/core/models/get_file_transfer_method_model.py +136 -0
  125. py4heappe-1.0.0/src/py4heappe/core/models/http_get_to_job_node_model.py +241 -0
  126. py4heappe-1.0.0/src/py4heappe/core/models/http_header_ext.py +136 -0
  127. py4heappe-1.0.0/src/py4heappe/core/models/http_post_to_job_node_model.py +267 -0
  128. py4heappe-1.0.0/src/py4heappe/core/models/initialize_cluster_script_directory_model.py +162 -0
  129. py4heappe-1.0.0/src/py4heappe/core/models/instance_information_ext.py +344 -0
  130. py4heappe-1.0.0/src/py4heappe/core/models/job_detailed_report_ext.py +318 -0
  131. py4heappe-1.0.0/src/py4heappe/core/models/job_file_content_ext.py +214 -0
  132. py4heappe-1.0.0/src/py4heappe/core/models/job_report_ext.py +188 -0
  133. py4heappe-1.0.0/src/py4heappe/core/models/job_specification_by_project_ext.py +448 -0
  134. py4heappe-1.0.0/src/py4heappe/core/models/job_specification_ext.py +448 -0
  135. py4heappe-1.0.0/src/py4heappe/core/models/job_state_aggregation_report_ext.py +162 -0
  136. py4heappe-1.0.0/src/py4heappe/core/models/job_state_ext.py +96 -0
  137. py4heappe-1.0.0/src/py4heappe/core/models/lexis_credentials_ext.py +137 -0
  138. py4heappe-1.0.0/src/py4heappe/core/models/list_changed_files_for_job_model.py +136 -0
  139. py4heappe-1.0.0/src/py4heappe/core/models/list_jobs_for_current_user_model.py +110 -0
  140. py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_from_generic_model.py +292 -0
  141. py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_model.py +292 -0
  142. py4heappe-1.0.0/src/py4heappe/core/models/modify_command_template_parameter_model.py +214 -0
  143. py4heappe-1.0.0/src/py4heappe/core/models/modify_project_assignment_to_cluster_model.py +188 -0
  144. py4heappe-1.0.0/src/py4heappe/core/models/modify_project_model.py +292 -0
  145. py4heappe-1.0.0/src/py4heappe/core/models/node_used_cores_and_limitation_ext.py +110 -0
  146. py4heappe-1.0.0/src/py4heappe/core/models/open_id_credentials_ext.py +137 -0
  147. py4heappe-1.0.0/src/py4heappe/core/models/open_stack_application_credentials_ext.py +136 -0
  148. py4heappe-1.0.0/src/py4heappe/core/models/password_credentials_ext.py +136 -0
  149. py4heappe-1.0.0/src/py4heappe/core/models/problem_details.py +89 -0
  150. py4heappe-1.0.0/src/py4heappe/core/models/project.py +482 -0
  151. py4heappe-1.0.0/src/py4heappe/core/models/project_contact.py +215 -0
  152. py4heappe-1.0.0/src/py4heappe/core/models/project_detailed_report_ext.py +292 -0
  153. py4heappe-1.0.0/src/py4heappe/core/models/project_ext.py +266 -0
  154. py4heappe-1.0.0/src/py4heappe/core/models/project_for_task_ext.py +214 -0
  155. py4heappe-1.0.0/src/py4heappe/core/models/project_list_report_ext.py +214 -0
  156. py4heappe-1.0.0/src/py4heappe/core/models/project_reference_ext.py +137 -0
  157. py4heappe-1.0.0/src/py4heappe/core/models/project_report_ext.py +240 -0
  158. py4heappe-1.0.0/src/py4heappe/core/models/project_resource_usage_ext.py +266 -0
  159. py4heappe-1.0.0/src/py4heappe/core/models/proxy_type.py +91 -0
  160. py4heappe-1.0.0/src/py4heappe/core/models/proxy_type_ext.py +91 -0
  161. py4heappe-1.0.0/src/py4heappe/core/models/public_key_ext.py +188 -0
  162. py4heappe-1.0.0/src/py4heappe/core/models/recreate_secure_shell_key_model.py +214 -0
  163. py4heappe-1.0.0/src/py4heappe/core/models/regenerate_secure_shell_key_model.py +188 -0
  164. py4heappe-1.0.0/src/py4heappe/core/models/regenerate_secure_shell_key_model_obsolete.py +188 -0
  165. py4heappe-1.0.0/src/py4heappe/core/models/remove_command_template_model.py +136 -0
  166. py4heappe-1.0.0/src/py4heappe/core/models/remove_command_template_parameter_model.py +136 -0
  167. py4heappe-1.0.0/src/py4heappe/core/models/remove_project_assignment_to_cluster_model.py +162 -0
  168. py4heappe-1.0.0/src/py4heappe/core/models/remove_project_model.py +136 -0
  169. py4heappe-1.0.0/src/py4heappe/core/models/remove_secure_shell_key_model.py +162 -0
  170. py4heappe-1.0.0/src/py4heappe/core/models/remove_secure_shell_key_model_obsolete.py +162 -0
  171. py4heappe-1.0.0/src/py4heappe/core/models/resource_allocation_type_ext.py +91 -0
  172. py4heappe-1.0.0/src/py4heappe/core/models/resource_limitation_ext.py +136 -0
  173. py4heappe-1.0.0/src/py4heappe/core/models/resource_usage_ext.py +163 -0
  174. py4heappe-1.0.0/src/py4heappe/core/models/scheduler_type.py +92 -0
  175. py4heappe-1.0.0/src/py4heappe/core/models/ssh_key_user_credentials_model.py +136 -0
  176. py4heappe-1.0.0/src/py4heappe/core/models/submit_job_model.py +136 -0
  177. py4heappe-1.0.0/src/py4heappe/core/models/submitted_job_info_ext.py +318 -0
  178. py4heappe-1.0.0/src/py4heappe/core/models/submitted_task_info_ext.py +370 -0
  179. py4heappe-1.0.0/src/py4heappe/core/models/synchronizable_files_ext.py +92 -0
  180. py4heappe-1.0.0/src/py4heappe/core/models/task_detailed_report_ext.py +318 -0
  181. py4heappe-1.0.0/src/py4heappe/core/models/task_file_offset_ext.py +162 -0
  182. py4heappe-1.0.0/src/py4heappe/core/models/task_paralization_parameter_ext.py +162 -0
  183. py4heappe-1.0.0/src/py4heappe/core/models/task_priority_ext.py +97 -0
  184. py4heappe-1.0.0/src/py4heappe/core/models/task_report_ext.py +266 -0
  185. py4heappe-1.0.0/src/py4heappe/core/models/task_specification_ext.py +682 -0
  186. py4heappe-1.0.0/src/py4heappe/core/models/task_state_ext.py +95 -0
  187. py4heappe-1.0.0/src/py4heappe/core/models/test_cluster_access_for_account_model.py +162 -0
  188. py4heappe-1.0.0/src/py4heappe/core/models/test_cluster_access_for_account_model_obsolete.py +162 -0
  189. py4heappe-1.0.0/src/py4heappe/core/models/unauthorized_result.py +110 -0
  190. py4heappe-1.0.0/src/py4heappe/core/models/usage_type.py +90 -0
  191. py4heappe-1.0.0/src/py4heappe/core/models/usage_type_ext.py +90 -0
  192. py4heappe-1.0.0/src/py4heappe/core/models/user_group_detailed_report_ext.py +240 -0
  193. py4heappe-1.0.0/src/py4heappe/core/models/user_group_list_report_ext.py +240 -0
  194. py4heappe-1.0.0/src/py4heappe/core/models/user_group_report_ext.py +240 -0
  195. py4heappe-1.0.0/src/py4heappe/core/models/version_information_ext.py +162 -0
  196. py4heappe-1.0.0/src/py4heappe/core/rest.py +311 -0
  197. py4heappe-1.0.0/src/py4heappe_cli.py +22 -0
  198. 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,14 @@
1
+ services:
2
+ - docker:dind
3
+
4
+ include:
5
+ - local: '.gitlab/stages/.check.yml'
6
+ - local: '.gitlab/stages/.release.yml'
7
+ - local: '.gitlab/stages/.publish.yml'
8
+
9
+
10
+
11
+ stages:
12
+ - check
13
+ - release
14
+ - publish
@@ -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
@@ -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.
@@ -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>