anyscale 0.24.88__py3-none-any.whl → 0.25.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 (115) hide show
  1. anyscale/__init__.py +46 -0
  2. anyscale/_private/anyscale_client/anyscale_client.py +148 -28
  3. anyscale/_private/anyscale_client/common.py +74 -1
  4. anyscale/_private/anyscale_client/fake_anyscale_client.py +165 -1
  5. anyscale/_private/docgen/README.md +1 -1
  6. anyscale/_private/docgen/__main__.py +62 -19
  7. anyscale/_private/docgen/api.md +0 -20
  8. anyscale/_private/docgen/generator.py +3 -2
  9. anyscale/_private/docgen/models.md +1 -46
  10. anyscale/_private/workload/workload_config.py +1 -1
  11. anyscale/aggregated_instance_usage/__init__.py +1 -1
  12. anyscale/aggregated_instance_usage/commands.py +2 -4
  13. anyscale/aggregated_instance_usage/models.py +8 -8
  14. anyscale/client/README.md +15 -22
  15. anyscale/client/openapi_client/__init__.py +10 -14
  16. anyscale/client/openapi_client/api/default_api.py +634 -957
  17. anyscale/client/openapi_client/models/__init__.py +10 -14
  18. anyscale/client/openapi_client/models/{session_event_types.py → cloud_deployment_config.py} +35 -24
  19. anyscale/client/openapi_client/models/{platformfinetuningjob_response.py → clouddeploymentconfig_response.py} +11 -11
  20. anyscale/client/openapi_client/models/{company_size.py → cluster_size.py} +10 -10
  21. anyscale/client/openapi_client/models/cluster_status_details.py +2 -1
  22. anyscale/client/openapi_client/models/create_experimental_workspace.py +29 -1
  23. anyscale/client/openapi_client/models/{resubmit_ft_job_request.py → describe_machine_pool_request.py} +21 -20
  24. anyscale/client/openapi_client/models/describe_machine_pool_response.py +123 -0
  25. anyscale/client/openapi_client/models/{fine_tuning_job_status.py → describemachinepoolresponse_response.py} +34 -16
  26. anyscale/client/openapi_client/models/machine_allocation_state.py +3 -1
  27. anyscale/client/openapi_client/models/machine_state_info.py +326 -0
  28. anyscale/client/openapi_client/models/organization_marketing_questions.py +80 -54
  29. anyscale/client/openapi_client/models/request_state_info.py +210 -0
  30. anyscale/client/openapi_client/models/{sessionevent_list_response.py → scheduler_info.py} +43 -38
  31. anyscale/client/openapi_client/models/usage_by_cluster.py +28 -1
  32. anyscale/client/openapi_client/models/usage_by_user.py +30 -3
  33. anyscale/client/openapi_client/models/workload_info.py +210 -0
  34. anyscale/cloud/__init__.py +83 -0
  35. anyscale/cloud/_private/cloud_sdk.py +25 -0
  36. anyscale/cloud/commands.py +45 -0
  37. anyscale/cloud/models.py +91 -0
  38. anyscale/cluster_compute.py +1 -1
  39. anyscale/commands/aggregated_instance_usage_commands.py +4 -4
  40. anyscale/commands/cloud_commands.py +38 -2
  41. anyscale/commands/command_examples.py +61 -0
  42. anyscale/commands/job_commands.py +15 -3
  43. anyscale/commands/machine_pool_commands.py +113 -1
  44. anyscale/commands/organization_invitation_commands.py +98 -0
  45. anyscale/commands/project_commands.py +52 -2
  46. anyscale/commands/resource_quota_commands.py +98 -11
  47. anyscale/commands/service_commands.py +1 -1
  48. anyscale/commands/session_commands_hidden.py +5 -1
  49. anyscale/commands/user_commands.py +1 -1
  50. anyscale/commands/util.py +2 -2
  51. anyscale/commands/workspace_commands.py +1 -1
  52. anyscale/connect.py +1 -1
  53. anyscale/connect_utils/project.py +7 -4
  54. anyscale/controllers/cloud_controller.py +6 -6
  55. anyscale/controllers/cloud_functional_verification_controller.py +1 -1
  56. anyscale/controllers/cluster_controller.py +2 -2
  57. anyscale/controllers/compute_config_controller.py +1 -1
  58. anyscale/controllers/experimental_integrations_controller.py +1 -1
  59. anyscale/controllers/job_controller.py +8 -3
  60. anyscale/controllers/list_controller.py +2 -2
  61. anyscale/controllers/machine_pool_controller.py +12 -1
  62. anyscale/controllers/project_controller.py +4 -3
  63. anyscale/controllers/schedule_controller.py +1 -1
  64. anyscale/controllers/service_controller.py +1 -1
  65. anyscale/controllers/workspace_controller.py +1 -1
  66. anyscale/models/job_model.py +1 -1
  67. anyscale/organization_invitation/__init__.py +61 -0
  68. anyscale/organization_invitation/_private/organization_invitation_sdk.py +24 -0
  69. anyscale/organization_invitation/commands.py +84 -0
  70. anyscale/organization_invitation/models.py +45 -0
  71. anyscale/project/__init__.py +35 -0
  72. anyscale/project/_private/project_sdk.py +27 -0
  73. anyscale/project/commands.py +56 -0
  74. anyscale/project/models.py +91 -0
  75. anyscale/{project.py → project_utils.py} +3 -4
  76. anyscale/resource_quota/__init__.py +99 -0
  77. anyscale/resource_quota/_private/resource_quota_sdk.py +111 -0
  78. anyscale/resource_quota/commands.py +150 -0
  79. anyscale/resource_quota/models.py +303 -0
  80. anyscale/scripts.py +4 -0
  81. anyscale/sdk/anyscale_client/__init__.py +0 -5
  82. anyscale/sdk/anyscale_client/api/default_api.py +0 -150
  83. anyscale/sdk/anyscale_client/models/__init__.py +0 -5
  84. anyscale/sdk/anyscale_client/models/cluster_status_details.py +2 -1
  85. anyscale/sdk/anyscale_client/sdk.py +1 -1
  86. anyscale/user/__init__.py +1 -1
  87. anyscale/user/commands.py +1 -1
  88. anyscale/user/models.py +25 -15
  89. anyscale/util.py +15 -0
  90. anyscale/utils/cloud_utils.py +1 -1
  91. anyscale/version.py +1 -1
  92. anyscale/workspace_utils.py +1 -1
  93. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/METADATA +1 -5
  94. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/RECORD +100 -94
  95. anyscale/client/openapi_client/models/create_fine_tuning_hyperparameters.py +0 -156
  96. anyscale/client/openapi_client/models/create_fine_tuning_job_product_request.py +0 -353
  97. anyscale/client/openapi_client/models/finish_ft_job_request.py +0 -204
  98. anyscale/client/openapi_client/models/log_level_types.py +0 -100
  99. anyscale/client/openapi_client/models/platform_fine_tuning_job.py +0 -577
  100. anyscale/client/openapi_client/models/platformfinetuningjob_list_response.py +0 -147
  101. anyscale/client/openapi_client/models/session_event.py +0 -267
  102. anyscale/client/openapi_client/models/session_event_cause.py +0 -150
  103. anyscale/controllers/resource_quota_controller.py +0 -183
  104. anyscale/sdk/anyscale_client/models/log_level_types.py +0 -100
  105. anyscale/sdk/anyscale_client/models/session_event.py +0 -267
  106. anyscale/sdk/anyscale_client/models/session_event_cause.py +0 -150
  107. anyscale/sdk/anyscale_client/models/session_event_types.py +0 -111
  108. anyscale/sdk/anyscale_client/models/sessionevent_list_response.py +0 -147
  109. anyscale/utils/imports/azure.py +0 -14
  110. /anyscale/{cloud.py → cloud_utils.py} +0 -0
  111. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/LICENSE +0 -0
  112. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/NOTICE +0 -0
  113. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/WHEEL +0 -0
  114. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/entry_points.txt +0 -0
  115. {anyscale-0.24.88.dist-info → anyscale-0.25.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,210 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ Managed Ray API
5
+
6
+ No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
7
+
8
+ The version of the OpenAPI document: 0.1.0
9
+ Generated by: https://openapi-generator.tech
10
+ """
11
+
12
+
13
+ import pprint
14
+ import re # noqa: F401
15
+
16
+ import six
17
+
18
+ from openapi_client.configuration import Configuration
19
+
20
+
21
+ class RequestStateInfo(object):
22
+ """NOTE: This class is auto generated by OpenAPI Generator.
23
+ Ref: https://openapi-generator.tech
24
+
25
+ Do not edit the class manually.
26
+ """
27
+
28
+ """
29
+ Attributes:
30
+ openapi_types (dict): The key is attribute name
31
+ and the value is attribute type.
32
+ attribute_map (dict): The key is attribute name
33
+ and the value is json key in definition.
34
+ """
35
+ openapi_types = {
36
+ 'size': 'int',
37
+ 'machine_type': 'str',
38
+ 'workload_info': 'WorkloadInfo',
39
+ 'partition_scores': 'dict(str, int)'
40
+ }
41
+
42
+ attribute_map = {
43
+ 'size': 'size',
44
+ 'machine_type': 'machine_type',
45
+ 'workload_info': 'workload_info',
46
+ 'partition_scores': 'partition_scores'
47
+ }
48
+
49
+ def __init__(self, size=None, machine_type=None, workload_info=None, partition_scores=None, local_vars_configuration=None): # noqa: E501
50
+ """RequestStateInfo - a model defined in OpenAPI""" # noqa: E501
51
+ if local_vars_configuration is None:
52
+ local_vars_configuration = Configuration()
53
+ self.local_vars_configuration = local_vars_configuration
54
+
55
+ self._size = None
56
+ self._machine_type = None
57
+ self._workload_info = None
58
+ self._partition_scores = None
59
+ self.discriminator = None
60
+
61
+ self.size = size
62
+ self.machine_type = machine_type
63
+ self.workload_info = workload_info
64
+ self.partition_scores = partition_scores
65
+
66
+ @property
67
+ def size(self):
68
+ """Gets the size of this RequestStateInfo. # noqa: E501
69
+
70
+ The size of the request. # noqa: E501
71
+
72
+ :return: The size of this RequestStateInfo. # noqa: E501
73
+ :rtype: int
74
+ """
75
+ return self._size
76
+
77
+ @size.setter
78
+ def size(self, size):
79
+ """Sets the size of this RequestStateInfo.
80
+
81
+ The size of the request. # noqa: E501
82
+
83
+ :param size: The size of this RequestStateInfo. # noqa: E501
84
+ :type: int
85
+ """
86
+ if self.local_vars_configuration.client_side_validation and size is None: # noqa: E501
87
+ raise ValueError("Invalid value for `size`, must not be `None`") # noqa: E501
88
+
89
+ self._size = size
90
+
91
+ @property
92
+ def machine_type(self):
93
+ """Gets the machine_type of this RequestStateInfo. # noqa: E501
94
+
95
+ The type of the machine. # noqa: E501
96
+
97
+ :return: The machine_type of this RequestStateInfo. # noqa: E501
98
+ :rtype: str
99
+ """
100
+ return self._machine_type
101
+
102
+ @machine_type.setter
103
+ def machine_type(self, machine_type):
104
+ """Sets the machine_type of this RequestStateInfo.
105
+
106
+ The type of the machine. # noqa: E501
107
+
108
+ :param machine_type: The machine_type of this RequestStateInfo. # noqa: E501
109
+ :type: str
110
+ """
111
+ if self.local_vars_configuration.client_side_validation and machine_type is None: # noqa: E501
112
+ raise ValueError("Invalid value for `machine_type`, must not be `None`") # noqa: E501
113
+
114
+ self._machine_type = machine_type
115
+
116
+ @property
117
+ def workload_info(self):
118
+ """Gets the workload_info of this RequestStateInfo. # noqa: E501
119
+
120
+ Workload metadata associated with this request. # noqa: E501
121
+
122
+ :return: The workload_info of this RequestStateInfo. # noqa: E501
123
+ :rtype: WorkloadInfo
124
+ """
125
+ return self._workload_info
126
+
127
+ @workload_info.setter
128
+ def workload_info(self, workload_info):
129
+ """Sets the workload_info of this RequestStateInfo.
130
+
131
+ Workload metadata associated with this request. # noqa: E501
132
+
133
+ :param workload_info: The workload_info of this RequestStateInfo. # noqa: E501
134
+ :type: WorkloadInfo
135
+ """
136
+ if self.local_vars_configuration.client_side_validation and workload_info is None: # noqa: E501
137
+ raise ValueError("Invalid value for `workload_info`, must not be `None`") # noqa: E501
138
+
139
+ self._workload_info = workload_info
140
+
141
+ @property
142
+ def partition_scores(self):
143
+ """Gets the partition_scores of this RequestStateInfo. # noqa: E501
144
+
145
+ The scores of the partitions. # noqa: E501
146
+
147
+ :return: The partition_scores of this RequestStateInfo. # noqa: E501
148
+ :rtype: dict(str, int)
149
+ """
150
+ return self._partition_scores
151
+
152
+ @partition_scores.setter
153
+ def partition_scores(self, partition_scores):
154
+ """Sets the partition_scores of this RequestStateInfo.
155
+
156
+ The scores of the partitions. # noqa: E501
157
+
158
+ :param partition_scores: The partition_scores of this RequestStateInfo. # noqa: E501
159
+ :type: dict(str, int)
160
+ """
161
+ if self.local_vars_configuration.client_side_validation and partition_scores is None: # noqa: E501
162
+ raise ValueError("Invalid value for `partition_scores`, must not be `None`") # noqa: E501
163
+
164
+ self._partition_scores = partition_scores
165
+
166
+ def to_dict(self):
167
+ """Returns the model properties as a dict"""
168
+ result = {}
169
+
170
+ for attr, _ in six.iteritems(self.openapi_types):
171
+ value = getattr(self, attr)
172
+ if isinstance(value, list):
173
+ result[attr] = list(map(
174
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
175
+ value
176
+ ))
177
+ elif hasattr(value, "to_dict"):
178
+ result[attr] = value.to_dict()
179
+ elif isinstance(value, dict):
180
+ result[attr] = dict(map(
181
+ lambda item: (item[0], item[1].to_dict())
182
+ if hasattr(item[1], "to_dict") else item,
183
+ value.items()
184
+ ))
185
+ else:
186
+ result[attr] = value
187
+
188
+ return result
189
+
190
+ def to_str(self):
191
+ """Returns the string representation of the model"""
192
+ return pprint.pformat(self.to_dict())
193
+
194
+ def __repr__(self):
195
+ """For `print` and `pprint`"""
196
+ return self.to_str()
197
+
198
+ def __eq__(self, other):
199
+ """Returns true if both objects are equal"""
200
+ if not isinstance(other, RequestStateInfo):
201
+ return False
202
+
203
+ return self.to_dict() == other.to_dict()
204
+
205
+ def __ne__(self, other):
206
+ """Returns true if both objects are not equal"""
207
+ if not isinstance(other, RequestStateInfo):
208
+ return True
209
+
210
+ return self.to_dict() != other.to_dict()
@@ -18,7 +18,7 @@ import six
18
18
  from openapi_client.configuration import Configuration
19
19
 
20
20
 
21
- class SessioneventListResponse(object):
21
+ class SchedulerInfo(object):
22
22
  """NOTE: This class is auto generated by OpenAPI Generator.
23
23
  Ref: https://openapi-generator.tech
24
24
 
@@ -33,72 +33,77 @@ class SessioneventListResponse(object):
33
33
  and the value is json key in definition.
34
34
  """
35
35
  openapi_types = {
36
- 'results': 'list[SessionEvent]',
37
- 'metadata': 'ListResponseMetadata'
36
+ 'requests': 'list[RequestStateInfo]',
37
+ 'machines': 'list[MachineStateInfo]'
38
38
  }
39
39
 
40
40
  attribute_map = {
41
- 'results': 'results',
42
- 'metadata': 'metadata'
41
+ 'requests': 'requests',
42
+ 'machines': 'machines'
43
43
  }
44
44
 
45
- def __init__(self, results=None, metadata=None, local_vars_configuration=None): # noqa: E501
46
- """SessioneventListResponse - a model defined in OpenAPI""" # noqa: E501
45
+ def __init__(self, requests=None, machines=None, local_vars_configuration=None): # noqa: E501
46
+ """SchedulerInfo - a model defined in OpenAPI""" # noqa: E501
47
47
  if local_vars_configuration is None:
48
48
  local_vars_configuration = Configuration()
49
49
  self.local_vars_configuration = local_vars_configuration
50
50
 
51
- self._results = None
52
- self._metadata = None
51
+ self._requests = None
52
+ self._machines = None
53
53
  self.discriminator = None
54
54
 
55
- self.results = results
56
- if metadata is not None:
57
- self.metadata = metadata
55
+ self.requests = requests
56
+ self.machines = machines
58
57
 
59
58
  @property
60
- def results(self):
61
- """Gets the results of this SessioneventListResponse. # noqa: E501
59
+ def requests(self):
60
+ """Gets the requests of this SchedulerInfo. # noqa: E501
62
61
 
62
+ Current request states. # noqa: E501
63
63
 
64
- :return: The results of this SessioneventListResponse. # noqa: E501
65
- :rtype: list[SessionEvent]
64
+ :return: The requests of this SchedulerInfo. # noqa: E501
65
+ :rtype: list[RequestStateInfo]
66
66
  """
67
- return self._results
67
+ return self._requests
68
68
 
69
- @results.setter
70
- def results(self, results):
71
- """Sets the results of this SessioneventListResponse.
69
+ @requests.setter
70
+ def requests(self, requests):
71
+ """Sets the requests of this SchedulerInfo.
72
72
 
73
+ Current request states. # noqa: E501
73
74
 
74
- :param results: The results of this SessioneventListResponse. # noqa: E501
75
- :type: list[SessionEvent]
75
+ :param requests: The requests of this SchedulerInfo. # noqa: E501
76
+ :type: list[RequestStateInfo]
76
77
  """
77
- if self.local_vars_configuration.client_side_validation and results is None: # noqa: E501
78
- raise ValueError("Invalid value for `results`, must not be `None`") # noqa: E501
78
+ if self.local_vars_configuration.client_side_validation and requests is None: # noqa: E501
79
+ raise ValueError("Invalid value for `requests`, must not be `None`") # noqa: E501
79
80
 
80
- self._results = results
81
+ self._requests = requests
81
82
 
82
83
  @property
83
- def metadata(self):
84
- """Gets the metadata of this SessioneventListResponse. # noqa: E501
84
+ def machines(self):
85
+ """Gets the machines of this SchedulerInfo. # noqa: E501
85
86
 
87
+ Current machine states. # noqa: E501
86
88
 
87
- :return: The metadata of this SessioneventListResponse. # noqa: E501
88
- :rtype: ListResponseMetadata
89
+ :return: The machines of this SchedulerInfo. # noqa: E501
90
+ :rtype: list[MachineStateInfo]
89
91
  """
90
- return self._metadata
92
+ return self._machines
91
93
 
92
- @metadata.setter
93
- def metadata(self, metadata):
94
- """Sets the metadata of this SessioneventListResponse.
94
+ @machines.setter
95
+ def machines(self, machines):
96
+ """Sets the machines of this SchedulerInfo.
95
97
 
98
+ Current machine states. # noqa: E501
96
99
 
97
- :param metadata: The metadata of this SessioneventListResponse. # noqa: E501
98
- :type: ListResponseMetadata
100
+ :param machines: The machines of this SchedulerInfo. # noqa: E501
101
+ :type: list[MachineStateInfo]
99
102
  """
103
+ if self.local_vars_configuration.client_side_validation and machines is None: # noqa: E501
104
+ raise ValueError("Invalid value for `machines`, must not be `None`") # noqa: E501
100
105
 
101
- self._metadata = metadata
106
+ self._machines = machines
102
107
 
103
108
  def to_dict(self):
104
109
  """Returns the model properties as a dict"""
@@ -134,14 +139,14 @@ class SessioneventListResponse(object):
134
139
 
135
140
  def __eq__(self, other):
136
141
  """Returns true if both objects are equal"""
137
- if not isinstance(other, SessioneventListResponse):
142
+ if not isinstance(other, SchedulerInfo):
138
143
  return False
139
144
 
140
145
  return self.to_dict() == other.to_dict()
141
146
 
142
147
  def __ne__(self, other):
143
148
  """Returns true if both objects are not equal"""
144
- if not isinstance(other, SessioneventListResponse):
149
+ if not isinstance(other, SchedulerInfo):
145
150
  return True
146
151
 
147
152
  return self.to_dict() != other.to_dict()
@@ -37,6 +37,7 @@ class UsageByCluster(object):
37
37
  'date': 'date',
38
38
  'user_id': 'str',
39
39
  'user_email': 'str',
40
+ 'user_name': 'str',
40
41
  'cloud_id': 'str',
41
42
  'cloud_name': 'str',
42
43
  'project_id': 'str',
@@ -57,6 +58,7 @@ class UsageByCluster(object):
57
58
  'date': 'date',
58
59
  'user_id': 'user_id',
59
60
  'user_email': 'user_email',
61
+ 'user_name': 'user_name',
60
62
  'cloud_id': 'cloud_id',
61
63
  'cloud_name': 'cloud_name',
62
64
  'project_id': 'project_id',
@@ -72,7 +74,7 @@ class UsageByCluster(object):
72
74
  'workspace_name': 'workspace_name'
73
75
  }
74
76
 
75
- def __init__(self, anyscale_credits=None, date=None, user_id=None, user_email=None, cloud_id=None, cloud_name=None, project_id=None, project_name=None, cluster_id=None, job_id=None, job_name=None, job_queue_id=None, job_queue_name=None, service_id=None, service_name=None, workspace_id=None, workspace_name=None, local_vars_configuration=None): # noqa: E501
77
+ def __init__(self, anyscale_credits=None, date=None, user_id=None, user_email=None, user_name=None, cloud_id=None, cloud_name=None, project_id=None, project_name=None, cluster_id=None, job_id=None, job_name=None, job_queue_id=None, job_queue_name=None, service_id=None, service_name=None, workspace_id=None, workspace_name=None, local_vars_configuration=None): # noqa: E501
76
78
  """UsageByCluster - a model defined in OpenAPI""" # noqa: E501
77
79
  if local_vars_configuration is None:
78
80
  local_vars_configuration = Configuration()
@@ -82,6 +84,7 @@ class UsageByCluster(object):
82
84
  self._date = None
83
85
  self._user_id = None
84
86
  self._user_email = None
87
+ self._user_name = None
85
88
  self._cloud_id = None
86
89
  self._cloud_name = None
87
90
  self._project_id = None
@@ -102,6 +105,7 @@ class UsageByCluster(object):
102
105
  self.date = date
103
106
  self.user_id = user_id
104
107
  self.user_email = user_email
108
+ self.user_name = user_name
105
109
  self.cloud_id = cloud_id
106
110
  self.cloud_name = cloud_name
107
111
  self.project_id = project_id
@@ -214,6 +218,29 @@ class UsageByCluster(object):
214
218
 
215
219
  self._user_email = user_email
216
220
 
221
+ @property
222
+ def user_name(self):
223
+ """Gets the user_name of this UsageByCluster. # noqa: E501
224
+
225
+
226
+ :return: The user_name of this UsageByCluster. # noqa: E501
227
+ :rtype: str
228
+ """
229
+ return self._user_name
230
+
231
+ @user_name.setter
232
+ def user_name(self, user_name):
233
+ """Sets the user_name of this UsageByCluster.
234
+
235
+
236
+ :param user_name: The user_name of this UsageByCluster. # noqa: E501
237
+ :type: str
238
+ """
239
+ if self.local_vars_configuration.client_side_validation and user_name is None: # noqa: E501
240
+ raise ValueError("Invalid value for `user_name`, must not be `None`") # noqa: E501
241
+
242
+ self._user_name = user_name
243
+
217
244
  @property
218
245
  def cloud_id(self):
219
246
  """Gets the cloud_id of this UsageByCluster. # noqa: E501
@@ -36,17 +36,19 @@ class UsageByUser(object):
36
36
  'anyscale_credits': 'float',
37
37
  'date': 'date',
38
38
  'user_id': 'str',
39
- 'user_email': 'str'
39
+ 'user_email': 'str',
40
+ 'user_name': 'str'
40
41
  }
