lightning-sdk 2025.12.16__py3-none-any.whl → 2025.12.17__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 (73) hide show
  1. lightning_sdk/__version__.py +1 -1
  2. lightning_sdk/api/org_api.py +7 -0
  3. lightning_sdk/api/studio_api.py +28 -3
  4. lightning_sdk/api/user_api.py +5 -0
  5. lightning_sdk/cli/legacy/download.py +2 -1
  6. lightning_sdk/cli/legacy/studios_menu.py +8 -1
  7. lightning_sdk/job/base.py +23 -4
  8. lightning_sdk/job/job.py +12 -5
  9. lightning_sdk/job/v1.py +5 -2
  10. lightning_sdk/job/v2.py +9 -1
  11. lightning_sdk/lightning_cloud/openapi/__init__.py +26 -1
  12. lightning_sdk/lightning_cloud/openapi/api/__init__.py +1 -0
  13. lightning_sdk/lightning_cloud/openapi/api/cloud_space_service_api.py +5 -1
  14. lightning_sdk/lightning_cloud/openapi/api/cluster_service_api.py +517 -0
  15. lightning_sdk/lightning_cloud/openapi/api/data_connection_service_api.py +5 -1
  16. lightning_sdk/lightning_cloud/openapi/api/file_system_service_api.py +11 -11
  17. lightning_sdk/lightning_cloud/openapi/api/kubernetes_virtual_machine_service_api.py +557 -0
  18. lightning_sdk/lightning_cloud/openapi/api/storage_service_api.py +5 -1
  19. lightning_sdk/lightning_cloud/openapi/models/__init__.py +25 -1
  20. lightning_sdk/lightning_cloud/openapi/models/cloud_space_environment_template_service_update_cloud_space_environment_template_body.py +27 -1
  21. lightning_sdk/lightning_cloud/openapi/models/cluster_service_add_container_registry_body.py +123 -0
  22. lightning_sdk/lightning_cloud/openapi/models/cluster_service_create_machine_body.py +27 -1
  23. lightning_sdk/lightning_cloud/openapi/models/cluster_service_refresh_container_registry_credentials_body.py +97 -0
  24. lightning_sdk/lightning_cloud/openapi/models/cluster_service_validate_container_registry_body.py +97 -0
  25. lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_create_kubernetes_virtual_machine_body.py +513 -0
  26. lightning_sdk/lightning_cloud/openapi/models/kubernetes_virtual_machine_service_update_kubernetes_virtual_machine_body.py +97 -0
  27. lightning_sdk/lightning_cloud/openapi/models/v1_add_container_registry_response.py +123 -0
  28. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_environment_template_config.py +27 -1
  29. lightning_sdk/lightning_cloud/openapi/models/v1_cloud_space_specialized_view.py +1 -0
  30. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry.py +253 -0
  31. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_info.py +281 -0
  32. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_integration.py +123 -0
  33. lightning_sdk/lightning_cloud/openapi/models/v1_container_registry_status.py +105 -0
  34. lightning_sdk/lightning_cloud/openapi/models/v1_create_cloud_space_environment_template_request.py +27 -1
  35. lightning_sdk/lightning_cloud/openapi/models/v1_delete_container_registry_response.py +97 -0
  36. lightning_sdk/lightning_cloud/openapi/models/v1_delete_kubernetes_virtual_machine_response.py +97 -0
  37. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config.py +175 -0
  38. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_config_input.py +123 -0
  39. lightning_sdk/lightning_cloud/openapi/models/v1_ecr_registry_details.py +201 -0
  40. lightning_sdk/lightning_cloud/openapi/models/v1_get_artifacts_page_response.py +29 -3
  41. lightning_sdk/lightning_cloud/openapi/models/v1_get_user_response.py +27 -1
  42. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_direct_v1.py +53 -1
  43. lightning_sdk/lightning_cloud/openapi/models/v1_kubernetes_virtual_machine.py +383 -0
  44. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_config.py +305 -0
  45. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_provider_configuration.py +227 -0
  46. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_configuration.py +149 -0
  47. lightning_sdk/lightning_cloud/openapi/models/v1_kubevirt_vm_resources.py +201 -0
  48. lightning_sdk/lightning_cloud/openapi/models/v1_list_container_registries_response.py +123 -0
  49. lightning_sdk/lightning_cloud/openapi/models/v1_list_kubernetes_virtual_machines_response.py +123 -0
  50. lightning_sdk/lightning_cloud/openapi/models/v1_machine.py +27 -1
  51. lightning_sdk/lightning_cloud/openapi/models/v1_node_metrics.py +27 -1
  52. lightning_sdk/lightning_cloud/openapi/models/v1_refresh_container_registry_credentials_response.py +123 -0
  53. lightning_sdk/lightning_cloud/openapi/models/v1_search_user.py +27 -1
  54. lightning_sdk/lightning_cloud/openapi/models/v1_user_features.py +79 -1
  55. lightning_sdk/lightning_cloud/openapi/models/v1_validate_container_registry_response.py +149 -0
  56. lightning_sdk/lightning_cloud/openapi/rest.py +2 -2
  57. lightning_sdk/mmt/base.py +26 -7
  58. lightning_sdk/mmt/mmt.py +11 -6
  59. lightning_sdk/mmt/v1.py +5 -2
  60. lightning_sdk/mmt/v2.py +5 -2
  61. lightning_sdk/organization.py +10 -1
  62. lightning_sdk/owner.py +4 -0
  63. lightning_sdk/plugin.py +2 -2
  64. lightning_sdk/studio.py +33 -2
  65. lightning_sdk/user.py +22 -2
  66. lightning_sdk/utils/resolve.py +9 -7
  67. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/METADATA +1 -1
  68. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/RECORD +73 -48
  69. /lightning_sdk/lightning_cloud/openapi/models/{v1_list_filesystem_mm_ts_response.py → v1_list_filesystem_mmts_response.py} +0 -0
  70. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/LICENSE +0 -0
  71. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/WHEEL +0 -0
  72. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/entry_points.txt +0 -0
  73. {lightning_sdk-2025.12.16.dist-info → lightning_sdk-2025.12.17.dist-info}/top_level.txt +0 -0
