frogml-core 0.0.78__py3-none-any.whl → 0.0.80__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.
frogml_core/__init__.py CHANGED
@@ -1,7 +1,7 @@
1
1
  """Top-level package for frogml."""
2
2
 
3
3
  __author__ = "jfrog"
4
- __version__ = "0.0.78"
4
+ __version__ = "0.0.80"
5
5
 
6
6
  from frogml_core.inner.di_configuration import wire_dependencies
7
7
  from frogml_core.model.model_version_tracking import ( # noqa: F401,E501
@@ -5,40 +5,44 @@ from frogml_storage._utils import BearerAuth
5
5
  from frogml_storage.authentication._authentication_utils import get_credentials
6
6
  from frogml_storage.authentication.models._auth_config import AuthConfig
7
7
  from requests.auth import AuthBase
8
+ from typing_extensions import Self
8
9
 
9
10
  from frogml_core.exceptions import FrogmlLoginException
10
11
 
11
12
 
12
13
  class FrogMLAuthClient:
13
- def __init__(self, auth_config: Optional[AuthConfig] = None):
14
+ __MIN_TOKEN_LENGTH: int = 64
15
+
16
+ def __init__(self: Self, auth_config: Optional[AuthConfig] = None):
14
17
  self.auth_config: Optional[AuthConfig] = auth_config
15
18
  self._token: Optional[str] = None
16
19
  self._tenant_id: Optional[str] = None
17
20
 
18
- def get_token(self) -> str:
21
+ def get_token(self: Self) -> str:
19
22
  if not self._token:
20
23
  self.login()
21
24
 
22
25
  return cast(str, self._token)
23
26
 
24
- def get_tenant_id(self) -> str:
27
+ def get_tenant_id(self: Self) -> str:
25
28
  if not self._tenant_id:
26
29
  self.login()
27
30
 
28
31
  return cast(str, self._tenant_id)
29
32
 
30
- def login(self):
33
+ def login(self: Self):
31
34
  artifactory_url, auth = get_credentials(self.auth_config)
32
35
 
33
36
  if isinstance(auth, BearerAuth): # For BearerAuth
37
+ self.__validate_token(auth.token)
34
38
  self._token = auth.token
35
39
 
36
40
  self.__get_tenant_id(artifactory_url, auth)
37
41
 
38
- def get_auth(self) -> Union[AuthBase]:
42
+ def get_auth(self: Self) -> Union[AuthBase]:
39
43
  return get_credentials(self.auth_config)[1]
40
44
 
41
- def __get_tenant_id(self, artifactory_url: str, auth: AuthBase):
45
+ def __get_tenant_id(self: Self, artifactory_url: str, auth: AuthBase):
42
46
  login_exception = FrogmlLoginException(
43
47
  "Failed to authenticate with JFrog. Please check your credentials"
44
48
  )
@@ -63,3 +67,10 @@ class FrogMLAuthClient:
63
67
 
64
68
  except (requests.exceptions.RequestException, ValueError) as exc:
65
69
  raise login_exception from exc
70
+
71
+ def __validate_token(self: Self, token: Optional[str]):
72
+ if token is None or len(token) <= self.__MIN_TOKEN_LENGTH:
73
+ raise FrogmlLoginException(
74
+ "Authentication with JFrog failed: Only JWT Access Tokens are supported. "
75
+ "Please ensure you are using a valid JWT Access Token."
76
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: frogml-core
3
- Version: 0.0.78
3
+ Version: 0.0.80
4
4
  Summary: frogml Core contains the necessary objects and communication tools for using the Jfrog ml Platform
5
5
  License: Apache-2.0
6
6
  Keywords: mlops,ml,deployment,serving,model
@@ -1,4 +1,4 @@
1
- frogml_core/__init__.py,sha256=Uql7AUqVfJsciUbDjWMoJoILzqPYZkBjdkdyY8skAsM,777
1
+ frogml_core/__init__.py,sha256=-ck2YixE0mitTCy2cIHa1WErswHW7By6Pj8vEmrkDEQ,777
2
2
  frogml_core/automations/__init__.py,sha256=j2gD15MN-xVWhI5rAFsDwhL0CIyICLNT0scXsKvNBkU,1547
3
3
  frogml_core/automations/automation_executions.py,sha256=xpOb9Dq8gPPGNQDJTvBBZbNz4woZDRZY0HqnLSu7pwU,3230
4
4
  frogml_core/automations/automations.py,sha256=GKEQyQMi8sxX5oZn62PaxPi0zD8IaJRjBkhczRJxHNs,13070
@@ -281,7 +281,7 @@ frogml_core/inner/runtime_di/__init__.py,sha256=HXqtejgH3J9TXjnEBT6cNwnTDPq6v3sT
281
281
  frogml_core/inner/runtime_di/containers.py,sha256=LbapepWFjBjkELEOTK7m7AJEfj4KENVDlpD7lv7zw6o,577
282
282
  frogml_core/inner/singleton_meta.py,sha256=1cU99I0f9tjuMQLMJyLsK1oK3fZJMsO5-TbRHAMXqds,627
283
283
  frogml_core/inner/tool/__init__.py,sha256=rmOSE-ejnzDG_H7kbikPQxEO4TFIkhBWjOXhTIrldiU,35
284
- frogml_core/inner/tool/auth.py,sha256=XWBLkCz6xS5xCVH6ZFNC42RnWo1p27w3d2SMbNLMh30,2218
284
+ frogml_core/inner/tool/auth.py,sha256=H0tQTc8JgEGLxv79IS_28jahi8cq8NNoP3lpxlQshPs,2714
285
285
  frogml_core/inner/tool/grpc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
286
286
  frogml_core/inner/tool/grpc/grpc_auth.py,sha256=WPFWn7CfGp-pSqlnUTplHB6lfuJdzpS6jeidmpyondo,1421
287
287
  frogml_core/inner/tool/grpc/grpc_tools.py,sha256=8sXDWBd_kVRuwmUSdpQNobylT6u8H_83Q8WlZJYOi0c,7247
@@ -675,8 +675,8 @@ frogml_proto/qwak/ecosystem/jfrog/v0/token_service_pb2_grpc.py,sha256=LzyOygLpd4
675
675
  frogml_proto/qwak/ecosystem/v0/credentials_pb2.py,sha256=6ZYXYF7t6vCVBnUDnDjNP5WagHl3BscQzaONc2ErYhg,3641
676
676
  frogml_proto/qwak/ecosystem/v0/credentials_pb2.pyi,sha256=7sxOny-BUipUxrEpBxKVNuJF3-N77Z6Ov1eWI-87Uoo,4098
677
677
  frogml_proto/qwak/ecosystem/v0/credentials_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
678
- frogml_proto/qwak/ecosystem/v0/ecosystem_pb2.py,sha256=qmOf292WwGsGccjcl9vmXFyhaeZCNcDyiSRLPeTbjAc,13834
679
- frogml_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi,sha256=wz6xs7F0495D0cL-l0R6s1WdBwS2KPlaTanj5bNqnng,15927
678
+ frogml_proto/qwak/ecosystem/v0/ecosystem_pb2.py,sha256=mc7uqHY-KAKW8E_IkYrgS9M-qKGnRKwC3g-H3YQGays,13872
679
+ frogml_proto/qwak/ecosystem/v0/ecosystem_pb2.pyi,sha256=pftVQ9_osUAmmwHlbESeZ14GvnRBQQTiEiljjViTmSk,16067
680
680
  frogml_proto/qwak/ecosystem/v0/ecosystem_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
681
681
  frogml_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.py,sha256=wO68NjLymxfHHbeGw6VeQd6KDKSaJ29iPSPI4C-3MaQ,18891
682
682
  frogml_proto/qwak/ecosystem/v0/ecosystem_runtime_service_pb2.pyi,sha256=qoGgIDToRKMaBf7Kd_yWL9u9_Wf4UvCt0IS-Qorfbs4,19570
@@ -1096,6 +1096,6 @@ frogml_services_mock/mocks/workspace_manager_service_mock.py,sha256=WbOiWgOyr-xT
1096
1096
  frogml_services_mock/services_mock.py,sha256=xfbYvl05gFUq2oT82cT-6K2CEJ6d9kFX_tk77QZHTFI,20787
1097
1097
  frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1098
1098
  frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1099
- frogml_core-0.0.78.dist-info/METADATA,sha256=6S_8ftAvq2OeIvAM9chAPCpSGRYiqX9G7-eEXRayQq0,2004
1100
- frogml_core-0.0.78.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1101
- frogml_core-0.0.78.dist-info/RECORD,,
1099
+ frogml_core-0.0.80.dist-info/METADATA,sha256=P2IaUx1Q7b5XueqiIDe6eImIlPnPVIYiaOKRFlkH738,2004
1100
+ frogml_core-0.0.80.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1101
+ frogml_core-0.0.80.dist-info/RECORD,,
@@ -20,7 +20,7 @@ from frogml_proto.qwak.administration.v0.environments import configuration_pb2 a
20
20
  from frogml_proto.qwak.administration.v0.users import user_pb2 as qwak_dot_administration_dot_v0_dot_users_dot_user__pb2
21
21
 
22
22
 
23
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!qwak/ecosystem/v0/ecosystem.proto\x12\x11qwak.ecosystem.v0\x1a\x30qwak/administration/account/v1/preferences.proto\x1a*qwak/administration/account/v1/terms.proto\x1a,qwak/administration/account/v1/account.proto\x1a\x39qwak/administration/account/v1/jfrog_tenant_details.proto\x1a\x37qwak/administration/v0/environments/configuration.proto\x1a\'qwak/administration/v0/users/user.proto\"<\n\x16UsernamePasswordMethod\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"(\n\x10QwakApiKeyMethod\x12\x14\n\x0cqwak_api_key\x18\x01 \x01(\t\"\\\n\x18\x41uthenticatedUserContext\x12@\n\x04user\x18\x01 \x01(\x0b\x32\x32.qwak.ecosystem.v0.AuthenticatedUnifiedUserContext\"\xfe\x01\n\x1f\x41uthenticatedUnifiedUserContext\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x45\n\x0f\x61\x63\x63ount_details\x18\x05 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails\x12?\n\x0c\x61\x63\x63ount_role\x18\x01 \x01(\x0e\x32).qwak.administration.user.QwakAccountRole\x12\x42\n\x13\x65nvironment_details\x18\x06 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails\"\xd6\x06\n\x19UserContextAccountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x03 \x01(\t\x12\x44\n\x0bpreferences\x18\x05 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\\\n\x11\x65nvironment_by_id\x18\x04 \x03(\x0b\x32\x41.qwak.ecosystem.v0.UserContextAccountDetails.EnvironmentByIdEntry\x12t\n\x1euser_context_environment_by_id\x18\x06 \x03(\x0b\x32L.qwak.ecosystem.v0.UserContextAccountDetails.UserContextEnvironmentByIdEntry\x12\x39\n\x04type\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x08 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\t \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\n \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a]\n\x14\x45nvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\x1as\n\x1fUserContextEnvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.qwak.ecosystem.v0.UserContextEnvironmentDetails:\x02\x38\x01\"\x1f\n\x1dUserContextEnvironmentDetails\"\xd8\x04\n\x0e\x41\x63\x63ountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0bpreferences\x18\x03 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x05 \x01(\t\x12S\n\x12\x65nvironments_by_id\x18\x04 \x03(\x0b\x32\x37.qwak.ecosystem.v0.AccountDetails.EnvironmentsByIdEntry\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\x08 \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\t \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a^\n\x15\x45nvironmentsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\"\x84\x01\n\x12\x45nvironmentDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12T\n\rconfiguration\x18\x03 \x01(\x0b\x32=.qwak.administration.environment.QwakEnvironmentConfiguration\"\xde\x01\n\x0fUserAccountList\x12\x1a\n\x12\x64\x65\x66\x61ult_account_id\x18\x01 \x01(\t\x12L\n\x0e\x61\x63\x63ounts_by_id\x18\x02 \x03(\x0b\x32\x34.qwak.ecosystem.v0.UserAccountList.AccountsByIdEntry\x1a\x61\n\x11\x41\x63\x63ountsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12;\n\x05value\x18\x02 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails:\x02\x38\x01\x42\xb7\x01\n\x1c\x63om.qwak.ai.common.ecosystemP\x01Z\x94\x01github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/v0;ecosystem_v0b\x06proto3')
23
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n!qwak/ecosystem/v0/ecosystem.proto\x12\x11qwak.ecosystem.v0\x1a\x30qwak/administration/account/v1/preferences.proto\x1a*qwak/administration/account/v1/terms.proto\x1a,qwak/administration/account/v1/account.proto\x1a\x39qwak/administration/account/v1/jfrog_tenant_details.proto\x1a\x37qwak/administration/v0/environments/configuration.proto\x1a\'qwak/administration/v0/users/user.proto\"<\n\x16UsernamePasswordMethod\x12\x10\n\x08username\x18\x01 \x01(\t\x12\x10\n\x08password\x18\x02 \x01(\t\"(\n\x10QwakApiKeyMethod\x12\x14\n\x0cqwak_api_key\x18\x01 \x01(\t\"\\\n\x18\x41uthenticatedUserContext\x12@\n\x04user\x18\x01 \x01(\x0b\x32\x32.qwak.ecosystem.v0.AuthenticatedUnifiedUserContext\"\xfe\x01\n\x1f\x41uthenticatedUnifiedUserContext\x12\x0f\n\x07user_id\x18\x04 \x01(\t\x12\x45\n\x0f\x61\x63\x63ount_details\x18\x05 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails\x12?\n\x0c\x61\x63\x63ount_role\x18\x01 \x01(\x0e\x32).qwak.administration.user.QwakAccountRole\x12\x42\n\x13\x65nvironment_details\x18\x06 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails\"\xd6\x06\n\x19UserContextAccountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x03 \x01(\t\x12\x44\n\x0bpreferences\x18\x05 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\\\n\x11\x65nvironment_by_id\x18\x04 \x03(\x0b\x32\x41.qwak.ecosystem.v0.UserContextAccountDetails.EnvironmentByIdEntry\x12t\n\x1euser_context_environment_by_id\x18\x06 \x03(\x0b\x32L.qwak.ecosystem.v0.UserContextAccountDetails.UserContextEnvironmentByIdEntry\x12\x39\n\x04type\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x08 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\t \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\n \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a]\n\x14\x45nvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\x1as\n\x1fUserContextEnvironmentByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12?\n\x05value\x18\x02 \x01(\x0b\x32\x30.qwak.ecosystem.v0.UserContextEnvironmentDetails:\x02\x38\x01\"\x1f\n\x1dUserContextEnvironmentDetails\"\xd8\x04\n\x0e\x41\x63\x63ountDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x44\n\x0bpreferences\x18\x03 \x01(\x0b\x32/.qwak.administration.account.AccountPreferences\x12\x1e\n\x16\x64\x65\x66\x61ult_environment_id\x18\x05 \x01(\t\x12S\n\x12\x65nvironments_by_id\x18\x04 \x03(\x0b\x32\x37.qwak.ecosystem.v0.AccountDetails.EnvironmentsByIdEntry\x12\x39\n\x04type\x18\x06 \x01(\x0e\x32+.qwak.administration.account.v1.AccountType\x12\x39\n\x04tier\x18\x07 \x01(\x0e\x32+.qwak.administration.account.v1.AccountTier\x12I\n\x0e\x61\x63\x63\x65pted_terms\x18\x08 \x01(\x0b\x32\x31.qwak.administration.account.AccountAcceptedTerms\x12P\n\x14jfrog_tenant_details\x18\t \x01(\x0b\x32\x32.qwak.administration.account.v1.JfrogTenantDetails\x1a^\n\x15\x45nvironmentsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x34\n\x05value\x18\x02 \x01(\x0b\x32%.qwak.ecosystem.v0.EnvironmentDetails:\x02\x38\x01\"\x98\x01\n\x12\x45nvironmentDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12T\n\rconfiguration\x18\x03 \x01(\x0b\x32=.qwak.administration.environment.QwakEnvironmentConfiguration\x12\x12\n\ncluster_id\x18\x04 \x01(\t\"\xde\x01\n\x0fUserAccountList\x12\x1a\n\x12\x64\x65\x66\x61ult_account_id\x18\x01 \x01(\t\x12L\n\x0e\x61\x63\x63ounts_by_id\x18\x02 \x03(\x0b\x32\x34.qwak.ecosystem.v0.UserAccountList.AccountsByIdEntry\x1a\x61\n\x11\x41\x63\x63ountsByIdEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12;\n\x05value\x18\x02 \x01(\x0b\x32,.qwak.ecosystem.v0.UserContextAccountDetails:\x02\x38\x01\x42\xb7\x01\n\x1c\x63om.qwak.ai.common.ecosystemP\x01Z\x94\x01github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/v0;ecosystem_v0b\x06proto3')
24
24
 
