Py4HEAppE 1.0.0__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.
Files changed (183) hide show
  1. __init__.py +1 -0
  2. py4heappe/__init__.py +1 -0
  3. py4heappe/cli/__init__.py +1 -0
  4. py4heappe/cli/auth.py +153 -0
  5. py4heappe/cli/command_template.py +370 -0
  6. py4heappe/cli/configuration.py +65 -0
  7. py4heappe/cli/information.py +163 -0
  8. py4heappe/cli/job_management.py +211 -0
  9. py4heappe/cli/report.py +173 -0
  10. py4heappe/core/__init__.py +167 -0
  11. py4heappe/core/api/__init__.py +12 -0
  12. py4heappe/core/api/cluster_information_api.py +308 -0
  13. py4heappe/core/api/data_transfer_api.py +405 -0
  14. py4heappe/core/api/file_transfer_api.py +498 -0
  15. py4heappe/core/api/job_management_api.py +866 -0
  16. py4heappe/core/api/job_reporting_api.py +692 -0
  17. py4heappe/core/api/management_api.py +2540 -0
  18. py4heappe/core/api/user_and_limitation_management_api.py +676 -0
  19. py4heappe/core/api_client.py +632 -0
  20. py4heappe/core/base/__init__.py +1 -0
  21. py4heappe/core/base/exceptions.py +41 -0
  22. py4heappe/core/base/logger.py +11 -0
  23. py4heappe/core/base/utils.py +43 -0
  24. py4heappe/core/configuration.py +247 -0
  25. py4heappe/core/models/__init__.py +155 -0
  26. py4heappe/core/models/adaptor_user.py +398 -0
  27. py4heappe/core/models/adaptor_user_group.py +268 -0
  28. py4heappe/core/models/adaptor_user_role.py +242 -0
  29. py4heappe/core/models/adaptor_user_role_ext.py +138 -0
  30. py4heappe/core/models/adaptor_user_role_type.py +95 -0
  31. py4heappe/core/models/adaptor_user_type.py +91 -0
  32. py4heappe/core/models/adaptor_user_user_group_role.py +320 -0
  33. py4heappe/core/models/allocated_nodes_ips_model.py +136 -0
  34. py4heappe/core/models/authenticate_lexis_token_model.py +110 -0
  35. py4heappe/core/models/authenticate_user_digital_signature_model.py +110 -0
  36. py4heappe/core/models/authenticate_user_open_id_model.py +110 -0
  37. py4heappe/core/models/authenticate_user_open_id_open_stack_model.py +136 -0
  38. py4heappe/core/models/authenticate_user_password_model.py +110 -0
  39. py4heappe/core/models/authentication_credentials.py +110 -0
  40. py4heappe/core/models/bad_request_result.py +110 -0
  41. py4heappe/core/models/cancel_job_model.py +136 -0
  42. py4heappe/core/models/cluster.py +478 -0
  43. py4heappe/core/models/cluster_authentication_credentials.py +375 -0
  44. py4heappe/core/models/cluster_authentication_credentials_auth_type.py +97 -0
  45. py4heappe/core/models/cluster_connection_protocol.py +91 -0
  46. py4heappe/core/models/cluster_detailed_report_ext.py +214 -0
  47. py4heappe/core/models/cluster_ext.py +188 -0
  48. py4heappe/core/models/cluster_init_report_ext.py +136 -0
  49. py4heappe/core/models/cluster_node_type.py +528 -0
  50. py4heappe/core/models/cluster_node_type_detailed_report_ext.py +240 -0
  51. py4heappe/core/models/cluster_node_type_ext.py +292 -0
  52. py4heappe/core/models/cluster_node_type_for_task_ext.py +188 -0
  53. py4heappe/core/models/cluster_node_type_report_ext.py +214 -0
  54. py4heappe/core/models/cluster_node_type_requested_group.py +136 -0
  55. py4heappe/core/models/cluster_node_type_resource_usage_ext.py +292 -0
  56. py4heappe/core/models/cluster_node_usage_ext.py +318 -0
  57. py4heappe/core/models/cluster_project.py +347 -0
  58. py4heappe/core/models/cluster_project_credential.py +294 -0
  59. py4heappe/core/models/cluster_proxy_connection.py +243 -0
  60. py4heappe/core/models/cluster_proxy_connection_ext.py +214 -0
  61. py4heappe/core/models/cluster_report_ext.py +215 -0
  62. py4heappe/core/models/command_template.py +557 -0
  63. py4heappe/core/models/command_template_ext.py +240 -0
  64. py4heappe/core/models/command_template_parameter.py +347 -0
  65. py4heappe/core/models/command_template_parameter_ext.py +136 -0
  66. py4heappe/core/models/command_template_parameter_value_ext.py +136 -0
  67. py4heappe/core/models/contact.py +269 -0
  68. py4heappe/core/models/copy_job_data_from_temp_model.py +162 -0
  69. py4heappe/core/models/copy_job_data_to_temp_model.py +162 -0
  70. py4heappe/core/models/create_command_inner_template_parameter_model.py +162 -0
  71. py4heappe/core/models/create_command_template_from_generic_model.py +292 -0
  72. py4heappe/core/models/create_command_template_model.py +318 -0
  73. py4heappe/core/models/create_command_template_parameter_model.py +214 -0
  74. py4heappe/core/models/create_job_by_project_model.py +136 -0
  75. py4heappe/core/models/create_project_assignment_to_cluster_model.py +188 -0
  76. py4heappe/core/models/create_project_model.py +318 -0
  77. py4heappe/core/models/create_secure_shell_key_model.py +162 -0
  78. py4heappe/core/models/create_secure_shell_key_model_obsolete.py +188 -0
  79. py4heappe/core/models/current_cluster_node_usage_model.py +136 -0
  80. py4heappe/core/models/current_info_for_job_model.py +136 -0
  81. py4heappe/core/models/data_transfer_method_ext.py +188 -0
  82. py4heappe/core/models/delete_job_model.py +136 -0
  83. py4heappe/core/models/deployment_type_ext.py +91 -0
  84. py4heappe/core/models/digital_signature_credentials_ext.py +162 -0
  85. py4heappe/core/models/download_file_from_cluster_model.py +162 -0
  86. py4heappe/core/models/download_parts_of_job_files_from_cluster_model.py +162 -0
  87. py4heappe/core/models/end_data_transfer_model.py +136 -0
  88. py4heappe/core/models/end_file_transfer_model.py +162 -0
  89. py4heappe/core/models/environment_variable_ext.py +136 -0
  90. py4heappe/core/models/extended_command_template_ext.py +370 -0
  91. py4heappe/core/models/extended_command_template_parameter_ext.py +188 -0
  92. py4heappe/core/models/extended_project_info_ext.py +318 -0
  93. py4heappe/core/models/file_information_ext.py +136 -0
  94. py4heappe/core/models/file_transfer_cipher_type.py +94 -0
  95. py4heappe/core/models/file_transfer_cipher_type_ext.py +93 -0
  96. py4heappe/core/models/file_transfer_key_credentials_ext.py +240 -0
  97. py4heappe/core/models/file_transfer_method.py +294 -0
  98. py4heappe/core/models/file_transfer_method_ext.py +240 -0
  99. py4heappe/core/models/file_transfer_protocol.py +91 -0
  100. py4heappe/core/models/file_transfer_protocol_ext.py +91 -0
  101. py4heappe/core/models/get_command_template_parameters_name_model.py +188 -0
  102. py4heappe/core/models/get_current_usage_and_limitations_for_current_user_model.py +110 -0
  103. py4heappe/core/models/get_data_transfer_method_model.py +188 -0
  104. py4heappe/core/models/get_file_transfer_method_model.py +136 -0
  105. py4heappe/core/models/http_get_to_job_node_model.py +241 -0
  106. py4heappe/core/models/http_header_ext.py +136 -0
  107. py4heappe/core/models/http_post_to_job_node_model.py +267 -0
  108. py4heappe/core/models/initialize_cluster_script_directory_model.py +162 -0
  109. py4heappe/core/models/instance_information_ext.py +344 -0
  110. py4heappe/core/models/job_detailed_report_ext.py +318 -0
  111. py4heappe/core/models/job_file_content_ext.py +214 -0
  112. py4heappe/core/models/job_report_ext.py +188 -0
  113. py4heappe/core/models/job_specification_by_project_ext.py +448 -0
  114. py4heappe/core/models/job_specification_ext.py +448 -0
  115. py4heappe/core/models/job_state_aggregation_report_ext.py +162 -0
  116. py4heappe/core/models/job_state_ext.py +96 -0
  117. py4heappe/core/models/lexis_credentials_ext.py +137 -0
  118. py4heappe/core/models/list_changed_files_for_job_model.py +136 -0
  119. py4heappe/core/models/list_jobs_for_current_user_model.py +110 -0
  120. py4heappe/core/models/modify_command_template_from_generic_model.py +292 -0
  121. py4heappe/core/models/modify_command_template_model.py +292 -0
  122. py4heappe/core/models/modify_command_template_parameter_model.py +214 -0
  123. py4heappe/core/models/modify_project_assignment_to_cluster_model.py +188 -0
  124. py4heappe/core/models/modify_project_model.py +292 -0
  125. py4heappe/core/models/node_used_cores_and_limitation_ext.py +110 -0
  126. py4heappe/core/models/open_id_credentials_ext.py +137 -0
  127. py4heappe/core/models/open_stack_application_credentials_ext.py +136 -0
  128. py4heappe/core/models/password_credentials_ext.py +136 -0
  129. py4heappe/core/models/problem_details.py +89 -0
  130. py4heappe/core/models/project.py +482 -0
  131. py4heappe/core/models/project_contact.py +215 -0
  132. py4heappe/core/models/project_detailed_report_ext.py +292 -0
  133. py4heappe/core/models/project_ext.py +266 -0
  134. py4heappe/core/models/project_for_task_ext.py +214 -0
  135. py4heappe/core/models/project_list_report_ext.py +214 -0
  136. py4heappe/core/models/project_reference_ext.py +137 -0
  137. py4heappe/core/models/project_report_ext.py +240 -0
  138. py4heappe/core/models/project_resource_usage_ext.py +266 -0
  139. py4heappe/core/models/proxy_type.py +91 -0
  140. py4heappe/core/models/proxy_type_ext.py +91 -0
  141. py4heappe/core/models/public_key_ext.py +188 -0
  142. py4heappe/core/models/recreate_secure_shell_key_model.py +214 -0
  143. py4heappe/core/models/regenerate_secure_shell_key_model.py +188 -0
  144. py4heappe/core/models/regenerate_secure_shell_key_model_obsolete.py +188 -0
  145. py4heappe/core/models/remove_command_template_model.py +136 -0
  146. py4heappe/core/models/remove_command_template_parameter_model.py +136 -0
  147. py4heappe/core/models/remove_project_assignment_to_cluster_model.py +162 -0
  148. py4heappe/core/models/remove_project_model.py +136 -0
  149. py4heappe/core/models/remove_secure_shell_key_model.py +162 -0
  150. py4heappe/core/models/remove_secure_shell_key_model_obsolete.py +162 -0
  151. py4heappe/core/models/resource_allocation_type_ext.py +91 -0
  152. py4heappe/core/models/resource_limitation_ext.py +136 -0
  153. py4heappe/core/models/resource_usage_ext.py +163 -0
  154. py4heappe/core/models/scheduler_type.py +92 -0
  155. py4heappe/core/models/ssh_key_user_credentials_model.py +136 -0
  156. py4heappe/core/models/submit_job_model.py +136 -0
  157. py4heappe/core/models/submitted_job_info_ext.py +318 -0
  158. py4heappe/core/models/submitted_task_info_ext.py +370 -0
  159. py4heappe/core/models/synchronizable_files_ext.py +92 -0
  160. py4heappe/core/models/task_detailed_report_ext.py +318 -0
  161. py4heappe/core/models/task_file_offset_ext.py +162 -0
  162. py4heappe/core/models/task_paralization_parameter_ext.py +162 -0
  163. py4heappe/core/models/task_priority_ext.py +97 -0
  164. py4heappe/core/models/task_report_ext.py +266 -0
  165. py4heappe/core/models/task_specification_ext.py +682 -0
  166. py4heappe/core/models/task_state_ext.py +95 -0
  167. py4heappe/core/models/test_cluster_access_for_account_model.py +162 -0
  168. py4heappe/core/models/test_cluster_access_for_account_model_obsolete.py +162 -0
  169. py4heappe/core/models/unauthorized_result.py +110 -0
  170. py4heappe/core/models/usage_type.py +90 -0
  171. py4heappe/core/models/usage_type_ext.py +90 -0
  172. py4heappe/core/models/user_group_detailed_report_ext.py +240 -0
  173. py4heappe/core/models/user_group_list_report_ext.py +240 -0
  174. py4heappe/core/models/user_group_report_ext.py +240 -0
  175. py4heappe/core/models/version_information_ext.py +162 -0
  176. py4heappe/core/rest.py +311 -0
  177. py4heappe-1.0.0.dist-info/METADATA +147 -0
  178. py4heappe-1.0.0.dist-info/RECORD +183 -0
  179. py4heappe-1.0.0.dist-info/WHEEL +5 -0
  180. py4heappe-1.0.0.dist-info/entry_points.txt +2 -0
  181. py4heappe-1.0.0.dist-info/licenses/LICENSE +20 -0
  182. py4heappe-1.0.0.dist-info/top_level.txt +3 -0
  183. py4heappe_cli.py +22 -0