@@ -75,6 +75,7 @@ class V1GetUserResponse(object):
75
75
  'saw_forums_login_merge_dialog': 'bool',
76
76
  'saw_free_credits_notification': 'bool',
77
77
  'sb': 'bool',
78
+ 'source': 'str',
78
79
  'status': 'Externalv1UserStatus',
79
80
  'storage_bytes': 'str',
80
81
  'storage_overuse_deletion_at': 'datetime',
@@ -120,6 +121,7 @@ class V1GetUserResponse(object):
120
121
  'saw_forums_login_merge_dialog': 'sawForumsLoginMergeDialog',
121
122
  'saw_free_credits_notification': 'sawFreeCreditsNotification',
122
123
  'sb': 'sb',
124
+ 'source': 'source',
123
125
  'status': 'status',
124
126
  'storage_bytes': 'storageBytes',
125
127
  'storage_overuse_deletion_at': 'storageOveruseDeletionAt',
@@ -130,7 +132,7 @@ class V1GetUserResponse(object):
130
132
  'website': 'website'
131
133
  }
132
134
 
133
- def __init__(self, agree_to_terms_and_conditions: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, api_key: 'str' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, country: 'str' =None, disable_shell_persistence: 'bool' =None, email: 'str' =None, experimentation_id: 'str' =None, features: 'V1UserFeatures' =None, first_name: 'str' =None, general_audience_mode: 'bool' =None, id: 'str' =None, internal_blog_admin: 'bool' =None, internal_docs_admin: 'bool' =None, invite_code: 'str' =None, is_internal: 'bool' =None, last_name: 'str' =None, linux_username: 'str' =None, non_developer_mode: 'bool' =None, opted_in_marketing_emails: 'bool' =None, organization: 'str' =None, organizations: 'list[V1Organization]' =None, phone_number: 'str' =None, picture_url: 'str' =None, preferred_color_scheme: 'str' =None, preferred_ide: 'str' =None, preferred_shell: 'str' =None, preferred_vscode_marketplace: 'str' =None, role: 'str' =None, saw_create_first_project_dialog: 'bool' =None, saw_forums_login_merge_dialog: 'bool' =None, saw_free_credits_notification: 'bool' =None, sb: 'bool' =None, status: 'Externalv1UserStatus' =None, storage_bytes: 'str' =None, storage_overuse_deletion_at: 'datetime' =None, test_user: 'bool' =None, user_metadata: 'str' =None, username: 'str' =None, waitlisted: 'bool' =None, website: 'str' =None): # noqa: E501
135
+ def __init__(self, agree_to_terms_and_conditions: 'bool' =None, allow_credits_auto_replenish: 'bool' =None, api_key: 'str' =None, auto_replenish_amount: 'float' =None, auto_replenish_threshold: 'float' =None, country: 'str' =None, disable_shell_persistence: 'bool' =None, email: 'str' =None, experimentation_id: 'str' =None, features: 'V1UserFeatures' =None, first_name: 'str' =None, general_audience_mode: 'bool' =None, id: 'str' =None, internal_blog_admin: 'bool' =None, internal_docs_admin: 'bool' =None, invite_code: 'str' =None, is_internal: 'bool' =None, last_name: 'str' =None, linux_username: 'str' =None, non_developer_mode: 'bool' =None, opted_in_marketing_emails: 'bool' =None, organization: 'str' =None, organizations: 'list[V1Organization]' =None, phone_number: 'str' =None, picture_url: 'str' =None, preferred_color_scheme: 'str' =None, preferred_ide: 'str' =None, preferred_shell: 'str' =None, preferred_vscode_marketplace: 'str' =None, role: 'str' =None, saw_create_first_project_dialog: 'bool' =None, saw_forums_login_merge_dialog: 'bool' =None, saw_free_credits_notification: 'bool' =None, sb: 'bool' =None, source: 'str' =None, status: 'Externalv1UserStatus' =None, storage_bytes: 'str' =None, storage_overuse_deletion_at: 'datetime' =None, test_user: 'bool' =None, user_metadata: 'str' =None, username: 'str' =None, waitlisted: 'bool' =None, website: 'str' =None): # noqa: E501
134
136
  """V1GetUserResponse - a model defined in Swagger""" # noqa: E501