25
25
 
26
26
 
@@ -165,9 +165,9 @@ if _descriptor._USE_C_DESCRIPTORS == False:
165
165
  _ACCOUNTDETAILS_ENVIRONMENTSBYIDENTRY._serialized_start=2205
166
166
  _ACCOUNTDETAILS_ENVIRONMENTSBYIDENTRY._serialized_end=2299
167
167
  _ENVIRONMENTDETAILS._serialized_start=2302
168
- _ENVIRONMENTDETAILS._serialized_end=2434
169
- _USERACCOUNTLIST._serialized_start=2437
170
- _USERACCOUNTLIST._serialized_end=2659
171
- _USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_start=2562
172
- _USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_end=2659
168
+ _ENVIRONMENTDETAILS._serialized_end=2454
169
+ _USERACCOUNTLIST._serialized_start=2457
170
+ _USERACCOUNTLIST._serialized_end=2679
171
+ _USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_start=2582
172
+ _USERACCOUNTLIST_ACCOUNTSBYIDENTRY._serialized_end=2679
173
173
  # @@protoc_insertion_point(module_scope)
@@ -280,6 +280,7 @@ class EnvironmentDetails(google.protobuf.message.Message):
280
280
  ID_FIELD_NUMBER: builtins.int
281
281
  NAME_FIELD_NUMBER: builtins.int
