anyscale 0.26.57__py3-none-any.whl → 0.26.59__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 (74) hide show
  1. anyscale/_private/anyscale_client/common.py +1 -1
  2. anyscale/client/README.md +60 -0
  3. anyscale/client/openapi_client/__init__.py +42 -0
  4. anyscale/client/openapi_client/api/default_api.py +2541 -303
  5. anyscale/client/openapi_client/models/__init__.py +42 -0
  6. anyscale/client/openapi_client/models/apply_production_service_v2_model.py +31 -3
  7. anyscale/client/openapi_client/models/baseimagesenum.py +76 -1
  8. anyscale/client/openapi_client/models/create_experimental_workspace.py +29 -1
  9. anyscale/client/openapi_client/models/create_internal_production_job.py +31 -3
  10. anyscale/client/openapi_client/models/create_job_queue_requests.py +31 -3
  11. anyscale/client/openapi_client/models/create_workspace_template.py +404 -0
  12. anyscale/client/openapi_client/models/create_workspace_template_version.py +178 -0
  13. anyscale/client/openapi_client/models/delete_resource_tags_request.py +175 -0
  14. anyscale/client/openapi_client/models/deleted_count.py +121 -0
  15. anyscale/client/openapi_client/models/deletedcount_response.py +121 -0
  16. anyscale/client/openapi_client/models/email_verification_request.py +175 -0
  17. anyscale/client/openapi_client/models/email_verification_response.py +120 -0
  18. anyscale/client/openapi_client/models/emailverificationresponse_response.py +121 -0
  19. anyscale/client/openapi_client/models/global_workspace_template.py +465 -0
  20. anyscale/client/openapi_client/models/globalworkspacetemplate_list_response.py +147 -0
  21. anyscale/client/openapi_client/models/job_queues_query.py +31 -3
  22. anyscale/client/openapi_client/models/operator_event.py +256 -0
  23. anyscale/client/openapi_client/models/operator_event_response.py +148 -0
  24. anyscale/client/openapi_client/models/operator_event_type.py +101 -0
  25. anyscale/client/openapi_client/models/published_filter.py +101 -0
  26. anyscale/client/openapi_client/models/resource_tag_record.py +310 -0
  27. anyscale/client/openapi_client/models/resource_tag_resource_type.py +102 -0
  28. anyscale/client/openapi_client/models/resource_tags_list.py +121 -0
  29. anyscale/client/openapi_client/models/resourcetagslist_response.py +121 -0
  30. anyscale/client/openapi_client/models/supportedbaseimagesenum.py +76 -1
  31. anyscale/client/openapi_client/models/tag_key.py +121 -0
  32. anyscale/client/openapi_client/models/tag_key_value.py +148 -0
  33. anyscale/client/openapi_client/models/tag_search_in.py +101 -0
  34. anyscale/client/openapi_client/models/tag_value.py +121 -0
  35. anyscale/client/openapi_client/models/tagkey_list_response.py +147 -0
  36. anyscale/client/openapi_client/models/tagkeyvalue_list_response.py +147 -0
  37. anyscale/client/openapi_client/models/tagvalue_list_response.py +147 -0
  38. anyscale/client/openapi_client/models/task_attempts.py +101 -0
  39. anyscale/client/openapi_client/models/task_table_config.py +29 -3
  40. anyscale/client/openapi_client/models/update_job_queue_request.py +31 -3
  41. anyscale/client/openapi_client/models/upsert_resource_tags_request.py +175 -0
  42. anyscale/client/openapi_client/models/use_work_os_response.py +121 -0
  43. anyscale/client/openapi_client/models/useworkosresponse_response.py +121 -0
  44. anyscale/client/openapi_client/models/work_os_authorize_url_response.py +120 -0
  45. anyscale/client/openapi_client/models/workosauthorizeurlresponse_response.py +121 -0
  46. anyscale/client/openapi_client/models/workspace_system_artifacts.py +234 -0
  47. anyscale/client/openapi_client/models/workspace_template.py +343 -204
  48. anyscale/client/openapi_client/models/workspace_template_category.py +100 -0
  49. anyscale/client/openapi_client/models/workspace_template_complexity.py +101 -0
  50. anyscale/client/openapi_client/models/workspace_template_icon_background_color.py +105 -0
  51. anyscale/client/openapi_client/models/workspace_template_icon_type.py +108 -0
  52. anyscale/client/openapi_client/models/workspace_template_version.py +323 -0
  53. anyscale/client/openapi_client/models/workspace_template_version_data_object.py +323 -0
  54. anyscale/client/openapi_client/models/workspace_templates_sort_field.py +101 -0
  55. anyscale/client/openapi_client/models/workspacetemplate_response.py +121 -0
  56. anyscale/client/openapi_client/models/workspacetemplateversion_list_response.py +147 -0
  57. anyscale/client/openapi_client/models/workspacetemplateversion_response.py +121 -0
  58. anyscale/commands/cloud_commands.py +15 -3
  59. anyscale/commands/command_examples.py +2 -2
  60. anyscale/controllers/cloud_controller.py +7 -3
  61. anyscale/sdk/anyscale_client/models/apply_production_service_v2_model.py +31 -3
  62. anyscale/sdk/anyscale_client/models/apply_service_model.py +31 -3
  63. anyscale/sdk/anyscale_client/models/baseimagesenum.py +76 -1
  64. anyscale/sdk/anyscale_client/models/supportedbaseimagesenum.py +76 -1
  65. anyscale/shared_anyscale_utils/latest_ray_version.py +1 -1
  66. anyscale/shared_anyscale_utils/utils/id_gen.py +3 -0
  67. anyscale/version.py +1 -1
  68. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/METADATA +1 -1
  69. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/RECORD +74 -32
  70. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/WHEEL +0 -0
  71. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/entry_points.txt +0 -0
  72. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/licenses/LICENSE +0 -0
  73. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/licenses/NOTICE +0 -0
  74. {anyscale-0.26.57.dist-info → anyscale-0.26.59.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,101 @@
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 WorkspaceTemplatesSortField(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
+ allowed enum values
30
+ """
31
+ NAME = "NAME"
32
+ CREATED_AT = "CREATED_AT"
33
+ UPDATED_AT = "UPDATED_AT"
34
+
35
+ allowable_values = [NAME, CREATED_AT, UPDATED_AT] # noqa: E501
36
+
37
+ """
38
+ Attributes:
39
+ openapi_types (dict): The key is attribute name
40
+ and the value is attribute type.
41
+ attribute_map (dict): The key is attribute name
42
+ and the value is json key in definition.
43
+ """
44
+ openapi_types = {
45
+ }
46
+
47
+ attribute_map = {
48
+ }
49
+
50
+ def __init__(self, local_vars_configuration=None): # noqa: E501
51
+ """WorkspaceTemplatesSortField - a model defined in OpenAPI""" # noqa: E501
52
+ if local_vars_configuration is None:
53
+ local_vars_configuration = Configuration()
54
+ self.local_vars_configuration = local_vars_configuration
55
+ self.discriminator = None
56
+
57
+ def to_dict(self):
58
+ """Returns the model properties as a dict"""
59
+ result = {}
60
+
61
+ for attr, _ in six.iteritems(self.openapi_types):
62
+ value = getattr(self, attr)
63
+ if isinstance(value, list):
64
+ result[attr] = list(map(
65
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
66
+ value
67
+ ))
68
+ elif hasattr(value, "to_dict"):
69
+ result[attr] = value.to_dict()
70
+ elif isinstance(value, dict):
71
+ result[attr] = dict(map(
72
+ lambda item: (item[0], item[1].to_dict())
73
+ if hasattr(item[1], "to_dict") else item,
74
+ value.items()
75
+ ))
76
+ else:
77
+ result[attr] = value
78
+
79
+ return result
80
+
81
+ def to_str(self):
82
+ """Returns the string representation of the model"""
83
+ return pprint.pformat(self.to_dict())
84
+
85
+ def __repr__(self):
86
+ """For `print` and `pprint`"""
87
+ return self.to_str()
88
+
89
+ def __eq__(self, other):
90
+ """Returns true if both objects are equal"""
91
+ if not isinstance(other, WorkspaceTemplatesSortField):
92
+ return False
93
+
94
+ return self.to_dict() == other.to_dict()
95
+
96
+ def __ne__(self, other):
97
+ """Returns true if both objects are not equal"""
98
+ if not isinstance(other, WorkspaceTemplatesSortField):
99
+ return True
100
+
101
+ return self.to_dict() != other.to_dict()
@@ -0,0 +1,121 @@
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 WorkspacetemplateResponse(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
+ 'result': 'WorkspaceTemplate'
37
+ }
38
+
39
+ attribute_map = {
40
+ 'result': 'result'
41
+ }
42
+
43
+ def __init__(self, result=None, local_vars_configuration=None): # noqa: E501
44
+ """WorkspacetemplateResponse - a model defined in OpenAPI""" # noqa: E501
45
+ if local_vars_configuration is None:
46
+ local_vars_configuration = Configuration()
47
+ self.local_vars_configuration = local_vars_configuration
48
+
49
+ self._result = None
50
+ self.discriminator = None
51
+
52
+ self.result = result
53
+
54
+ @property
55
+ def result(self):
56
+ """Gets the result of this WorkspacetemplateResponse. # noqa: E501
57
+
58
+
59
+ :return: The result of this WorkspacetemplateResponse. # noqa: E501
60
+ :rtype: WorkspaceTemplate
61
+ """
62
+ return self._result
63
+
64
+ @result.setter
65
+ def result(self, result):
66
+ """Sets the result of this WorkspacetemplateResponse.
67
+
68
+
69
+ :param result: The result of this WorkspacetemplateResponse. # noqa: E501
70
+ :type: WorkspaceTemplate
71
+ """
72
+ if self.local_vars_configuration.client_side_validation and result is None: # noqa: E501
73
+ raise ValueError("Invalid value for `result`, must not be `None`") # noqa: E501
74
+
75
+ self._result = result
76
+
77
+ def to_dict(self):
78
+ """Returns the model properties as a dict"""
79
+ result = {}
80
+
81
+ for attr, _ in six.iteritems(self.openapi_types):
82
+ value = getattr(self, attr)
83
+ if isinstance(value, list):
84
+ result[attr] = list(map(
85
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
86
+ value
87
+ ))
88
+ elif hasattr(value, "to_dict"):
89
+ result[attr] = value.to_dict()
90
+ elif isinstance(value, dict):
91
+ result[attr] = dict(map(
92
+ lambda item: (item[0], item[1].to_dict())
93
+ if hasattr(item[1], "to_dict") else item,
94
+ value.items()
95
+ ))
96
+ else:
97
+ result[attr] = value
98
+
99
+ return result
100
+
101
+ def to_str(self):
102
+ """Returns the string representation of the model"""
103
+ return pprint.pformat(self.to_dict())
104
+
105
+ def __repr__(self):
106
+ """For `print` and `pprint`"""
107
+ return self.to_str()
108
+
109
+ def __eq__(self, other):
110
+ """Returns true if both objects are equal"""
111
+ if not isinstance(other, WorkspacetemplateResponse):
112
+ return False
113
+
114
+ return self.to_dict() == other.to_dict()
115
+
116
+ def __ne__(self, other):
117
+ """Returns true if both objects are not equal"""
118
+ if not isinstance(other, WorkspacetemplateResponse):
119
+ return True
120
+
121
+ return self.to_dict() != other.to_dict()
@@ -0,0 +1,147 @@
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 WorkspacetemplateversionListResponse(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
+ 'results': 'list[WorkspaceTemplateVersion]',
37
+ 'metadata': 'ListResponseMetadata'
38
+ }
39
+
40
+ attribute_map = {
41
+ 'results': 'results',
42
+ 'metadata': 'metadata'
43
+ }
44
+
45
+ def __init__(self, results=None, metadata=None, local_vars_configuration=None): # noqa: E501
46
+ """WorkspacetemplateversionListResponse - a model defined in OpenAPI""" # noqa: E501
47
+ if local_vars_configuration is None:
48
+ local_vars_configuration = Configuration()
49
+ self.local_vars_configuration = local_vars_configuration
50
+
51
+ self._results = None
52
+ self._metadata = None
53
+ self.discriminator = None
54
+
55
+ self.results = results
56
+ if metadata is not None:
57
+ self.metadata = metadata
58
+
59
+ @property
60
+ def results(self):
61
+ """Gets the results of this WorkspacetemplateversionListResponse. # noqa: E501
62
+
63
+
64
+ :return: The results of this WorkspacetemplateversionListResponse. # noqa: E501
65
+ :rtype: list[WorkspaceTemplateVersion]
66
+ """
67
+ return self._results
68
+
69
+ @results.setter
70
+ def results(self, results):
71
+ """Sets the results of this WorkspacetemplateversionListResponse.
72
+
73
+
74
+ :param results: The results of this WorkspacetemplateversionListResponse. # noqa: E501
75
+ :type: list[WorkspaceTemplateVersion]
76
+ """
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
79
+
80
+ self._results = results
81
+
82
+ @property
83
+ def metadata(self):
84
+ """Gets the metadata of this WorkspacetemplateversionListResponse. # noqa: E501
85
+
86
+
87
+ :return: The metadata of this WorkspacetemplateversionListResponse. # noqa: E501
88
+ :rtype: ListResponseMetadata
89
+ """
90
+ return self._metadata
91
+
92
+ @metadata.setter
93
+ def metadata(self, metadata):
94
+ """Sets the metadata of this WorkspacetemplateversionListResponse.
95
+
96
+
97
+ :param metadata: The metadata of this WorkspacetemplateversionListResponse. # noqa: E501
98
+ :type: ListResponseMetadata
99
+ """
100
+
101
+ self._metadata = metadata
102
+
103
+ def to_dict(self):
104
+ """Returns the model properties as a dict"""
105
+ result = {}
106
+
107
+ for attr, _ in six.iteritems(self.openapi_types):
108
+ value = getattr(self, attr)
109
+ if isinstance(value, list):
110
+ result[attr] = list(map(
111
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
112
+ value
113
+ ))
114
+ elif hasattr(value, "to_dict"):
115
+ result[attr] = value.to_dict()
116
+ elif isinstance(value, dict):
117
+ result[attr] = dict(map(
118
+ lambda item: (item[0], item[1].to_dict())
119
+ if hasattr(item[1], "to_dict") else item,
120
+ value.items()
121
+ ))
122
+ else:
123
+ result[attr] = value
124
+
125
+ return result
126
+
127
+ def to_str(self):
128
+ """Returns the string representation of the model"""
129
+ return pprint.pformat(self.to_dict())
130
+
131
+ def __repr__(self):
132
+ """For `print` and `pprint`"""
133
+ return self.to_str()
134
+
135
+ def __eq__(self, other):
136
+ """Returns true if both objects are equal"""
137
+ if not isinstance(other, WorkspacetemplateversionListResponse):
138
+ return False
139
+
140
+ return self.to_dict() == other.to_dict()
141
+
142
+ def __ne__(self, other):
143
+ """Returns true if both objects are not equal"""
144
+ if not isinstance(other, WorkspacetemplateversionListResponse):
145
+ return True
146
+
147
+ return self.to_dict() != other.to_dict()
@@ -0,0 +1,121 @@
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 WorkspacetemplateversionResponse(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
+ 'result': 'WorkspaceTemplateVersion'
37
+ }
38
+
39
+ attribute_map = {
40
+ 'result': 'result'
41
+ }
42
+
43
+ def __init__(self, result=None, local_vars_configuration=None): # noqa: E501
44
+ """WorkspacetemplateversionResponse - a model defined in OpenAPI""" # noqa: E501
45
+ if local_vars_configuration is None:
46
+ local_vars_configuration = Configuration()
47
+ self.local_vars_configuration = local_vars_configuration
48
+
49
+ self._result = None
50
+ self.discriminator = None
51
+
52
+ self.result = result
53
+
54
+ @property
55
+ def result(self):
56
+ """Gets the result of this WorkspacetemplateversionResponse. # noqa: E501
57
+
58
+
59
+ :return: The result of this WorkspacetemplateversionResponse. # noqa: E501
60
+ :rtype: WorkspaceTemplateVersion
61
+ """
62
+ return self._result
63
+
64
+ @result.setter
65
+ def result(self, result):
66
+ """Sets the result of this WorkspacetemplateversionResponse.
67
+
68
+
69
+ :param result: The result of this WorkspacetemplateversionResponse. # noqa: E501
70
+ :type: WorkspaceTemplateVersion
71
+ """
72
+ if self.local_vars_configuration.client_side_validation and result is None: # noqa: E501
73
+ raise ValueError("Invalid value for `result`, must not be `None`") # noqa: E501
74
+
75
+ self._result = result
76
+
77
+ def to_dict(self):
78
+ """Returns the model properties as a dict"""
79
+ result = {}
80
+
81
+ for attr, _ in six.iteritems(self.openapi_types):
82
+ value = getattr(self, attr)
83
+ if isinstance(value, list):
84
+ result[attr] = list(map(
85
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
86
+ value
87
+ ))
88
+ elif hasattr(value, "to_dict"):
89
+ result[attr] = value.to_dict()
90
+ elif isinstance(value, dict):
91
+ result[attr] = dict(map(
92
+ lambda item: (item[0], item[1].to_dict())
93
+ if hasattr(item[1], "to_dict") else item,
94
+ value.items()
95
+ ))
96
+ else:
97
+ result[attr] = value
98
+
99
+ return result
100
+
101
+ def to_str(self):
102
+ """Returns the string representation of the model"""
103
+ return pprint.pformat(self.to_dict())
104
+
105
+ def __repr__(self):
106
+ """For `print` and `pprint`"""
107
+ return self.to_str()
108
+
109
+ def __eq__(self, other):
110
+ """Returns true if both objects are equal"""
111
+ if not isinstance(other, WorkspacetemplateversionResponse):
112
+ return False
113
+
114
+ return self.to_dict() == other.to_dict()
115
+
116
+ def __ne__(self, other):
117
+ """Returns true if both objects are not equal"""
118
+ if not isinstance(other, WorkspacetemplateversionResponse):
119
+ return True
120
+
121
+ return self.to_dict() != other.to_dict()
@@ -265,7 +265,13 @@ def cloud_config_group() -> None:
265
265
  "--cloud",
266
266
  help="The name of the cloud to add the new resource to.",
267
267
  type=str,
268
- required=True,
268
+ required=False,
269
+ )
270
+ @click.option(
271
+ "--cloud-id",
272
+ help="The ID of the cloud to add the new resource to.",
273
+ type=str,
274
+ required=False,
269
275
  )
270
276
  @click.option(
271
277
  "--file",
@@ -283,10 +289,16 @@ def cloud_config_group() -> None:
283
289
  "--yes", "-y", is_flag=True, default=False, help="Skip asking for confirmation."
284
290
  )
285
291
  def cloud_resource_create(
286
- cloud: str, file: str, skip_verification: bool, yes: bool,
292
+ cloud: Optional[str],
293
+ cloud_id: Optional[str],
294
+ file: str,
295
+ skip_verification: bool,
296
+ yes: bool,
287
297
  ) -> None:
288
298
  try:
289
- CloudController().create_cloud_resource(cloud, file, skip_verification, yes)
299
+ CloudController().create_cloud_resource(
300
+ cloud, cloud_id, file, skip_verification, yes
301
+ )
290
302
  except click.ClickException as e:
291
303
  print(e)
292
304
 
@@ -551,7 +551,7 @@ collaborators:
551
551
 
552
552
 
553
553
  CLOUD_RESOURCE_CREATE_EXAMPLE = """\
554
- $ anyscale cloud resource create --cloud my-cloud --file new-cloud-resource.yaml
554
+ $ anyscale cloud resource create --cloud my-cloud -f new-cloud-resource.yaml
555
555
  Successfully created cloud resource my-new-resource in cloud my-cloud.
556
556
 
557
557
  $ cat new-cloud-resource.yaml
@@ -588,7 +588,7 @@ id: cld_123
588
588
  name: my-cloud
589
589
  created_at: 2022-10-18 05:12:13.335803+00:00
590
590
  is_default: true
591
- deployments:
591
+ resources:
592
592
  - cloud_resource_id: cldrsrc_123
593
593
  name: vm-aws-us-west-2
594
594
  provider: AWS
@@ -1728,12 +1728,16 @@ class CloudController(BaseController):
1728
1728
 
1729
1729
  def create_cloud_resource(
1730
1730
  self,
1731
- cloud_name: str,
1731
+ cloud: Optional[str],
1732
+ cloud_id: Optional[str],
1732
1733
  spec_file: str,
1733
1734
  skip_verification: bool = False,
1734
1735
  yes: bool = False,
1735
1736
  ):
1736
- cloud_id, _ = get_cloud_id_and_name(self.api_client, cloud_name=cloud_name)
1737
+ cloud_id, _ = get_cloud_id_and_name(
1738
+ self.api_client, cloud_id=cloud_id, cloud_name=cloud
1739
+ )
1740
+ assert cloud_id
1737
1741
 
1738
1742
  # Read the spec file.
1739
1743
  path = pathlib.Path(spec_file)
@@ -1787,7 +1791,7 @@ class CloudController(BaseController):
1787
1791
  raise ClickException(f"Failed to add cloud resource: {e}")
1788
1792
 
1789
1793
  self.log.info(
1790
- f"Successfully created cloud resource{' ' + new_deployment.name if new_deployment.name else ''} in cloud {cloud_name}!"
1794
+ f"Successfully created cloud resource{' ' + (new_deployment.name or '')} in cloud {cloud or cloud_id}!"
1791
1795
  )
1792
1796
 
1793
1797
  def update_cloud_resources( # noqa: PLR0912, C901
@@ -46,7 +46,8 @@ class ApplyProductionServiceV2Model(object):
46
46
  'ray_gcs_external_storage_config': 'RayGCSExternalStorageConfig',
47
47
  'tracing_config': 'TracingConfig',
48
48
  'auto_complete_rollout': 'bool',
49
- 'max_surge_percent': 'int'
49
+ 'max_surge_percent': 'int',
50
+ 'tags': 'dict(str, str)'
50
51
  }
51
52
 
52
53
  attribute_map = {
@@ -63,10 +64,11 @@ class ApplyProductionServiceV2Model(object):
63
64
  'ray_gcs_external_storage_config': 'ray_gcs_external_storage_config',
64
65
  'tracing_config': 'tracing_config',
65
66
  'auto_complete_rollout': 'auto_complete_rollout',
66
- 'max_surge_percent': 'max_surge_percent'
67
+ 'max_surge_percent': 'max_surge_percent',
68
+ 'tags': 'tags'
67
69
  }
68
70
 
69
- def __init__(self, name=None, description=None, project_id=None, version=None, canary_percent=None, ray_serve_config=None, build_id=None, compute_config_id=None, config=None, rollout_strategy=None, ray_gcs_external_storage_config=None, tracing_config=None, auto_complete_rollout=True, max_surge_percent=None, local_vars_configuration=None): # noqa: E501
71
+ def __init__(self, name=None, description=None, project_id=None, version=None, canary_percent=None, ray_serve_config=None, build_id=None, compute_config_id=None, config=None, rollout_strategy=None, ray_gcs_external_storage_config=None, tracing_config=None, auto_complete_rollout=True, max_surge_percent=None, tags=None, local_vars_configuration=None): # noqa: E501
70
72
  """ApplyProductionServiceV2Model - a model defined in OpenAPI""" # noqa: E501
71
73
  if local_vars_configuration is None:
72
74
  local_vars_configuration = Configuration()
@@ -86,6 +88,7 @@ class ApplyProductionServiceV2Model(object):
86
88
  self._tracing_config = None
87
89
  self._auto_complete_rollout = None
88
90
  self._max_surge_percent = None
91
+ self._tags = None
89
92
  self.discriminator = None
90
93
 
91
94
  self.name = name
@@ -112,6 +115,8 @@ class ApplyProductionServiceV2Model(object):
112
115
  self.auto_complete_rollout = auto_complete_rollout
113
116
  if max_surge_percent is not None:
114
117
  self.max_surge_percent = max_surge_percent
118
+ if tags is not None:
119
+ self.tags = tags
115
120
 
116
121
  @property
117
122
  def name(self):
@@ -443,6 +448,29 @@ class ApplyProductionServiceV2Model(object):
443
448
 
444
449
  self._max_surge_percent = max_surge_percent
445
450
 
451
+ @property
452
+ def tags(self):
453
+ """Gets the tags of this ApplyProductionServiceV2Model. # noqa: E501
454
+
455
+ Tags to associate with the service # noqa: E501
456
+
457
+ :return: The tags of this ApplyProductionServiceV2Model. # noqa: E501
458
+ :rtype: dict(str, str)
459
+ """
460
+ return self._tags
461
+
462
+ @tags.setter
463
+ def tags(self, tags):
464
+ """Sets the tags of this ApplyProductionServiceV2Model.
465
+
466
+ Tags to associate with the service # noqa: E501
467
+
468
+ :param tags: The tags of this ApplyProductionServiceV2Model. # noqa: E501
469
+ :type: dict(str, str)
470
+ """
471
+
472
+ self._tags = tags
473
+
446
474
  def to_dict(self):
447
475
  """Returns the model properties as a dict"""
448
476
  result = {}