135
137
  self._agree_to_terms_and_conditions = None
136
138
  self._allow_credits_auto_replenish = None
@@ -166,6 +168,7 @@ class V1GetUserResponse(object):
166
168
  self._saw_forums_login_merge_dialog = None
167
169
  self._saw_free_credits_notification = None
168
170
  self._sb = None
171
+ self._source = None
169
172
  self._status = None
170
173
  self._storage_bytes = None
171
174
  self._storage_overuse_deletion_at = None
@@ -243,6 +246,8 @@ class V1GetUserResponse(object):
243
246
  self.saw_free_credits_notification = saw_free_credits_notification
244
247
  if sb is not None:
245
248
  self.sb = sb
249
+ if source is not None:
250
+ self.source = source
246
251
  if status is not None:
247
252
  self.status = status
248
253
  if storage_bytes is not None:
@@ -976,6 +981,27 @@ class V1GetUserResponse(object):
976
981
 
977
982
  self._sb = sb
978
983
 
984
+ @property
985
+ def source(self) -> 'str':
986
+ """Gets the source of this V1GetUserResponse. # noqa: E501
987
+
988
+
989
+ :return: The source of this V1GetUserResponse. # noqa: E501
990
+ :rtype: str
991
+ """
992
+ return self._source
993
+
994
+ @source.setter
995
+ def source(self, source: 'str'):
996
+ """Sets the source of this V1GetUserResponse.
997
+
998
+
999
+ :param source: The source of this V1GetUserResponse. # noqa: E501
1000
+ :type: str
1001
+ """
1002
+
1003
+ self._source = source
1004
+
979
1005
  @property
980
1006
  def status(self) -> 'Externalv1UserStatus':