282
282
  CONFIGURATION_FIELD_NUMBER: builtins.int
283
+ CLUSTER_ID_FIELD_NUMBER: builtins.int
283
284
  id: builtins.str
284
285
  """Environment id"""
285
286
  name: builtins.str
@@ -287,15 +288,17 @@ class EnvironmentDetails(google.protobuf.message.Message):
287
288
  @property
288
289
  def configuration(self) -> frogml_proto.qwak.administration.v0.environments.configuration_pb2.QwakEnvironmentConfiguration:
289
290
  """Environment configuration"""
291
+ cluster_id: builtins.str
290
292
  def __init__(
291
293
  self,
292
294
  *,
293
295
  id: builtins.str = ...,
294
296
  name: builtins.str = ...,
295
297
  configuration: frogml_proto.qwak.administration.v0.environments.configuration_pb2.QwakEnvironmentConfiguration | None = ...,
298
+ cluster_id: builtins.str = ...,
296
299
  ) -> None: ...
297
300
  def HasField(self, field_name: typing_extensions.Literal["configuration", b"configuration"]) -> builtins.bool: ...
298
- def ClearField(self, field_name: typing_extensions.Literal["configuration", b"configuration", "id", b"id", "name", b"name"]) -> None: ...
301
+ def ClearField(self, field_name: typing_extensions.Literal["cluster_id", b"cluster_id", "configuration", b"configuration", "id", b"id", "name", b"name"]) -> None: ...
299
302
 
300
303
  global___EnvironmentDetails = EnvironmentDetails
301
304