41
42
 
42
43
  attribute_map = {
43
44
  'anyscale_credits': 'anyscale_credits',
44
45
  'date': 'date',
45
46
  'user_id': 'user_id',
46
- 'user_email': 'user_email'
47
+ 'user_email': 'user_email',
48
+ 'user_name': 'user_name'
47
49
  }
48
50
 
49
- def __init__(self, anyscale_credits=None, date=None, user_id=None, user_email=None, local_vars_configuration=None): # noqa: E501
51
+ def __init__(self, anyscale_credits=None, date=None, user_id=None, user_email=None, user_name=None, local_vars_configuration=None): # noqa: E501
50
52
  """UsageByUser - a model defined in OpenAPI""" # noqa: E501
51
53
  if local_vars_configuration is None:
52
54
  local_vars_configuration = Configuration()
@@ -56,6 +58,7 @@ class UsageByUser(object):
56
58
  self._date = None
57
59
  self._user_id = None
58
60
  self._user_email = None
61
+ self._user_name = None
59
62
  self.discriminator = None
60
63
 
61
64
  self.anyscale_credits = anyscale_credits
@@ -63,6 +66,7 @@ class UsageByUser(object):
63
66
  self.date = date
64
67
  self.user_id = user_id
65
68
  self.user_email = user_email
69
+ self.user_name = user_name
66
70
 
67
71
  @property
68
72
  def anyscale_credits(self):
@@ -154,6 +158,29 @@ class UsageByUser(object):
154
158
 
155
159
  self._user_email = user_email
156
160
 
161
+ @property
162
+ def user_name(self):
163
+ """Gets the user_name of this UsageByUser. # noqa: E501
164
+
165
+
166
+ :return: The user_name of this UsageByUser. # noqa: E501
167
+ :rtype: str
168
+ """
169
+ return self._user_name
170
+
171
+ @user_name.setter
172
+ def user_name(self, user_name):
173
+ """Sets the user_name of this UsageByUser.
174
+
175
+
176
+ :param user_name: The user_name of this UsageByUser. # noqa: E501
177
+ :type: str
178
+ """
179
+ if self.local_vars_configuration.client_side_validation and user_name is None: # noqa: E501
180
+ raise ValueError("Invalid value for `user_name`, must not be `None`") # noqa: E501
181
+
182
+ self._user_name = user_name
183
+
157
184
  def to_dict(self):
158
185
  """Returns the model properties as a dict"""
159
186
  result = {}