981
1007
  """Gets the status of this V1GetUserResponse. # noqa: E501
@@ -43,6 +43,7 @@ class V1KubernetesDirectV1(object):
43
43
  swagger_types = {
44
44
  'automate_agent_installation': 'bool',
45
45
  'aws': 'V1KubernetesAWSConfig',
46
+ 'container_registry_integration': 'V1ContainerRegistryIntegration',
46
47
  'grafana_dashboard_url': 'str',
47
48
  'grafana_namespace': 'str',
48
49
  'grafana_service_name': 'str',
@@ -51,6 +52,7 @@ class V1KubernetesDirectV1(object):
51
52
  'incident_slack_notifiers': 'list[V1SlackNotifier]',
52
53
  'kubeconfig': 'str',
53
54
  'kubeconfig_elevated': 'str',
55
+ 'kubevirt_config': 'V1KubevirtConfig',
54
56
  'prometheus_url': 'str',
55
57
  'settings': 'V1KubernetesDirectSettingsV1',
56
58
  'skip_user_label_injection': 'bool'
@@ -59,6 +61,7 @@ class V1KubernetesDirectV1(object):
59
61
  attribute_map = {
60
62
  'automate_agent_installation': 'automateAgentInstallation',
61
63
  'aws': 'aws',
64
+ 'container_registry_integration': 'containerRegistryIntegration',
62
65
  'grafana_dashboard_url': 'grafanaDashboardUrl',
63
66
  'grafana_namespace': 'grafanaNamespace',
64
67
  'grafana_service_name': 'grafanaServiceName',
@@ -67,15 +70,17 @@ class V1KubernetesDirectV1(object):
67
70
  'incident_slack_notifiers': 'incidentSlackNotifiers',
68
71
  'kubeconfig': 'kubeconfig',
69
72
  'kubeconfig_elevated': 'kubeconfigElevated',
73
+ 'kubevirt_config': 'kubevirtConfig',
70
74
  'prometheus_url': 'prometheusUrl',
71
75
  'settings': 'settings',
72
76
  'skip_user_label_injection': 'skipUserLabelInjection'
73
77
  }
74
78
 
75
- def __init__(self, automate_agent_installation: 'bool' =None, aws: 'V1KubernetesAWSConfig' =None, grafana_dashboard_url: 'str' =None, grafana_namespace: 'str' =None, grafana_service_name: 'str' =None, grafana_service_port: 'str' =None, incident_historical_scan_complete: 'bool' =None, incident_slack_notifiers: 'list[V1SlackNotifier]' =None, kubeconfig: 'str' =None, kubeconfig_elevated: 'str' =None, prometheus_url: 'str' =None, settings: 'V1KubernetesDirectSettingsV1' =None, skip_user_label_injection: 'bool' =None): # noqa: E501
79
+ def __init__(self, automate_agent_installation: 'bool' =None, aws: 'V1KubernetesAWSConfig' =None, container_registry_integration: 'V1ContainerRegistryIntegration' =None, grafana_dashboard_url: 'str' =None, grafana_namespace: 'str' =None, grafana_service_name: 'str' =None, grafana_service_port: 'str' =None, incident_historical_scan_complete: 'bool' =None, incident_slack_notifiers: 'list[V1SlackNotifier]' =None, kubeconfig: 'str' =None, kubeconfig_elevated: 'str' =None, kubevirt_config: 'V1KubevirtConfig' =None, prometheus_url: 'str' =None, settings: 'V1KubernetesDirectSettingsV1' =None, skip_user_label_injection: 'bool' =None): # noqa: E501
76
80
  """V1KubernetesDirectV1 - a model defined in Swagger""" # noqa: E501
77
81
  self._automate_agent_installation = None
78
82
  self._aws = None
83
+ self._container_registry_integration = None
79
84
  self._grafana_dashboard_url = None
80
85
  self._grafana_namespace = None
81
86
  self._grafana_service_name = None
@@ -84,6 +89,7 @@ class V1KubernetesDirectV1(object):
84
89
  self._incident_slack_notifiers = None
85
90
  self._kubeconfig = None
86
91
  self._kubeconfig_elevated = None
92
+ self._kubevirt_config = None
87
93
  self._prometheus_url = None
88
94
  self._settings = None
89
95
  self._skip_user_label_injection = None
@@ -92,6 +98,8 @@ class V1KubernetesDirectV1(object):
92
98
  self.automate_agent_installation = automate_agent_installation
93
99
  if aws is not None:
94
100
  self.aws = aws
101
+ if container_registry_integration is not None:
102
+ self.container_registry_integration = container_registry_integration
95
103
  if grafana_dashboard_url is not None:
96
104
  self.grafana_dashboard_url = grafana_dashboard_url
97
105
  if grafana_namespace is not None:
@@ -108,6 +116,8 @@ class V1KubernetesDirectV1(object):
108
116
  self.kubeconfig = kubeconfig
109
117
  if kubeconfig_elevated is not None:
110
118
  self.kubeconfig_elevated = kubeconfig_elevated
119
+ if kubevirt_config is not None:
120
+ self.kubevirt_config = kubevirt_config
111
121
  if prometheus_url is not None:
112
122
  self.prometheus_url = prometheus_url
113
123
  if settings is not None:
@@ -157,6 +167,27 @@ class V1KubernetesDirectV1(object):
157
167
 
158
168
  self._aws = aws
159
169
 
170
+ @property
171
+ def container_registry_integration(self) -> 'V1ContainerRegistryIntegration':
172
+ """Gets the container_registry_integration of this V1KubernetesDirectV1. # noqa: E501
173
+
174
+
175
+ :return: The container_registry_integration of this V1KubernetesDirectV1. # noqa: E501
176
+ :rtype: V1ContainerRegistryIntegration
177
+ """
178
+ return self._container_registry_integration
179
+
180
+ @container_registry_integration.setter
181
+ def container_registry_integration(self, container_registry_integration: 'V1ContainerRegistryIntegration'):
182
+ """Sets the container_registry_integration of this V1KubernetesDirectV1.
183
+
184
+
185
+ :param container_registry_integration: The container_registry_integration of this V1KubernetesDirectV1. # noqa: E501
186
+ :type: V1ContainerRegistryIntegration
187
+ """
188
+
189
+ self._container_registry_integration = container_registry_integration
190
+
160
191
  @property
161
192
  def grafana_dashboard_url(self) -> 'str':
162
193
  """Gets the grafana_dashboard_url of this V1KubernetesDirectV1. # noqa: E501
