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,215 @@
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 ProjectContact(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
+ 'project_id': 'int',
32
+ 'project': 'Project',
33
+ 'contact_id': 'int',
34
+ 'contact': 'Contact',
35
+ 'is_pi': 'bool'
36
+ }
37
+
38
+ attribute_map = {
39
+ 'project_id': 'ProjectId',
40
+ 'project': 'Project',
41
+ 'contact_id': 'ContactId',
42
+ 'contact': 'Contact',
43
+ 'is_pi': 'IsPI'
44
+ }
45
+
46
+ def __init__(self, project_id=None, project=None, contact_id=None, contact=None, is_pi=None): # noqa: E501
47
+ """ProjectContact - a model defined in Swagger""" # noqa: E501
48
+ self._project_id = None
49
+ self._project = None
50
+ self._contact_id = None
51
+ self._contact = None
52
+ self._is_pi = None
53
+ self.discriminator = None
54
+ if project_id is not None:
55
+ self.project_id = project_id
56
+ if project is not None:
57
+ self.project = project
58
+ if contact_id is not None:
59
+ self.contact_id = contact_id
60
+ if contact is not None:
61
+ self.contact = contact
62
+ self.is_pi = is_pi
63
+
64
+ @property
65
+ def project_id(self):
66
+ """Gets the project_id of this ProjectContact. # noqa: E501
67
+
68
+
69
+ :return: The project_id of this ProjectContact. # noqa: E501
70
+ :rtype: int
71
+ """
72
+ return self._project_id
73
+
74
+ @project_id.setter
75
+ def project_id(self, project_id):
76
+ """Sets the project_id of this ProjectContact.
77
+
78
+
79
+ :param project_id: The project_id of this ProjectContact. # noqa: E501
80
+ :type: int
81
+ """
82
+
83
+ self._project_id = project_id
84
+
85
+ @property
86
+ def project(self):
87
+ """Gets the project of this ProjectContact. # noqa: E501
88
+
89
+
90
+ :return: The project of this ProjectContact. # noqa: E501
91
+ :rtype: Project
92
+ """
93
+ return self._project
94
+
95
+ @project.setter
96
+ def project(self, project):
97
+ """Sets the project of this ProjectContact.
98
+
99
+
100
+ :param project: The project of this ProjectContact. # noqa: E501
101
+ :type: Project
102
+ """
103
+
104
+ self._project = project
105
+
106
+ @property
107
+ def contact_id(self):
108
+ """Gets the contact_id of this ProjectContact. # noqa: E501
109
+
110
+
111
+ :return: The contact_id of this ProjectContact. # noqa: E501
112
+ :rtype: int
113
+ """
114
+ return self._contact_id
115
+
116
+ @contact_id.setter
117
+ def contact_id(self, contact_id):
118
+ """Sets the contact_id of this ProjectContact.
119
+
120
+
121
+ :param contact_id: The contact_id of this ProjectContact. # noqa: E501
122
+ :type: int
123
+ """
124
+
125
+ self._contact_id = contact_id
126
+
127
+ @property
128
+ def contact(self):
129
+ """Gets the contact of this ProjectContact. # noqa: E501
130
+
131
+
132
+ :return: The contact of this ProjectContact. # noqa: E501
133
+ :rtype: Contact
134
+ """
135
+ return self._contact
136
+
137
+ @contact.setter
138
+ def contact(self, contact):
139
+ """Sets the contact of this ProjectContact.
140
+
141
+
142
+ :param contact: The contact of this ProjectContact. # noqa: E501
143
+ :type: Contact
144
+ """
145
+
146
+ self._contact = contact
147
+
148
+ @property
149
+ def is_pi(self):
150
+ """Gets the is_pi of this ProjectContact. # noqa: E501
151
+
152
+
153
+ :return: The is_pi of this ProjectContact. # noqa: E501
154
+ :rtype: bool
155
+ """
156
+ return self._is_pi
157
+
158
+ @is_pi.setter
159
+ def is_pi(self, is_pi):
160
+ """Sets the is_pi of this ProjectContact.
161
+
162
+
163
+ :param is_pi: The is_pi of this ProjectContact. # noqa: E501
164
+ :type: bool
165
+ """
166
+ if is_pi is None:
167
+ raise ValueError("Invalid value for `is_pi`, must not be `None`") # noqa: E501
168
+
169
+ self._is_pi = is_pi
170
+
171
+ def to_dict(self):
172
+ """Returns the model properties as a dict"""
173
+ result = {}
174
+
175
+ for attr, _ in six.iteritems(self.swagger_types):
176
+ value = getattr(self, attr)
177
+ if isinstance(value, list):
178
+ result[attr] = list(map(
179
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
180
+ value
181
+ ))
182
+ elif hasattr(value, "to_dict"):
183
+ result[attr] = value.to_dict()
184
+ elif isinstance(value, dict):
185
+ result[attr] = dict(map(
186
+ lambda item: (item[0], item[1].to_dict())
187
+ if hasattr(item[1], "to_dict") else item,
188
+ value.items()
189
+ ))
190
+ else:
191
+ result[attr] = value
192
+ if issubclass(ProjectContact, dict):
193
+ for key, value in self.items():
194
+ result[key] = value
195
+
196
+ return result
197
+
198
+ def to_str(self):
199
+ """Returns the string representation of the model"""
200
+ return pprint.pformat(self.to_dict())
201
+
202
+ def __repr__(self):
203
+ """For `print` and `pprint`"""
204
+ return self.to_str()
205
+
206
+ def __eq__(self, other):
207
+ """Returns true if both objects are equal"""
208
+ if not isinstance(other, ProjectContact):
209
+ return False
210
+
211
+ return self.__dict__ == other.__dict__
212
+
213
+ def __ne__(self, other):
214
+ """Returns true if both objects are not equal"""
215
+ return not self == other
@@ -0,0 +1,292 @@
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 ProjectDetailedReportExt(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
+ 'total_usage': 'float',
36
+ 'start_date': 'datetime',
37
+ 'end_date': 'datetime',
38
+ 'clusters': 'list[ClusterDetailedReportExt]'
39
+ }
40
+
41
+ attribute_map = {
42
+ 'id': 'Id',
43
+ 'name': 'Name',
44
+ 'description': 'Description',
45
+ 'accounting_string': 'AccountingString',
46
+ 'total_usage': 'TotalUsage',
47
+ 'start_date': 'StartDate',
48
+ 'end_date': 'EndDate',
49
+ 'clusters': 'Clusters'
50
+ }
51
+
52
+ def __init__(self, id=None, name=None, description=None, accounting_string=None, total_usage=None, start_date=None, end_date=None, clusters=None): # noqa: E501
53
+ """ProjectDetailedReportExt - a model defined in Swagger""" # noqa: E501
54
+ self._id = None
55
+ self._name = None
56
+ self._description = None
57
+ self._accounting_string = None
58
+ self._total_usage = None
59
+ self._start_date = None
60
+ self._end_date = None
61
+ self._clusters = None
62
+ self.discriminator = None
63
+ if id is not None:
64
+ self.id = id
65
+ if name is not None:
66
+ self.name = name
67
+ if description is not None:
68
+ self.description = description
69
+ if accounting_string is not None:
70
+ self.accounting_string = accounting_string
71
+ if total_usage is not None:
72
+ self.total_usage = total_usage
73
+ if start_date is not None:
74
+ self.start_date = start_date
75
+ if end_date is not None:
76
+ self.end_date = end_date
77
+ if clusters is not None:
78
+ self.clusters = clusters
79
+
80
+ @property
81
+ def id(self):
82
+ """Gets the id of this ProjectDetailedReportExt. # noqa: E501
83
+
84
+
85
+ :return: The id of this ProjectDetailedReportExt. # noqa: E501
86
+ :rtype: int
87
+ """
88
+ return self._id
89
+
90
+ @id.setter
91
+ def id(self, id):
92
+ """Sets the id of this ProjectDetailedReportExt.
93
+
94
+
95
+ :param id: The id of this ProjectDetailedReportExt. # noqa: E501
96
+ :type: int
97
+ """
98
+
99
+ self._id = id
100
+
101
+ @property
102
+ def name(self):
103
+ """Gets the name of this ProjectDetailedReportExt. # noqa: E501
104
+
105
+
106
+ :return: The name of this ProjectDetailedReportExt. # noqa: E501
107
+ :rtype: str
108
+ """
109
+ return self._name
110
+
111
+ @name.setter
112
+ def name(self, name):
113
+ """Sets the name of this ProjectDetailedReportExt.
114
+
115
+
116
+ :param name: The name of this ProjectDetailedReportExt. # noqa: E501
117
+ :type: str
118
+ """
119
+
120
+ self._name = name
121
+
122
+ @property
123
+ def description(self):
124
+ """Gets the description of this ProjectDetailedReportExt. # noqa: E501
125
+
126
+
127
+ :return: The description of this ProjectDetailedReportExt. # noqa: E501
128
+ :rtype: str
129
+ """
130
+ return self._description
131
+
132
+ @description.setter
133
+ def description(self, description):
134
+ """Sets the description of this ProjectDetailedReportExt.
135
+
136
+
137
+ :param description: The description of this ProjectDetailedReportExt. # noqa: E501
138
+ :type: str
139
+ """
140
+
141
+ self._description = description
142
+
143
+ @property
144
+ def accounting_string(self):
145
+ """Gets the accounting_string of this ProjectDetailedReportExt. # noqa: E501
146
+
147
+
148
+ :return: The accounting_string of this ProjectDetailedReportExt. # noqa: E501
149
+ :rtype: str
150
+ """
151
+ return self._accounting_string
152
+
153
+ @accounting_string.setter
154
+ def accounting_string(self, accounting_string):
155
+ """Sets the accounting_string of this ProjectDetailedReportExt.
156
+
157
+
158
+ :param accounting_string: The accounting_string of this ProjectDetailedReportExt. # noqa: E501
159
+ :type: str
160
+ """
161
+
162
+ self._accounting_string = accounting_string
163
+
164
+ @property
165
+ def total_usage(self):
166
+ """Gets the total_usage of this ProjectDetailedReportExt. # noqa: E501
167
+
168
+
169
+ :return: The total_usage of this ProjectDetailedReportExt. # noqa: E501
170
+ :rtype: float
171
+ """
172
+ return self._total_usage
173
+
174
+ @total_usage.setter
175
+ def total_usage(self, total_usage):
176
+ """Sets the total_usage of this ProjectDetailedReportExt.
177
+
178
+
179
+ :param total_usage: The total_usage of this ProjectDetailedReportExt. # noqa: E501
180
+ :type: float
181
+ """
182
+
183
+ self._total_usage = total_usage
184
+
185
+ @property
186
+ def start_date(self):
187
+ """Gets the start_date of this ProjectDetailedReportExt. # noqa: E501
188
+
189
+
190
+ :return: The start_date of this ProjectDetailedReportExt. # noqa: E501
191
+ :rtype: datetime
192
+ """
193
+ return self._start_date
194
+
195
+ @start_date.setter
196
+ def start_date(self, start_date):
197
+ """Sets the start_date of this ProjectDetailedReportExt.
198
+
199
+
200
+ :param start_date: The start_date of this ProjectDetailedReportExt. # noqa: E501
201
+ :type: datetime
202
+ """
203
+
204
+ self._start_date = start_date
205
+
206
+ @property
207
+ def end_date(self):
208
+ """Gets the end_date of this ProjectDetailedReportExt. # noqa: E501
209
+
210
+
211
+ :return: The end_date of this ProjectDetailedReportExt. # noqa: E501
212
+ :rtype: datetime
213
+ """
214
+ return self._end_date
215
+
216
+ @end_date.setter
217
+ def end_date(self, end_date):
218
+ """Sets the end_date of this ProjectDetailedReportExt.
219
+
220
+
221
+ :param end_date: The end_date of this ProjectDetailedReportExt. # noqa: E501
222
+ :type: datetime
223
+ """
224
+
225
+ self._end_date = end_date
226
+
227
+ @property
228
+ def clusters(self):
229
+ """Gets the clusters of this ProjectDetailedReportExt. # noqa: E501
230
+
231
+
232
+ :return: The clusters of this ProjectDetailedReportExt. # noqa: E501
233
+ :rtype: list[ClusterDetailedReportExt]
234
+ """
235
+ return self._clusters
236
+
237
+ @clusters.setter
238
+ def clusters(self, clusters):
239
+ """Sets the clusters of this ProjectDetailedReportExt.
240
+
241
+
242
+ :param clusters: The clusters of this ProjectDetailedReportExt. # noqa: E501
243
+ :type: list[ClusterDetailedReportExt]
244
+ """
245
+
246
+ self._clusters = clusters
247
+
248
+ def to_dict(self):
249
+ """Returns the model properties as a dict"""
250
+ result = {}
251
+
252
+ for attr, _ in six.iteritems(self.swagger_types):
253
+ value = getattr(self, attr)
254
+ if isinstance(value, list):
255
+ result[attr] = list(map(
256
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
257
+ value
258
+ ))
259
+ elif hasattr(value, "to_dict"):
260
+ result[attr] = value.to_dict()
261
+ elif isinstance(value, dict):
262
+ result[attr] = dict(map(
263
+ lambda item: (item[0], item[1].to_dict())
264
+ if hasattr(item[1], "to_dict") else item,
265
+ value.items()
266
+ ))
267
+ else:
268
+ result[attr] = value
269
+ if issubclass(ProjectDetailedReportExt, dict):
270
+ for key, value in self.items():
271
+ result[key] = value
272
+
273
+ return result
274
+
275
+ def to_str(self):
276
+ """Returns the string representation of the model"""
277
+ return pprint.pformat(self.to_dict())
278
+
279
+ def __repr__(self):
280
+ """For `print` and `pprint`"""
281
+ return self.to_str()
282
+
283
+ def __eq__(self, other):
284
+ """Returns true if both objects are equal"""
285
+ if not isinstance(other, ProjectDetailedReportExt):
286
+ return False
287
+
288
+ return self.__dict__ == other.__dict__
289
+
290
+ def __ne__(self, other):
291
+ """Returns true if both objects are not equal"""
292
+ return not self == other