@@ -0,0 +1,136 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ HEAppE Web API
5
+
6
+ HEAppE middleware API v4.2.1 # noqa: E501
7
+
8
+ OpenAPI spec version: v4.2.1
9
+ Contact: support.heappe@it4i.cz
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+ """
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ class PasswordCredentialsExt(object):
19
+ """NOTE: This class is auto generated by the swagger code generator program.
20
+
21
+ Do not edit the class manually.
22
+ """
23
+ """
24
+ Attributes:
25
+ swagger_types (dict): The key is attribute name
26
+ and the value is attribute type.
27
+ attribute_map (dict): The key is attribute name
28
+ and the value is json key in definition.
29
+ """
30
+ swagger_types = {
31
+ 'username': 'str',
32
+ 'password': 'str'
33
+ }
34
+
35
+ attribute_map = {
36
+ 'username': 'Username',
37
+ 'password': 'Password'
38
+ }
39
+
40
+ def __init__(self, username=None, password=None): # noqa: E501
41
+ """PasswordCredentialsExt - a model defined in Swagger""" # noqa: E501
42
+ self._username = None
43
+ self._password = None
44
+ self.discriminator = None
45
+ if username is not None:
46
+ self.username = username
47
+ if password is not None:
48
+ self.password = password
49
+
50
+ @property
51
+ def username(self):
52
+ """Gets the username of this PasswordCredentialsExt. # noqa: E501
53
+
54
+
55
+ :return: The username of this PasswordCredentialsExt. # noqa: E501
56
+ :rtype: str
57
+ """
58
+ return self._username
59
+
60
+ @username.setter
61
+ def username(self, username):
62
+ """Sets the username of this PasswordCredentialsExt.
63
+
64
+
65
+ :param username: The username of this PasswordCredentialsExt. # noqa: E501
66
+ :type: str
67
+ """
68
+
69
+ self._username = username
70
+
71
+ @property
72
+ def password(self):
73
+ """Gets the password of this PasswordCredentialsExt. # noqa: E501
74
+
75
+
76
+ :return: The password of this PasswordCredentialsExt. # noqa: E501
77
+ :rtype: str
78
+ """
79
+ return self._password
80
+
81
+ @password.setter
82
+ def password(self, password):
83
+ """Sets the password of this PasswordCredentialsExt.
84
+
85
+
86
+ :param password: The password of this PasswordCredentialsExt. # noqa: E501
87
+ :type: str
88
+ """
89
+
90
+ self._password = password
91
+
92
+ def to_dict(self):
93
+ """Returns the model properties as a dict"""
94
+ result = {}
95
+
96
+ for attr, _ in six.iteritems(self.swagger_types):
97
+ value = getattr(self, attr)
98
+ if isinstance(value, list):
99
+ result[attr] = list(map(
100
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
101
+ value
102
+ ))
103
+ elif hasattr(value, "to_dict"):
104
+ result[attr] = value.to_dict()
105
+ elif isinstance(value, dict):
106
+ result[attr] = dict(map(
107
+ lambda item: (item[0], item[1].to_dict())
108
+ if hasattr(item[1], "to_dict") else item,
109
+ value.items()
110
+ ))
111
+ else:
112
+ result[attr] = value
113
+ if issubclass(PasswordCredentialsExt, dict):
114
+ for key, value in self.items():
115
+ result[key] = value
116
+
117
+ return result
118
+
119
+ def to_str(self):
120
+ """Returns the string representation of the model"""
121
+ return pprint.pformat(self.to_dict())
122
+
123
+ def __repr__(self):
124
+ """For `print` and `pprint`"""
125
+ return self.to_str()
126
+
127
+ def __eq__(self, other):
128
+ """Returns true if both objects are equal"""
129
+ if not isinstance(other, PasswordCredentialsExt):
130
+ return False
131
+
132
+ return self.__dict__ == other.__dict__
133
+
134
+ def __ne__(self, other):
135
+ """Returns true if both objects are not equal"""
136
+ return not self == other
@@ -0,0 +1,89 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ HEAppE Web API
5
+
6
+ HEAppE middleware API v4.2.1 # noqa: E501
7
+
8
+ OpenAPI spec version: v4.2.1
9
+ Contact: support.heappe@it4i.cz
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+ """
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ class ProblemDetails(dict):
19
+ """NOTE: This class is auto generated by the swagger code generator program.
20
+
21
+ Do not edit the class manually.
22
+ """
23
+ """
24
+ Attributes:
25
+ swagger_types (dict): The key is attribute name
26
+ and the value is attribute type.
27
+ attribute_map (dict): The key is attribute name
28
+ and the value is json key in definition.
29
+ """
30
+ swagger_types = {
31
+ }
32
+ if hasattr(dict, "swagger_types"):
33
+ swagger_types.update(dict.swagger_types)
34
+
35
+ attribute_map = {
36
+ }
37
+ if hasattr(dict, "attribute_map"):
38
+ attribute_map.update(dict.attribute_map)
39
+
40
+ def __init__(self, *args, **kwargs): # noqa: E501
41
+ """ProblemDetails - a model defined in Swagger""" # noqa: E501
42
+ self.discriminator = None
43
+ dict.__init__(self, *args, **kwargs)
44
+
45
+ def to_dict(self):
46
+ """Returns the model properties as a dict"""
47
+ result = {}
48
+
49
+ for attr, _ in six.iteritems(self.swagger_types):
50
+ value = getattr(self, attr)
51
+ if isinstance(value, list):
52
+ result[attr] = list(map(
53
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
54
+ value
55
+ ))
56
+ elif hasattr(value, "to_dict"):
57
+ result[attr] = value.to_dict()
58
+ elif isinstance(value, dict):
59
+ result[attr] = dict(map(
60
+ lambda item: (item[0], item[1].to_dict())
61
+ if hasattr(item[1], "to_dict") else item,
62
+ value.items()
63
+ ))
64
+ else:
65
+ result[attr] = value
66
+ if issubclass(ProblemDetails, dict):
67
+ for key, value in self.items():
68
+ result[key] = value
69
+
70
+ return result
71
+
72
+ def to_str(self):
73
+ """Returns the string representation of the model"""
74
+ return pprint.pformat(self.to_dict())
75
+
76
+ def __repr__(self):
77
+ """For `print` and `pprint`"""
78
+ return self.to_str()
79
+
80
+ def __eq__(self, other):
81
+ """Returns true if both objects are equal"""
82
+ if not isinstance(other, ProblemDetails):
83
+ return False
84
+
85
+ return self.__dict__ == other.__dict__
86
+
87
+ def __ne__(self, other):
88
+ """Returns true if both objects are not equal"""
89
+ return not self == other
@@ -0,0 +1,482 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ HEAppE Web API
5
+
6
+ HEAppE middleware API v4.2.1 # noqa: E501
7
+
8
+ OpenAPI spec version: v4.2.1
9
+ Contact: support.heappe@it4i.cz
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+ """
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ class Project(object):
19
+ """NOTE: This class is auto generated by the swagger code generator program.
20
+
21
+ Do not edit the class manually.
22
+ """
23
+ """
24
+ Attributes:
25
+ swagger_types (dict): The key is attribute name
26
+ and the value is attribute type.
27
+ attribute_map (dict): The key is attribute name
28
+ and the value is json key in definition.
29
+ """
30
+ swagger_types = {
31
+ 'id': 'int',
32
+ 'name': 'str',
33
+ 'description': 'str',
34
+ 'accounting_string': 'str',
35
+ 'start_date': 'datetime',
36
+ 'end_date': 'datetime',
37
+ 'created_at': 'datetime',
38
+ 'modified_at': 'datetime',
39
+ 'is_deleted': 'bool',
40
+ 'use_accounting_string_for_scheduler': 'bool',
41
+ 'usage_type': 'UsageType',
42
+ 'adaptor_user_groups': 'list[AdaptorUserGroup]',
43
+ 'cluster_projects': 'list[ClusterProject]',
44
+ 'command_templates': 'list[CommandTemplate]',
45
+ 'project_contacts': 'list[ProjectContact]'
46
+ }
47
+
48
+ attribute_map = {
49
+ 'id': 'Id',
50
+ 'name': 'Name',
51
+ 'description': 'Description',
52
+ 'accounting_string': 'AccountingString',
53
+ 'start_date': 'StartDate',
54
+ 'end_date': 'EndDate',
55
+ 'created_at': 'CreatedAt',
56
+ 'modified_at': 'ModifiedAt',
57
+ 'is_deleted': 'IsDeleted',
58
+ 'use_accounting_string_for_scheduler': 'UseAccountingStringForScheduler',
59
+ 'usage_type': 'UsageType',
60
+ 'adaptor_user_groups': 'AdaptorUserGroups',
61
+ 'cluster_projects': 'ClusterProjects',
62
+ 'command_templates': 'CommandTemplates',
63
+ 'project_contacts': 'ProjectContacts'
64
+ }
65
+
66
+ def __init__(self, id=None, name=None, description=None, accounting_string=None, start_date=None, end_date=None, created_at=None, modified_at=None, is_deleted=None, use_accounting_string_for_scheduler=None, usage_type=None, adaptor_user_groups=None, cluster_projects=None, command_templates=None, project_contacts=None): # noqa: E501
67
+ """Project - a model defined in Swagger""" # noqa: E501
68
+ self._id = None
69
+ self._name = None
70
+ self._description = None
71
+ self._accounting_string = None
72
+ self._start_date = None
73
+ self._end_date = None
74
+ self._created_at = None
75
+ self._modified_at = None
76
+ self._is_deleted = None
77
+ self._use_accounting_string_for_scheduler = None
78
+ self._usage_type = None
79
+ self._adaptor_user_groups = None
80
+ self._cluster_projects = None
81
+ self._command_templates = None
82
+ self._project_contacts = None
83
+ self.discriminator = None
84
+ if id is not None:
85
+ self.id = id
86
+ self.name = name
87
+ if description is not None:
88
+ self.description = description
89
+ self.accounting_string = accounting_string
90
+ self.start_date = start_date
91
+ self.end_date = end_date
92
+ self.created_at = created_at
93
+ if modified_at is not None:
94
+ self.modified_at = modified_at
95
+ self.is_deleted = is_deleted
96
+ self.use_accounting_string_for_scheduler = use_accounting_string_for_scheduler
97
+ self.usage_type = usage_type
98
+ if adaptor_user_groups is not None:
99
+ self.adaptor_user_groups = adaptor_user_groups
100
+ if cluster_projects is not None:
101
+ self.cluster_projects = cluster_projects
102
+ if command_templates is not None:
103
+ self.command_templates = command_templates
104
+ if project_contacts is not None:
105
+ self.project_contacts = project_contacts
106
+
107
+ @property
108
+ def id(self):
109
+ """Gets the id of this Project. # noqa: E501
110
+
111
+
112
+ :return: The id of this Project. # noqa: E501
113
+ :rtype: int
114
+ """
115
+ return self._id
116
+
117
+ @id.setter
118
+ def id(self, id):
119
+ """Sets the id of this Project.
120
+
121
+
122
+ :param id: The id of this Project. # noqa: E501
123
+ :type: int
124
+ """
125
+
126
+ self._id = id
127
+
128
+ @property
129
+ def name(self):
130
+ """Gets the name of this Project. # noqa: E501
131
+
132
+
133
+ :return: The name of this Project. # noqa: E501
134
+ :rtype: str
135
+ """
136
+ return self._name
137
+
138
+ @name.setter
139
+ def name(self, name):
140
+ """Sets the name of this Project.
141
+
142
+
143
+ :param name: The name of this Project. # noqa: E501
144
+ :type: str
145
+ """
146
+ if name is None:
147
+ raise ValueError("Invalid value for `name`, must not be `None`") # noqa: E501
148
+
149
+ self._name = name
150
+
151
+ @property
152
+ def description(self):
153
+ """Gets the description of this Project. # noqa: E501
154
+
155
+
156
+ :return: The description of this Project. # noqa: E501
157
+ :rtype: str
158
+ """
159
+ return self._description
160
+
161
+ @description.setter
162
+ def description(self, description):
163
+ """Sets the description of this Project.
164
+
165
+
166
+ :param description: The description of this Project. # noqa: E501
167
+ :type: str
168
+ """
169
+
170
+ self._description = description
171
+
172
+ @property
173
+ def accounting_string(self):
174
+ """Gets the accounting_string of this Project. # noqa: E501
175
+
176
+
177
+ :return: The accounting_string of this Project. # noqa: E501
178
+ :rtype: str
179
+ """
180
+ return self._accounting_string
181
+
182
+ @accounting_string.setter
183
+ def accounting_string(self, accounting_string):
184
+ """Sets the accounting_string of this Project.
185
+
186
+
187
+ :param accounting_string: The accounting_string of this Project. # noqa: E501
188
+ :type: str
189
+ """
190
+ if accounting_string is None:
191
+ raise ValueError("Invalid value for `accounting_string`, must not be `None`") # noqa: E501
192
+
193
+ self._accounting_string = accounting_string
194
+
195
+ @property
196
+ def start_date(self):
197
+ """Gets the start_date of this Project. # noqa: E501
198
+
199
+
200
+ :return: The start_date of this Project. # noqa: E501
201
+ :rtype: datetime
202
+ """
203
+ return self._start_date
204
+
205
+ @start_date.setter
206
+ def start_date(self, start_date):
207
+ """Sets the start_date of this Project.
208
+
209
+
210
+ :param start_date: The start_date of this Project. # noqa: E501
211
+ :type: datetime
212
+ """
213
+ if start_date is None:
214
+ raise ValueError("Invalid value for `start_date`, must not be `None`") # noqa: E501
215
+
216
+ self._start_date = start_date
217
+
218
+ @property
219
+ def end_date(self):
220
+ """Gets the end_date of this Project. # noqa: E501
221
+
222
+
223
+ :return: The end_date of this Project. # noqa: E501
224
+ :rtype: datetime
225
+ """
226
+ return self._end_date
227
+
228
+ @end_date.setter
229
+ def end_date(self, end_date):
230
+ """Sets the end_date of this Project.
231
+
232
+
233
+ :param end_date: The end_date of this Project. # noqa: E501
234
+ :type: datetime
235
+ """
236
+ if end_date is None:
237
+ raise ValueError("Invalid value for `end_date`, must not be `None`") # noqa: E501
238
+
239
+ self._end_date = end_date
240
+
241
+ @property
242
+ def created_at(self):
243
+ """Gets the created_at of this Project. # noqa: E501
244
+
245
+
246
+ :return: The created_at of this Project. # noqa: E501
247
+ :rtype: datetime
248
+ """
249
+ return self._created_at
250
+
251
+ @created_at.setter
252
+ def created_at(self, created_at):
253
+ """Sets the created_at of this Project.
254
+
255
+
256
+ :param created_at: The created_at of this Project. # noqa: E501
257
+ :type: datetime
258
+ """
259
+ if created_at is None:
260
+ raise ValueError("Invalid value for `created_at`, must not be `None`") # noqa: E501
261
+
262
+ self._created_at = created_at
263
+
264
+ @property
265
+ def modified_at(self):
266
+ """Gets the modified_at of this Project. # noqa: E501
267
+
268
+
269
+ :return: The modified_at of this Project. # noqa: E501
270
+ :rtype: datetime
271
+ """
272
+ return self._modified_at
273
+
274
+ @modified_at.setter
275
+ def modified_at(self, modified_at):
276
+ """Sets the modified_at of this Project.
277
+
278
+
279
+ :param modified_at: The modified_at of this Project. # noqa: E501
280
+ :type: datetime
281
+ """
282
+
283
+ self._modified_at = modified_at
284
+
285
+ @property
286
+ def is_deleted(self):
287
+ """Gets the is_deleted of this Project. # noqa: E501
288
+
289
+
290
+ :return: The is_deleted of this Project. # noqa: E501
291
+ :rtype: bool
292
+ """
293
+ return self._is_deleted
294
+
295
+ @is_deleted.setter
296
+ def is_deleted(self, is_deleted):
297
+ """Sets the is_deleted of this Project.
298
+
299
+
300
+ :param is_deleted: The is_deleted of this Project. # noqa: E501
301
+ :type: bool
302
+ """
303
+ if is_deleted is None:
304
+ raise ValueError("Invalid value for `is_deleted`, must not be `None`") # noqa: E501
305
+
306
+ self._is_deleted = is_deleted
307
+
308
+ @property
309
+ def use_accounting_string_for_scheduler(self):
310
+ """Gets the use_accounting_string_for_scheduler of this Project. # noqa: E501
311
+
312
+
313
+ :return: The use_accounting_string_for_scheduler of this Project. # noqa: E501
314
+ :rtype: bool
315
+ """
316
+ return self._use_accounting_string_for_scheduler
317
+
318
+ @use_accounting_string_for_scheduler.setter
319
+ def use_accounting_string_for_scheduler(self, use_accounting_string_for_scheduler):
320
+ """Sets the use_accounting_string_for_scheduler of this Project.
321
+
322
+
323
+ :param use_accounting_string_for_scheduler: The use_accounting_string_for_scheduler of this Project. # noqa: E501
324
+ :type: bool
325
+ """
326
+ if use_accounting_string_for_scheduler is None:
327
+ raise ValueError("Invalid value for `use_accounting_string_for_scheduler`, must not be `None`") # noqa: E501
328
+
329
+ self._use_accounting_string_for_scheduler = use_accounting_string_for_scheduler
330
+
331
+ @property
332
+ def usage_type(self):
333
+ """Gets the usage_type of this Project. # noqa: E501
334
+
335
+
336
+ :return: The usage_type of this Project. # noqa: E501
337
+ :rtype: UsageType
338
+ """
339
+ return self._usage_type
340
+
341
+ @usage_type.setter
342
+ def usage_type(self, usage_type):
343
+ """Sets the usage_type of this Project.
344
+
345
+
346
+ :param usage_type: The usage_type of this Project. # noqa: E501
347
+ :type: UsageType
348
+ """
349
+ if usage_type is None:
350
+ raise ValueError("Invalid value for `usage_type`, must not be `None`") # noqa: E501
351
+
352
+ self._usage_type = usage_type
353
+
354
+ @property
355
+ def adaptor_user_groups(self):
356
+ """Gets the adaptor_user_groups of this Project. # noqa: E501
357
+
358
+
359
+ :return: The adaptor_user_groups of this Project. # noqa: E501
360
+ :rtype: list[AdaptorUserGroup]
361
+ """
362
+ return self._adaptor_user_groups
363
+
364
+ @adaptor_user_groups.setter
365
+ def adaptor_user_groups(self, adaptor_user_groups):
366
+ """Sets the adaptor_user_groups of this Project.
367
+
368
+
369
+ :param adaptor_user_groups: The adaptor_user_groups of this Project. # noqa: E501
370
+ :type: list[AdaptorUserGroup]
371
+ """
372
+
373
+ self._adaptor_user_groups = adaptor_user_groups
374
+
375
+ @property
376
+ def cluster_projects(self):
377
+ """Gets the cluster_projects of this Project. # noqa: E501
378
+
379
+
380
+ :return: The cluster_projects of this Project. # noqa: E501
381
+ :rtype: list[ClusterProject]
382
+ """
383
+ return self._cluster_projects
384
+
385
+ @cluster_projects.setter
386
+ def cluster_projects(self, cluster_projects):
387
+ """Sets the cluster_projects of this Project.
388
+
389
+
390
+ :param cluster_projects: The cluster_projects of this Project. # noqa: E501
391
+ :type: list[ClusterProject]
392
+ """
393
+
394
+ self._cluster_projects = cluster_projects
395
+
396
+ @property
397
+ def command_templates(self):
398
+ """Gets the command_templates of this Project. # noqa: E501
399
+
400
+
401
+ :return: The command_templates of this Project. # noqa: E501
402
+ :rtype: list[CommandTemplate]
403
+ """
404
+ return self._command_templates
405
+
406
+ @command_templates.setter
407
+ def command_templates(self, command_templates):
408
+ """Sets the command_templates of this Project.
409
+
410
+
411
+ :param command_templates: The command_templates of this Project. # noqa: E501
412
+ :type: list[CommandTemplate]
413
+ """
414
+
415
+ self._command_templates = command_templates
416
+
417
+ @property
418
+ def project_contacts(self):
419
+ """Gets the project_contacts of this Project. # noqa: E501
420
+
421
+
422
+ :return: The project_contacts of this Project. # noqa: E501
423
+ :rtype: list[ProjectContact]
424
+ """
425
+ return self._project_contacts
426
+
427
+ @project_contacts.setter
428
+ def project_contacts(self, project_contacts):
429
+ """Sets the project_contacts of this Project.
430
+
431
+
432
+ :param project_contacts: The project_contacts of this Project. # noqa: E501
433
+ :type: list[ProjectContact]
434
+ """
435
+
436
+ self._project_contacts = project_contacts
437
+
438
+ def to_dict(self):
439
+ """Returns the model properties as a dict"""
440
+ result = {}
441
+
442
+ for attr, _ in six.iteritems(self.swagger_types):
443
+ value = getattr(self, attr)
444
+ if isinstance(value, list):
445
+ result[attr] = list(map(
446
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
447
+ value
448
+ ))
449
+ elif hasattr(value, "to_dict"):
450
+ result[attr] = value.to_dict()
451
+ elif isinstance(value, dict):
452
+ result[attr] = dict(map(
453
+ lambda item: (item[0], item[1].to_dict())
454
+ if hasattr(item[1], "to_dict") else item,
455
+ value.items()
456
+ ))
457
+ else:
458
+ result[attr] = value
459
+ if issubclass(Project, dict):
460
+ for key, value in self.items():
461
+ result[key] = value
462
+
463
+ return result
464
+
465
+ def to_str(self):
466
+ """Returns the string representation of the model"""
467
+ return pprint.pformat(self.to_dict())
468
+
469
+ def __repr__(self):
470
+ """For `print` and `pprint`"""
471
+ return self.to_str()
472
+
473
+ def __eq__(self, other):
474
+ """Returns true if both objects are equal"""
475
+ if not isinstance(other, Project):
476
+ return False
477
+
478
+ return self.__dict__ == other.__dict__
479
+
480
+ def __ne__(self, other):
481
+ """Returns true if both objects are not equal"""
482
+ return not self == other