@@ -325,6 +356,27 @@ class V1KubernetesDirectV1(object):
325
356
 
326
357
  self._kubeconfig_elevated = kubeconfig_elevated
327
358
 
359
+ @property
360
+ def kubevirt_config(self) -> 'V1KubevirtConfig':
361
+ """Gets the kubevirt_config of this V1KubernetesDirectV1. # noqa: E501
362
+
363
+
364
+ :return: The kubevirt_config of this V1KubernetesDirectV1. # noqa: E501
365
+ :rtype: V1KubevirtConfig
366
+ """
367
+ return self._kubevirt_config
368
+
369
+ @kubevirt_config.setter
370
+ def kubevirt_config(self, kubevirt_config: 'V1KubevirtConfig'):
371
+ """Sets the kubevirt_config of this V1KubernetesDirectV1.
372
+
373
+
374
+ :param kubevirt_config: The kubevirt_config of this V1KubernetesDirectV1. # noqa: E501
375
+ :type: V1KubevirtConfig
376
+ """
377
+
378
+ self._kubevirt_config = kubevirt_config
379
+
328
380
  @property
329
381
  def prometheus_url(self) -> 'str':
330
382
  """Gets the prometheus_url of this V1KubernetesDirectV1. # noqa: E501
@@ -0,0 +1,383 @@
1
+ # coding: utf-8
2
+
3
+ """
4
+ external/v1/auth_service.proto
5
+
6
+ No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) # noqa: E501
7
+
8
+ OpenAPI spec version: version not set
9
+
10
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
11
+
12
+ NOTE
13
+ ----
14
+ standard swagger-codegen-cli for this python client has been modified
15
+ by custom templates. The purpose of these templates is to include
16
+ typing information in the API and Model code. Please refer to the
17
+ main grid repository for more info
18
+ """
19
+
20
+ import pprint
21
+ import re # noqa: F401
22
+
23
+ from typing import TYPE_CHECKING
24
+
25
+ import six
26
+
27
+ if TYPE_CHECKING:
28
+ from datetime import datetime
29
+ from lightning_sdk.lightning_cloud.openapi.models import *
30
+
31
+ class V1KubernetesVirtualMachine(object):
32
+ """NOTE: This class is auto generated by the swagger code generator program.
33
+
34
+ Do not edit the class manually.
35
+ """
36
+ """
37
+ Attributes:
38
+ swagger_types (dict): The key is attribute name
39
+ and the value is attribute type.
40
+ attribute_map (dict): The key is attribute name
41
+ and the value is json key in definition.
42
+ """
43
+ swagger_types = {
44
+ 'cluster_id': 'str',
45
+ 'created_at': 'datetime',
46
+ 'deleted_at': 'datetime',
47
+ 'deployment': 'V1Deployment',
48
+ 'id': 'str',
49
+ 'name': 'str',
50
+ 'node': 'str',
51
+ 'project_id': 'str',
52
+ 'provider_config': 'V1KubevirtProviderConfiguration',
53
+ 'updated_at': 'datetime',
54
+ 'user_id': 'str'
55
+ }
56
+
57
+ attribute_map = {
58
+ 'cluster_id': 'clusterId',
59
+ 'created_at': 'createdAt',
60
+ 'deleted_at': 'deletedAt',
61
+ 'deployment': 'deployment',
62
+ 'id': 'id',
63
+ 'name': 'name',
64
+ 'node': 'node',
65
+ 'project_id': 'projectId',
66
+ 'provider_config': 'providerConfig',
67
+ 'updated_at': 'updatedAt',
68
+ 'user_id': 'userId'
69
+ }
70
+
71
+ def __init__(self, cluster_id: 'str' =None, created_at: 'datetime' =None, deleted_at: 'datetime' =None, deployment: 'V1Deployment' =None, id: 'str' =None, name: 'str' =None, node: 'str' =None, project_id: 'str' =None, provider_config: 'V1KubevirtProviderConfiguration' =None, updated_at: 'datetime' =None, user_id: 'str' =None): # noqa: E501
72
+ """V1KubernetesVirtualMachine - a model defined in Swagger""" # noqa: E501
73
+ self._cluster_id = None
74
+ self._created_at = None
75
+ self._deleted_at = None
76
+ self._deployment = None
77
+ self._id = None
78
+ self._name = None
79
+ self._node = None
80
+ self._project_id = None
81
+ self._provider_config = None
82
+ self._updated_at = None
83
+ self._user_id = None
84
+ self.discriminator = None
85
+ if cluster_id is not None:
86
+ self.cluster_id = cluster_id
87
+ if created_at is not None:
88
+ self.created_at = created_at
89
+ if deleted_at is not None:
90
+ self.deleted_at = deleted_at
91
+ if deployment is not None:
92
+ self.deployment = deployment
93
+ if id is not None:
94
+ self.id = id
95
+ if name is not None:
96
+ self.name = name
97
+ if node is not None:
98
+ self.node = node
99
+ if project_id is not None:
100
+ self.project_id = project_id
101
+ if provider_config is not None:
102
+ self.provider_config = provider_config
103
+ if updated_at is not None:
104
+ self.updated_at = updated_at
105
+ if user_id is not None:
106
+ self.user_id = user_id
107
+
108
+ @property
109
+ def cluster_id(self) -> 'str':
110
+ """Gets the cluster_id of this V1KubernetesVirtualMachine. # noqa: E501
111
+
112
+
113
+ :return: The cluster_id of this V1KubernetesVirtualMachine. # noqa: E501
114
+ :rtype: str
115
+ """
116
+ return self._cluster_id
117
+
118
+ @cluster_id.setter
119
+ def cluster_id(self, cluster_id: 'str'):
120
+ """Sets the cluster_id of this V1KubernetesVirtualMachine.
121
+
122
+
123
+ :param cluster_id: The cluster_id of this V1KubernetesVirtualMachine. # noqa: E501
124
+ :type: str
125
+ """
126
+
127
+ self._cluster_id = cluster_id
128
+
129
+ @property
130
+ def created_at(self) -> 'datetime':
131
+ """Gets the created_at of this V1KubernetesVirtualMachine. # noqa: E501
132
+
133
+
134
+ :return: The created_at of this V1KubernetesVirtualMachine. # noqa: E501
135
+ :rtype: datetime
136
+ """
137
+ return self._created_at
138
+
139
+ @created_at.setter
140
+ def created_at(self, created_at: 'datetime'):
141
+ """Sets the created_at of this V1KubernetesVirtualMachine.
142
+
143
+
144
+ :param created_at: The created_at of this V1KubernetesVirtualMachine. # noqa: E501
145
+ :type: datetime
146
+ """
147
+
148
+ self._created_at = created_at
149
+
150
+ @property
151
+ def deleted_at(self) -> 'datetime':
152
+ """Gets the deleted_at of this V1KubernetesVirtualMachine. # noqa: E501
153
+
154
+
155
+ :return: The deleted_at of this V1KubernetesVirtualMachine. # noqa: E501
156
+ :rtype: datetime
157
+ """
158
+ return self._deleted_at
159
+
160
+ @deleted_at.setter
161
+ def deleted_at(self, deleted_at: 'datetime'):
162
+ """Sets the deleted_at of this V1KubernetesVirtualMachine.
163
+
164
+
165
+ :param deleted_at: The deleted_at of this V1KubernetesVirtualMachine. # noqa: E501
166
+ :type: datetime
167
+ """
168
+
169
+ self._deleted_at = deleted_at
170
+
171
+ @property
172
+ def deployment(self) -> 'V1Deployment':
173
+ """Gets the deployment of this V1KubernetesVirtualMachine. # noqa: E501
174
+
175
+
176
+ :return: The deployment of this V1KubernetesVirtualMachine. # noqa: E501
177
+ :rtype: V1Deployment
178
+ """
179
+ return self._deployment
180
+
181
+ @deployment.setter
182
+ def deployment(self, deployment: 'V1Deployment'):
183
+ """Sets the deployment of this V1KubernetesVirtualMachine.
184
+
185
+
186
+ :param deployment: The deployment of this V1KubernetesVirtualMachine. # noqa: E501
187
+ :type: V1Deployment
188
+ """
189
+
190
+ self._deployment = deployment
191
+
192
+ @property
193
+ def id(self) -> 'str':
194
+ """Gets the id of this V1KubernetesVirtualMachine. # noqa: E501
195
+
196
+
197
+ :return: The id of this V1KubernetesVirtualMachine. # noqa: E501
198
+ :rtype: str
199
+ """
200
+ return self._id
201
+
202
+ @id.setter
203
+ def id(self, id: 'str'):
204
+ """Sets the id of this V1KubernetesVirtualMachine.
205
+
206
+
207
+ :param id: The id of this V1KubernetesVirtualMachine. # noqa: E501
208
+ :type: str
209
+ """
210
+
211
+ self._id = id
212
+
213
+ @property
214
+ def name(self) -> 'str':
215
+ """Gets the name of this V1KubernetesVirtualMachine. # noqa: E501
216
+
217
+
218
+ :return: The name of this V1KubernetesVirtualMachine. # noqa: E501
219
+ :rtype: str
220
+ """
221
+ return self._name
222
+
223
+ @name.setter
224
+ def name(self, name: 'str'):
225
+ """Sets the name of this V1KubernetesVirtualMachine.
226
+
227
+
228
+ :param name: The name of this V1KubernetesVirtualMachine. # noqa: E501
229
+ :type: str
230
+ """
231
+
232
+ self._name = name
233
+
234
+ @property
235
+ def node(self) -> 'str':
236
+ """Gets the node of this V1KubernetesVirtualMachine. # noqa: E501
237
+
238
+
239
+ :return: The node of this V1KubernetesVirtualMachine. # noqa: E501
240
+ :rtype: str
241
+ """
242
+ return self._node
243
+
244
+ @node.setter
245
+ def node(self, node: 'str'):
246
+ """Sets the node of this V1KubernetesVirtualMachine.
247
+
248
+
249
+ :param node: The node of this V1KubernetesVirtualMachine. # noqa: E501
250
+ :type: str
251
+ """
252
+
253
+ self._node = node
254
+
255
+ @property
256
+ def project_id(self) -> 'str':
257
+ """Gets the project_id of this V1KubernetesVirtualMachine. # noqa: E501
258
+
259
+
260
+ :return: The project_id of this V1KubernetesVirtualMachine. # noqa: E501
261
+ :rtype: str
262
+ """
263
+ return self._project_id
264
+
265
+ @project_id.setter
266
+ def project_id(self, project_id: 'str'):
267
+ """Sets the project_id of this V1KubernetesVirtualMachine.
268
+
269
+
270
+ :param project_id: The project_id of this V1KubernetesVirtualMachine. # noqa: E501
271
+ :type: str
272
+ """
273
+
274
+ self._project_id = project_id
275
+
276
+ @property
277
+ def provider_config(self) -> 'V1KubevirtProviderConfiguration':
278
+ """Gets the provider_config of this V1KubernetesVirtualMachine. # noqa: E501
279
+
280
+
281
+ :return: The provider_config of this V1KubernetesVirtualMachine. # noqa: E501
282
+ :rtype: V1KubevirtProviderConfiguration
283
+ """
284
+ return self._provider_config
285
+
286
+ @provider_config.setter
287
+ def provider_config(self, provider_config: 'V1KubevirtProviderConfiguration'):
288
+ """Sets the provider_config of this V1KubernetesVirtualMachine.
289
+
290
+
291
+ :param provider_config: The provider_config of this V1KubernetesVirtualMachine. # noqa: E501
292
+ :type: V1KubevirtProviderConfiguration
293
+ """
294
+
295
+ self._provider_config = provider_config
296
+
297
+ @property
298
+ def updated_at(self) -> 'datetime':
299
+ """Gets the updated_at of this V1KubernetesVirtualMachine. # noqa: E501
300
+
301
+
302
+ :return: The updated_at of this V1KubernetesVirtualMachine. # noqa: E501
303
+ :rtype: datetime
304
+ """
305
+ return self._updated_at
306
+
307
+ @updated_at.setter
308
+ def updated_at(self, updated_at: 'datetime'):
309
+ """Sets the updated_at of this V1KubernetesVirtualMachine.
310
+
311
+
312
+ :param updated_at: The updated_at of this V1KubernetesVirtualMachine. # noqa: E501
313
+ :type: datetime
314
+ """
315
+
316
+ self._updated_at = updated_at
317
+
318
+ @property
319
+ def user_id(self) -> 'str':
320
+ """Gets the user_id of this V1KubernetesVirtualMachine. # noqa: E501
321
+
322
+
323
+ :return: The user_id of this V1KubernetesVirtualMachine. # noqa: E501
324
+ :rtype: str
325
+ """
326
+ return self._user_id
327
+
328
+ @user_id.setter
329
+ def user_id(self, user_id: 'str'):
330
+ """Sets the user_id of this V1KubernetesVirtualMachine.
331
+
332
+
333
+ :param user_id: The user_id of this V1KubernetesVirtualMachine. # noqa: E501
334
+ :type: str
335
+ """
336
+
337
+ self._user_id = user_id
338
+
339
+ def to_dict(self) -> dict:
340
+ """Returns the model properties as a dict"""
341
+ result = {}
342
+
343
+ for attr, _ in six.iteritems(self.swagger_types):
344
+ value = getattr(self, attr)
345
+ if isinstance(value, list):
346
+ result[attr] = list(map(
347
+ lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
348
+ value
349
+ ))
350
+ elif hasattr(value, "to_dict"):
351
+ result[attr] = value.to_dict()
352
+ elif isinstance(value, dict):
353
+ result[attr] = dict(map(
354
+ lambda item: (item[0], item[1].to_dict())
355
+ if hasattr(item[1], "to_dict") else item,
356
+ value.items()
357
+ ))
358
+ else:
359
+ result[attr] = value
360
+ if issubclass(V1KubernetesVirtualMachine, dict):
361
+ for key, value in self.items():
362
+ result[key] = value
363
+
364
+ return result
365
+
366
+ def to_str(self) -> str:
367
+ """Returns the string representation of the model"""
368
+ return pprint.pformat(self.to_dict())
369
+
370
+ def __repr__(self) -> str:
371
+ """For `print` and `pprint`"""
372
+ return self.to_str()
373
+
374
+ def __eq__(self, other: 'V1KubernetesVirtualMachine') -> bool:
375
+ """Returns true if both objects are equal"""
376
+ if not isinstance(other, V1KubernetesVirtualMachine):
377
+ return False
378
+
379
+ return self.__dict__ == other.__dict__
380
+
381
+ def __ne__(self, other: 'V1KubernetesVirtualMachine') -> bool:
382
+ """Returns true if both objects are not equal"""
383
+ return not self == other