frogml 1.2.38__py3-none-any.whl → 1.2.47__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 (66) hide show
  1. frogml/__init__.py +1 -1
  2. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.py +43 -0
  3. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.pyi +218 -0
  4. frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2_grpc.py +4 -0
  5. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.py +53 -0
  6. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.pyi +258 -0
  7. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2_grpc.py +4 -0
  8. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.py +58 -0
  9. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.pyi +224 -0
  10. frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2_grpc.py +206 -0
  11. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.py +33 -0
  12. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.pyi +99 -0
  13. frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2_grpc.py +4 -0
  14. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.py +31 -0
  15. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.pyi +99 -0
  16. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2_grpc.py +4 -0
  17. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.py +30 -0
  18. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.pyi +55 -0
  19. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2_grpc.py +4 -0
  20. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.py +42 -0
  21. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.pyi +204 -0
  22. frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2_grpc.py +4 -0
  23. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.py +29 -0
  24. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.pyi +60 -0
  25. frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2_grpc.py +4 -0
  26. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.py +28 -0
  27. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.pyi +47 -0
  28. frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2_grpc.py +4 -0
  29. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.py +27 -0
  30. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.pyi +29 -0
  31. frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2_grpc.py +4 -0
  32. frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2.py +52 -0
  33. frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2.pyi +208 -0
  34. frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2_grpc.py +237 -0
  35. frogml/_proto/qwak/administration/v1/environments/environment_pb2.py +29 -0
  36. frogml/_proto/qwak/administration/v1/environments/environment_pb2.pyi +35 -0
  37. frogml/_proto/qwak/administration/v1/environments/environment_pb2_grpc.py +4 -0
  38. frogml/_proto/qwak/administration/v1/environments/environment_service_pb2.py +33 -0
  39. frogml/_proto/qwak/administration/v1/environments/environment_service_pb2.pyi +59 -0
  40. frogml/_proto/qwak/administration/v1/environments/environment_service_pb2_grpc.py +67 -0
  41. frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2.py +33 -0
  42. frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2.pyi +76 -0
  43. frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2_grpc.py +4 -0
  44. frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py +28 -15
  45. frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.pyi +89 -0
  46. frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2_grpc.py +102 -0
  47. frogml/_proto/qwak/models/models_pb2.py +81 -79
  48. frogml/_proto/qwak/models/models_pb2.pyi +24 -0
  49. frogml/_proto/qwak/models/models_pb2_grpc.py +34 -0
  50. frogml/core/clients/administration/cluster_v2/__init__.py +1 -0
  51. frogml/core/clients/administration/cluster_v2/client.py +122 -0
  52. frogml/core/clients/administration/environment/client.py +28 -0
  53. frogml/core/clients/administration/environment_v1/__init__.py +1 -0
  54. frogml/core/clients/administration/environment_v1/client.py +53 -0
  55. frogml/core/clients/model_deployment_manager/__init__.py +1 -0
  56. frogml/core/clients/model_deployment_manager/client.py +103 -0
  57. frogml/core/inner/di_configuration/dependency_wiring.py +18 -16
  58. {frogml-1.2.38.dist-info → frogml-1.2.47.dist-info}/METADATA +1 -1
  59. {frogml-1.2.38.dist-info → frogml-1.2.47.dist-info}/RECORD +66 -14
  60. frogml_services_mock/mocks/cluster_v2_service.py +146 -0
  61. frogml_services_mock/mocks/environment_v0_service.py +175 -0
  62. frogml_services_mock/mocks/environment_v1_service.py +37 -0
  63. frogml_services_mock/mocks/frogml_mocks.py +17 -3
  64. frogml_services_mock/mocks/model_deployment_manager_service_mock.py +255 -0
  65. frogml_services_mock/services_mock.py +51 -2
  66. {frogml-1.2.38.dist-info → frogml-1.2.47.dist-info}/WHEEL +0 -0
@@ -0,0 +1,103 @@
1
+ from dependency_injector.wiring import Provide
2
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_pb2 import (
3
+ Deployment,
4
+ ModelDeploymentInformation,
5
+ MultipleEnvironmentDeployment,
6
+ )
7
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_service_pb2 import (
8
+ DeploymentIds,
9
+ DeploymentIdToDeploymentSpecMap,
10
+ DeployModelRequest,
11
+ EditModelDeploymentRequest,
12
+ GetModelDeploymentResponse,
13
+ ListModelDeploymentsRequest,
14
+ ListModelDeploymentsResponse,
15
+ UndeployModelRequest,
16
+ )
17
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.deployment_service_pb2_grpc import (
18
+ ModelDeploymentServiceStub,
19
+ )
20
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.model_artifact_identifier_pb2 import (
21
+ ModelArtifactIdentifier,
22
+ ModelBasedArtifactIdentifier,
23
+ )
24
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.model_deployment_brief_pb2 import (
25
+ ModelDeploymentBrief,
26
+ )
27
+ from frogml._proto.com.jfrog.ml.model.deployment.v1.model_deployment_filter_pb2 import (
28
+ ModelDeploymentFilter,
29
+ )
30
+ from frogml._proto.qwak.deployment.deployment_service_pb2 import GetDeploymentRequest
31
+ from frogml.core.inner.di_configuration import FrogmlContainer
32
+ from frogml.core.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
33
+
34
+
35
+ class ModelDeploymentManagerClient:
36
+ def __init__(self, grpc_channel=Provide[FrogmlContainer.core_grpc_channel]):
37
+ self.__client = ModelDeploymentServiceStub(grpc_channel)
38
+
39
+ @grpc_try_catch_wrapper("Failed to deploy LLM for model {model_id}")
40
+ def deploy_llm(
41
+ self,
42
+ model_id: str,
43
+ model_group_id: str,
44
+ image_path: str,
45
+ environment_deployment_configuration: dict[str, Deployment],
46
+ ) -> None:
47
+ llm_model_identifier = ModelBasedArtifactIdentifier(
48
+ model_group_id=model_group_id,
49
+ model_id=model_id,
50
+ image_path=image_path,
51
+ )
52
+ model_artifact_identifier = ModelArtifactIdentifier(
53
+ model_based_artifact_id=llm_model_identifier
54
+ )
55
+ multiple_environment_deployment = MultipleEnvironmentDeployment(
56
+ model_artifact_identifier=model_artifact_identifier,
57
+ deployments=environment_deployment_configuration,
58
+ )
59
+ request = DeployModelRequest(
60
+ multiple_environment_deployment=multiple_environment_deployment
61
+ )
62
+
63
+ self.__client.DeployModel(request)
64
+
65
+ @grpc_try_catch_wrapper("Failed to undeploy")
66
+ def undeploy(self, deployment_ids: list[str]) -> None:
67
+ deployment_ids_proto = DeploymentIds(deployment_id=deployment_ids)
68
+ request = UndeployModelRequest(deployment_ids=deployment_ids_proto)
69
+ self.__client.UndeployModel(request)
70
+
71
+ @grpc_try_catch_wrapper("Failed to edit deployments")
72
+ def edit_deployments(
73
+ self, deployment_id_to_spec_map: dict[str, Deployment]
74
+ ) -> None:
75
+ deployments_map = DeploymentIdToDeploymentSpecMap(
76
+ deployments=deployment_id_to_spec_map
77
+ )
78
+ request = EditModelDeploymentRequest(
79
+ deployment_id_to_deployment_spec_map=deployments_map
80
+ )
81
+ self.__client.EditModelDeployment(request)
82
+
83
+ @grpc_try_catch_wrapper("Failed to list deployments")
84
+ def list_deployments(
85
+ self,
86
+ model_deployment_filter: ModelDeploymentFilter = None,
87
+ ) -> list[ModelDeploymentBrief]:
88
+ if model_deployment_filter is None:
89
+ model_deployment_filter = ModelDeploymentFilter()
90
+
91
+ request = ListModelDeploymentsRequest(
92
+ model_deployment_filter=model_deployment_filter
93
+ )
94
+ response: ListModelDeploymentsResponse = self.__client.ListModelDeployments(
95
+ request
96
+ )
97
+ return list(response.model_deployment_brief)
98
+
99
+ @grpc_try_catch_wrapper("Failed to get deployment with ID {deployment_id}")
100
+ def get_deployment(self, deployment_id: str) -> ModelDeploymentInformation:
101
+ request = GetDeploymentRequest(deployment_id=deployment_id)
102
+ response: GetModelDeploymentResponse = self.__client.GetModelDeployment(request)
103
+ return response.model_deployment_information
@@ -27,29 +27,30 @@ def wire_dependencies() -> FrogmlContainer:
27
27
  )
28
28
 
29
29
  from frogml.core.clients import (
30
- kube_deployment_captain,
31
- model_version_manager,
30
+ administration,
31
+ alert_management,
32
+ alerts_registry,
32
33
  analytics,
33
- system_secret,
34
+ audience,
35
+ automation_management,
34
36
  autoscaling,
35
- build_orchestrator,
36
37
  batch_job_management,
37
- instance_template,
38
- feature_store,
38
+ build_orchestrator,
39
+ data_versioning,
39
40
  deployment,
40
- user_application_instance,
41
- jfrog_gateway,
42
- alert_management,
41
+ feature_store,
42
+ file_versioning,
43
+ instance_template,
43
44
  integration_management,
44
- model_management,
45
- audience,
46
- data_versioning,
45
+ jfrog_gateway,
46
+ kube_deployment_captain,
47
47
  logging_client,
48
- automation_management,
49
- file_versioning,
50
- alerts_registry,
51
- administration,
48
+ model_deployment_manager,
52
49
  model_group_management,
50
+ model_management,
51
+ model_version_manager,
52
+ system_secret,
53
+ user_application_instance,
53
54
  )
54
55
 
55
56
  container.wire(
@@ -77,6 +78,7 @@ def wire_dependencies() -> FrogmlContainer:
77
78
  model_version_manager,
78
79
  jfrog_gateway,
79
80
  model_group_management,
81
+ model_deployment_manager,
80
82
  ]
81
83
  )
82
84
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: frogml
3
- Version: 1.2.38
3
+ Version: 1.2.47
4
4
  Summary: frogml 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,34 @@
1
- frogml/__init__.py,sha256=I4yJ_02i6XF65Grp6rwHpt87lTM97-QfQ_XPNBP1DMk,741
1
+ frogml/__init__.py,sha256=nvwO4HCXHk0dxYeR0cagpgioYfR0AhrIPIVdCPaco5g,741
2
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.py,sha256=-SD6RYgn5DFBLlwTpH9YkV8aW_zYymBI68Y-12Fn0I0,4193
3
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2.pyi,sha256=s0rdjIYw_dOfmuentpri79ls5dC3NqoUq__-XeavaXE,9688
4
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/auto_scaling_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
5
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.py,sha256=c1cvdGhas7PyjFa_qWgp8cQBT9FJJatDXpLFaAVqbIo,6441
6
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2.pyi,sha256=NMwN-k3r1Y3Z_2yrUvfTQvO0rywEMIsyXTpkroNy6X8,12950
7
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
8
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.py,sha256=MtpCW3ZPBYrpIhMC0XMJRCGDVpI-Ak_jeKQ9DGqYaUQ,6286
9
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2.pyi,sha256=srnR6yTrjo8tnqAmnhxXEbf5EKD-dxMnfXZ-rABtmaY,9569
10
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/deployment_service_pb2_grpc.py,sha256=qvF_o89cqJ9Jz_nZs3n72p_pY2Bo75Sq99ObFsx4Nsw,11599
11
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.py,sha256=RPbECbR8DOWfq37aSYm4oWJhlVd-IWKGYEIhjmJ5VlU,2422
12
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2.pyi,sha256=z3FDspmH0Bfd15x_KnzPDRvBdVbxCPxIz7ckC5wqJPM,3860
13
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/environment_variables_configuration_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
14
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.py,sha256=7TCaIZwY3cYX5JKUA1NR8WmkRH0CtLipi4kiaTjeL9E,2331
15
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2.pyi,sha256=4FFrif0OZFR18xXKuEpZC7sibeKNMMXM49Y-J7VXyGA,4529
16
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_artifact_identifier_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
17
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.py,sha256=r1nMzNPG0MktLtRPTFFif66qEHL0VGHuAoiM2ffXVlk,2306
18
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2.pyi,sha256=H-XA4wfh7t8PLYtfbPINIbWea43ubn8tbFdPN9IjLKs,2628
19
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_brief_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
20
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.py,sha256=6qhYmErXArD2rOoKeqnlvjwC-6dJo8k0HUcTTMW4oQQ,3889
21
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2.pyi,sha256=gdxw9GSXh-Msfe0ifVSmER-7kHtcU3u0RNCjb93YY-Y,9804
22
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/model_deployment_filter_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
23
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.py,sha256=xn_xW0y6JJ0TjyLaJBDVE7UwHO22tQr3nphz7xLGaSM,1833
24
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2.pyi,sha256=t_EkUDqnMHgXr0ft9IXyfYbIR4vXR3yGzVp-cG0P0G4,2578
25
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/probes_configuration_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
26
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.py,sha256=PhvTR0wld0M7fQFbmQ2vWplyHIDThaM_ZmVHNqcQBCc,1799
27
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2.pyi,sha256=tGb_ZZJuwMWmfKBiONnhwxREuREmDpV0x4Ya4DQaqos,2234
28
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/realtime_deployment_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
29
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.py,sha256=d3oCCHJywlvPD91GiTB_RveXoUhHyyJOkNJ5d5tGl58,1435
30
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2.pyi,sha256=FRhxd3AhNEICHElc8iv0gSnRH2zqmIw7Yd98tLWaR78,1253
31
+ frogml/_proto/com/jfrog/ml/model/deployment/v1/resource_configuration_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
2
32
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.py,sha256=pY7-QarLJWbL9uNmZ69RfE7IPVzwpVIhtd3A0wztSNY,1942
3
33
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2.pyi,sha256=505I4uUrCmv2hsUw2H5eT-nlkNOCQOWodpvEkH2fHIo,3073
4
34
  frogml/_proto/jfml/hosting_gateway/v1/build_upload_url_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -53,6 +83,9 @@ frogml/_proto/qwak/administration/authenticated_user/v1/details_pb2_grpc.py,sha2
53
83
  frogml/_proto/qwak/administration/cluster/v2/cluster_pb2.py,sha256=mn2N1ewXavzKj6fYOW7mtW3skdJHsIyDk0PoHGjV7xA,7710
54
84
  frogml/_proto/qwak/administration/cluster/v2/cluster_pb2.pyi,sha256=4dP_rJkV6nnxGkeJghFeq04mSaenDhKjrLsbk-ww6gA,17336
55
85
  frogml/_proto/qwak/administration/cluster/v2/cluster_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
86
+ frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2.py,sha256=LO7i_xO2JCj3O5Jk1GonvuH47tmYqkcOxuANRNbGHh0,5388
87
+ frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2.pyi,sha256=7Vn_OEVzdqDS2zcRez-IdsbftalVAkTI6IZZKxq3Pls,7344
88
+ frogml/_proto/qwak/administration/cluster/v2/cluster_service_pb2_grpc.py,sha256=UDuRQ_AIKghmnp8z--FqG5mLlH26aVLBLQqj4jMSM74,12944
56
89
  frogml/_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.py,sha256=Qrxc5jKlR90Yi0sU7poq8NRUf4sZf0_TUTUab71XPis,2853
57
90
  frogml/_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2.pyi,sha256=a_K7CSexEa3ewJUCsuX4ym0DUy4Qti0WGVC7TBN7NxE,2534
58
91
  frogml/_proto/qwak/administration/runtime_configuration/v0/container_registry_config_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -134,15 +167,24 @@ frogml/_proto/qwak/administration/v0/environments/personalization_pb2_grpc.py,sh
134
167
  frogml/_proto/qwak/administration/v0/users/user_pb2.py,sha256=VCv_1ojHeRH26hQmhzL9lomfDw1JRLseI75Le4Eo-6s,4795
135
168
  frogml/_proto/qwak/administration/v0/users/user_pb2.pyi,sha256=eUHlh367Qz0nQSvgxkkiOt3Qiy_1Rtm34_eaxUC2WKo,10514
136
169
  frogml/_proto/qwak/administration/v0/users/user_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
170
+ frogml/_proto/qwak/administration/v1/environments/environment_pb2.py,sha256=CvQOXO8keOc2EJAW2rbP9976pF_dsyupnYyxe0pRkyo,2478
171
+ frogml/_proto/qwak/administration/v1/environments/environment_pb2.pyi,sha256=0sxjj4w8G_AzSsEa7isLjaQPcssJKaxzHxBq5gknCSE,2015
172
+ frogml/_proto/qwak/administration/v1/environments/environment_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
173
+ frogml/_proto/qwak/administration/v1/environments/environment_service_pb2.py,sha256=eEKQjLsLzh8q0aJBOiO8bc7sANQRjdjF_fFifpmKtig,2867
174
+ frogml/_proto/qwak/administration/v1/environments/environment_service_pb2.pyi,sha256=k8bq8klAQyw2Luy-2XKSq6V5b2b0pDaXQlLQAGffGsE,2320
175
+ frogml/_proto/qwak/administration/v1/environments/environment_service_pb2_grpc.py,sha256=TuyAgZpEVHoR7QNjZhUtI6bWBmwxPO5nyVyizem1L-s,3163
176
+ frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2.py,sha256=Owd4zpaBIh3BytZy3-2ioU8vioULkXzmVV6BD9FoCuo,2543
177
+ frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2.pyi,sha256=ONAvrjhRLkbRAfY-dulJb2S2w0Enm4vq2z7DZRmbq3U,2736
178
+ frogml/_proto/qwak/admiral/secret/v0/account_secret_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
137
179
  frogml/_proto/qwak/admiral/secret/v0/secret_pb2.py,sha256=U8KCZxLbs_wlrHyUr9ZMqsBz4_47yiqsrnuOMqh6Gj0,5180
138
180
  frogml/_proto/qwak/admiral/secret/v0/secret_pb2.pyi,sha256=3bLfqt8Ciki7n0jP_NiNcgtNWliBfrqG_HzsGSQMC3Q,10250
139
181
  frogml/_proto/qwak/admiral/secret/v0/secret_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
140
182
  frogml/_proto/qwak/admiral/secret/v0/secret_service_pb2.py,sha256=V5_l2ipfgimZ-V3BawNz_h2u31e7LiF6f9XBnHZznXk,3425
141
183
  frogml/_proto/qwak/admiral/secret/v0/secret_service_pb2.pyi,sha256=LHBpsDVvWBFG-K5_ZQR_698sKKce7qwQqEd40yJwkaA,3343
142
184
  frogml/_proto/qwak/admiral/secret/v0/secret_service_pb2_grpc.py,sha256=95auDdnyLijxuVsxlU213MXYF595jjWvz1L5i-HVd1Y,6873
143
- frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py,sha256=upoqMkZwa-9yNTwfNxc8DhyqSqLh8yJ30Fa-0uTfJRI,3422
144
- frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.pyi,sha256=lvlahGJyM8LKj3hwEz4rqoAc3dh54iwlrjBBQVjPDX8,3810
145
- frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2_grpc.py,sha256=dGG6SxGjs4V-M6aKR9G5YPPcds-PNImvqdmY7l1Lp8k,6918
185
+ frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.py,sha256=oXHMyMj9bWjGbMIRnEx5v0pvlArb3HYQwvxDzy5QXnQ,5594
186
+ frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2.pyi,sha256=-fyHIVVv5Aa7pbv1EEmzYpYsnwDKFlnEfF5XFQI8VI4,7653
187
+ frogml/_proto/qwak/admiral/secret/v0/system_secret_service_pb2_grpc.py,sha256=Jl8KPDxhIcl3JwTuBi1Q-i9TCVaKI4FR4tCtIi9S19Y,13074
146
188
  frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.py,sha256=nPksL4ROLEgchP1YtL-BSAcmBvb3NcEdsNBxVInxDNI,8028
147
189
  frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2.pyi,sha256=TVQAGe8Sil6DyMFJbWOioYhdqRYHp26WouKjMbCgDnk,20646
148
190
  frogml/_proto/qwak/admiral/user_application_instance/v0/user_application_instance_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -542,9 +584,9 @@ frogml/_proto/qwak/model_group/model_group_pb2_grpc.py,sha256=YgDt3DtagEdZ7UtxcP
542
584
  frogml/_proto/qwak/model_group/model_group_repository_details_pb2.py,sha256=BxaVjDayd9h5Va2ZId3pNPeJFAqVXb8TJHIWmYsURN4,3806
543
585
  frogml/_proto/qwak/model_group/model_group_repository_details_pb2.pyi,sha256=3oCsYmmfvBjGkA1nRcx2cg11WNr40uuR3gAWXC7Wz2I,7245
544
586
  frogml/_proto/qwak/model_group/model_group_repository_details_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
545
- frogml/_proto/qwak/models/models_pb2.py,sha256=XF3-e8xW62ymbg7xGRCwc4fNsgXV2UZJ1lPgv47Ylkk,19046
546
- frogml/_proto/qwak/models/models_pb2.pyi,sha256=m2NGA7K3Jz3YFp8nOW4l_AB5kgjJUEDmr3xMUPYu3Dc,42638
547
- frogml/_proto/qwak/models/models_pb2_grpc.py,sha256=iOfvU_txYazEBCR2rlFlD3BXLseuSjKzXqCcwfI60h4,23627
587
+ frogml/_proto/qwak/models/models_pb2.py,sha256=jtw5KSbMwX5q6NVhfA5eblpJIANVavURyYvmXYvFVr0,19427
588
+ frogml/_proto/qwak/models/models_pb2.pyi,sha256=c8e6l8fxCXXJmlyV9GSZ7PTThelw79sCYiEpMKaMRZE,43564
589
+ frogml/_proto/qwak/models/models_pb2_grpc.py,sha256=7HZ5RwIk9I0MOHMOvZhvPFq_UIKwVdjZ79N3h-dlk8o,25406
548
590
  frogml/_proto/qwak/models/models_query_pb2.py,sha256=ZDEx_w4JgAL1q2wNOq5qkXiO5DctBgVRWbjrpOmOzbo,2880
549
591
  frogml/_proto/qwak/models/models_query_pb2.pyi,sha256=JEWkO0TXbGD2uKElgZB6VNPfYoq99GQ3Nj3jHObBQ2s,7490
550
592
  frogml/_proto/qwak/models/models_query_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
@@ -635,11 +677,15 @@ frogml/core/clients/administration/authenticated_user/__init__.py,sha256=47DEQpj
635
677
  frogml/core/clients/administration/authenticated_user/client.py,sha256=ouN4YxbZs4uYDI8O0DaJZxfUoXgqESrJCDRTlfuNk5s,1486
636
678
  frogml/core/clients/administration/authentication/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
637
679
  frogml/core/clients/administration/authentication/client.py,sha256=BzfCb5laJ3Vci5t3owrcpuVvF4o9bsiKtOFfYWM1Nno,1200
680
+ frogml/core/clients/administration/cluster_v2/__init__.py,sha256=qsxlbOhYg9p5U-0RStC1CIJ86lEZ5UNIWuFPnL-8wGw,36
681
+ frogml/core/clients/administration/cluster_v2/client.py,sha256=m4CTSYjxxSeed118VxCanDQivMLXg5o1jxyDmSeMHUM,4217
638
682
  frogml/core/clients/administration/eco_system/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
639
683
  frogml/core/clients/administration/eco_system/client.py,sha256=b2MYJVlbU4ehhwBWWkCwwl24xVw4K-_t7xMuGSMQ2uo,5379
640
684
  frogml/core/clients/administration/eco_system/eco_system_utils.py,sha256=iSyCJv7z65DI2c3qsREzBM_S8ZUGOG4ISjhrfL_t4_Y,521
641
685
  frogml/core/clients/administration/environment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
642
- frogml/core/clients/administration/environment/client.py,sha256=KHUsKFb2gKqpHFTU74vVSLGAPgHufbDS-hB4tbFvyE8,2739
686
+ frogml/core/clients/administration/environment/client.py,sha256=YlfaKvoMXGAvcYj480PtXlAqc8GG6qSGv3KvPqtYh0o,3807
687
+ frogml/core/clients/administration/environment_v1/__init__.py,sha256=15_J34QBVU9X0d9_A6stiwYc6oLwkvuCCviROwROPXo,40
688
+ frogml/core/clients/administration/environment_v1/client.py,sha256=pEvE7dKv_QhYgOi-Aggc6oWAJq-80-Qw_Hsddn60upA,1924
643
689
  frogml/core/clients/administration/self_service/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
644
690
  frogml/core/clients/administration/self_service/client.py,sha256=znZgDkUzSLgtKx1yrUNU72_BiFtPbpCratD73B316bU,2648
645
691
  frogml/core/clients/alert_management/__init__.py,sha256=zAfCPJTj6oAMoj3vciLjRy8ULTTHCmmrdISuDCHASvk,43
@@ -692,6 +738,8 @@ frogml/core/clients/location_discovery/__init__.py,sha256=sqGQ75YHFE6nvOcir38fyk
692
738
  frogml/core/clients/location_discovery/client.py,sha256=ZcBbbLqzZ9E7oLyamBTLTpp611LldhfFOSkzWroyIQg,2895
693
739
  frogml/core/clients/logging_client/__init__.py,sha256=1OCHnigQBYThBwGbxCreYA0BgP0HcuLFzNEWd3Yxh-c,34
694
740
  frogml/core/clients/logging_client/client.py,sha256=ZTRRPrcM2cqrZX9T3DvIr0YICrhDK91P4CDP-ei_ZjQ,8599
741
+ frogml/core/clients/model_deployment_manager/__init__.py,sha256=Kp6FTZzsXjvfoCLz8kurr7AIypRGIIdUek7_SBCt7f4,49
742
+ frogml/core/clients/model_deployment_manager/client.py,sha256=VLPgE3WDZOOg9y_mYZSKKYqVSi866vJipvAi5aOlDng,4135
695
743
  frogml/core/clients/model_group_management/__init__.py,sha256=f-nExP4vGWoWMUrRstY8QdtPqXnbsl2Ux0KfFkvGBkg,47
696
744
  frogml/core/clients/model_group_management/client.py,sha256=F8YCbfyphcljb8WxpeY7H7wnPpksyaKQ2ZOKi03RU6M,2016
697
745
  frogml/core/clients/model_management/__init__.py,sha256=vjWVP8MjmK4_A70WOgJqa6x24AeLK-ABjGJtogGzw9w,43
@@ -828,7 +876,7 @@ frogml/core/inner/di_configuration/__init__.py,sha256=GQKLaDPpBQ78h0gbwxaW3JkKbN
828
876
  frogml/core/inner/di_configuration/account.py,sha256=YbQBmZ-roybEZJ1fmGk9TLQ5CEjLWcP9NuxS6WSSrbI,3016
829
877
  frogml/core/inner/di_configuration/config.yml,sha256=GUvaZMWIDIR_d7hFcPVG_kHdCwpERKH1AFDakG3vqI4,242
830
878
  frogml/core/inner/di_configuration/containers.py,sha256=8rEMnLSFvlfjEnfvbm9hOizCGWXX9F8S9QEYF5sX48E,1495
831
- frogml/core/inner/di_configuration/dependency_wiring.py,sha256=bbVfjcDYEiAqKfIf2l60XthmDjYBe8YIwutz8DZcglg,2714
879
+ frogml/core/inner/di_configuration/dependency_wiring.py,sha256=sbgR4wJo08UDO9MQR6ub2lIq8HRzb9QBucvGVRRYQ4Y,2786
832
880
  frogml/core/inner/instance_template/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
833
881
  frogml/core/inner/instance_template/verify_template_id.py,sha256=SSVReUkx9t0FkXaSh0MKXOKdjd_55wE3NjAPOt6DGIM,1952
834
882
  frogml/core/inner/model_loggers_utils.py,sha256=mGBZQ1CbiEePaoftFEH_yfLlsxP8fcPcu83Cb8Ut8cM,2465
@@ -1111,9 +1159,12 @@ frogml_services_mock/mocks/batch_job_manager_service.py,sha256=CYkNs1SkuTji0QHdv
1111
1159
  frogml_services_mock/mocks/build_orchestrator_build_api.py,sha256=_9ZmgkAH_yp0yWZlqnMPT9rlj9ctfsMIlIJxG_a2Jc4,5002
1112
1160
  frogml_services_mock/mocks/build_orchestrator_build_settings_api.py,sha256=c5_X7Q4EYP5krrLFdWbnml7_asdgLKB_6_VkwEOR8_A,1218
1113
1161
  frogml_services_mock/mocks/build_orchestrator_service_api.py,sha256=7mZzOahph29ZLGh_qQaE2QqF4Bs5YwTaFj8QJxd4TkA,5345
1162
+ frogml_services_mock/mocks/cluster_v2_service.py,sha256=r4A2A4UUIEpyGrBEI9JSMQc1bzpzqBU_Vu22MIKP2do,5690
1114
1163
  frogml_services_mock/mocks/data_versioning_service.py,sha256=8DzV5oxH7DXZAu_ZBiPEwW9m1AwbOlYOO1PFPjkq_Dk,2470
1115
1164
  frogml_services_mock/mocks/deployment_management_service.py,sha256=wofBAw-2NKToTiFYxHqjR3QDrvplpV8NWNZMiIX6U_Q,20583
1116
1165
  frogml_services_mock/mocks/ecosystem_service_api.py,sha256=saJYdT43nGVNyozWeDVc6HIXAsNvCdU5J1i-NNrnOr4,2089
1166
+ frogml_services_mock/mocks/environment_v0_service.py,sha256=xKKxKiD4_sqRfyNEpEdqZz-LQ7sJKop80JtvGTReI7s,7522
1167
+ frogml_services_mock/mocks/environment_v1_service.py,sha256=_5WPuVTchhopXrZyHSnh_TAprtTgTjt3Jkpprl0cHsk,1404
1117
1168
  frogml_services_mock/mocks/execution_management_service.py,sha256=pRX_DWzayMhwbw7zQVRx2blVpiubqVWpZng2Xn8ZgI0,1205
1118
1169
  frogml_services_mock/mocks/feature_store_data_sources_manager_api.py,sha256=YNd-0abshQH6bfrIEr1z0awIde_SYabfuZHV83LmcJ4,5249
1119
1170
  frogml_services_mock/mocks/feature_store_entities_manager_api.py,sha256=fF3hhJvbd7PDPyghvqtiJudISOR1GasP6MDs5X44Tic,3355
@@ -1123,7 +1174,7 @@ frogml_services_mock/mocks/features_operator_v3_service.py,sha256=v6XdUpiI5T5mog
1123
1174
  frogml_services_mock/mocks/features_set_state_service_api.py,sha256=YaF3X12gCFDKFYFUAH3ZsK2jjbxU1aYYyExwe-F1Zdg,2293
1124
1175
  frogml_services_mock/mocks/feedback_service.py,sha256=yHItKZnlrN75F7D2rIGVrffipRaBCyMIvxK5ZmMVckE,1142
1125
1176
  frogml_services_mock/mocks/file_versioning_service.py,sha256=PF_XyipSF5I8SfCNDYv298p3lMCizgDTZORlSuo4RYQ,2609
1126
- frogml_services_mock/mocks/frogml_mocks.py,sha256=KpIMhgwmboLM08vo6SYep9Vj_tnGL2GiBD2UGwGJjt0,6143
1177
+ frogml_services_mock/mocks/frogml_mocks.py,sha256=eyJ76XwrRaSrBasdjyLGnlXWAmBXR1lJDJUqMBGLU90,6755
1127
1178
  frogml_services_mock/mocks/fs_offline_serving_service.py,sha256=rzxL_G8t3PIM-IFuchqkHuUUzlOZfiP5A5IMSeSQynA,2096
1128
1179
  frogml_services_mock/mocks/instance_template_management_service.py,sha256=AZ-QCzrx4d4g5E4XIPqFNhOJPBwb4S90mfVzsn6oNe4,4766
1129
1180
  frogml_services_mock/mocks/integration_management_service.py,sha256=cw45A8EadycTyq3Okx1sgcuWZ-Lz2iPMRin6f4e_0Ws,2775
@@ -1133,6 +1184,7 @@ frogml_services_mock/mocks/job_registry_service_api.py,sha256=gbytsg5mc5yjOYE_LP
1133
1184
  frogml_services_mock/mocks/kube_captain_service_api.py,sha256=0zRthbKSWeIl1qj16tqTg4jiTbUZoJRyPpEOXiESK2A,1598
1134
1185
  frogml_services_mock/mocks/location_discovery_service_api.py,sha256=i_alD-qEZ1SsIFgQew9gibGN47MrPhTfMqnxapJhTbo,3685
1135
1186
  frogml_services_mock/mocks/logging_service.py,sha256=-1FrXhGO5_NNUW7pzajTwGSf1soQC1feLuMwkOAXD7A,7389
1187
+ frogml_services_mock/mocks/model_deployment_manager_service_mock.py,sha256=83BtdT3FLhewmEjvqMLw7hrrKOxp_lLe_hlDIZ72ukI,9743
1136
1188
  frogml_services_mock/mocks/model_group_management_service.py,sha256=tEtBQPExusWI1NiigqEToSDIAforCP1DpVCGXiqfppc,1540
1137
1189
  frogml_services_mock/mocks/model_management_service.py,sha256=3byRc-8Fb5WnXTrWkHj1-S6RA2yfqK1yzX-7fqq_ZNk,4169
1138
1190
  frogml_services_mock/mocks/model_version_manager_service.py,sha256=XzRnAnn0VMY5hW8jP1ngWF-6OYIq8OgatZQ79JyxeMQ,3759
@@ -1144,9 +1196,9 @@ frogml_services_mock/mocks/system_secret_service.py,sha256=ceOR1nfQOGW4ZBcry4Q_l
1144
1196
  frogml_services_mock/mocks/user_application_instance_service_api.py,sha256=Es3s9MnutY0Qsd_FOq_ctKvT-3wHn7-fxah1fvr5Jv4,4100
1145
1197
  frogml_services_mock/mocks/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1146
1198
  frogml_services_mock/mocks/utils/exception_handlers.py,sha256=k_8mez3cwjNjKE9yGQRJUuK95qNQyk_slotIF08IIEE,308
1147
- frogml_services_mock/services_mock.py,sha256=y1_h189Ldu5MdVUW4nj-WMBtvUfkM_aKse7UfAb6Rxk,19419
1199
+ frogml_services_mock/services_mock.py,sha256=cVydasU1hXNbvz6K_M57GIZJ285i0s2fcMATzH2HH6I,21378
1148
1200
  frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
1149
1201
  frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
1150
- frogml-1.2.38.dist-info/METADATA,sha256=dAmb_6Ua2nc4DBFf9lUgTIAM9Qo3LQ5I7MTFhDVF7HI,5599
1151
- frogml-1.2.38.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1152
- frogml-1.2.38.dist-info/RECORD,,
1202
+ frogml-1.2.47.dist-info/METADATA,sha256=q8fKfEVudZ2jPcKn3gO_I07sbIuuT3Dh_Ul-QPXzpcQ,5599
1203
+ frogml-1.2.47.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
1204
+ frogml-1.2.47.dist-info/RECORD,,
@@ -0,0 +1,146 @@
1
+ from typing import Optional
2
+
3
+ import grpc
4
+
5
+ from frogml._proto.qwak.administration.cluster.v2.cluster_pb2 import (
6
+ ClusterState,
7
+ )
8
+ from frogml._proto.qwak.administration.cluster.v2.cluster_service_pb2 import (
9
+ CreateClusterCreationRequestResponse,
10
+ DeleteClusterResponse,
11
+ GetClusterResponse,
12
+ GetClusterStateResponse,
13
+ ListClustersResponse,
14
+ UpdateClusterConfigurationResponse,
15
+ )
16
+ from frogml._proto.qwak.administration.cluster.v2.cluster_service_pb2_grpc import (
17
+ ClusterServiceServicer,
18
+ )
19
+
20
+
21
+ class ClusterV2ServiceMock(ClusterServiceServicer):
22
+ def __init__(self):
23
+ super().__init__()
24
+ self.__create_cluster_response: Optional[
25
+ CreateClusterCreationRequestResponse
26
+ ] = None
27
+ self.__create_cluster_error: Optional[grpc.StatusCode] = None
28
+
29
+ self.__get_cluster_state_response: Optional[GetClusterStateResponse] = None
30
+ self.__get_cluster_state_error: Optional[grpc.StatusCode] = None
31
+
32
+ self.__get_cluster_response: Optional[GetClusterResponse] = None
33
+ self.__get_cluster_error: Optional[grpc.StatusCode] = None
34
+
35
+ self.__list_clusters_response: Optional[ListClustersResponse] = None
36
+ self.__list_clusters_error: Optional[grpc.StatusCode] = None
37
+
38
+ self.__update_cluster_response: Optional[UpdateClusterConfigurationResponse] = (
39
+ None
40
+ )
41
+ self.__update_cluster_error: Optional[grpc.StatusCode] = None
42
+
43
+ self.__delete_cluster_response: Optional[DeleteClusterResponse] = None
44
+ self.__delete_cluster_error: Optional[grpc.StatusCode] = None
45
+
46
+ def given_create_cluster(
47
+ self,
48
+ response: Optional[CreateClusterCreationRequestResponse] = None,
49
+ error_code: Optional[grpc.StatusCode] = None,
50
+ ):
51
+ self.__create_cluster_response = response
52
+ self.__create_cluster_error = error_code
53
+
54
+ def given_get_cluster_state(
55
+ self,
56
+ response: Optional[GetClusterStateResponse] = None,
57
+ error_code: Optional[grpc.StatusCode] = None,
58
+ ):
59
+ self.__get_cluster_state_response = response
60
+ self.__get_cluster_state_error = error_code
61
+
62
+ def given_get_cluster(
63
+ self,
64
+ response: Optional[GetClusterResponse] = None,
65
+ error_code: Optional[grpc.StatusCode] = None,
66
+ ):
67
+ self.__get_cluster_response = response
68
+ self.__get_cluster_error = error_code
69
+
70
+ def given_list_clusters(
71
+ self,
72
+ response: Optional[ListClustersResponse] = None,
73
+ error_code: Optional[grpc.StatusCode] = None,
74
+ ):
75
+ self.__list_clusters_response = response
76
+ self.__list_clusters_error = error_code
77
+
78
+ def given_update_cluster(
79
+ self,
80
+ response: Optional[UpdateClusterConfigurationResponse] = None,
81
+ error_code: Optional[grpc.StatusCode] = None,
82
+ ):
83
+ self.__update_cluster_response = response
84
+ self.__update_cluster_error = error_code
85
+
86
+ def given_delete_cluster(
87
+ self,
88
+ response: Optional[DeleteClusterResponse] = None,
89
+ error_code: Optional[grpc.StatusCode] = None,
90
+ ):
91
+ self.__delete_cluster_response = response
92
+ self.__delete_cluster_error = error_code
93
+
94
+ def CreateClusterCreationRequest(self, request, context):
95
+ if self.__create_cluster_error:
96
+ context.set_code(self.__create_cluster_error)
97
+ context.set_details("Failed to create cluster")
98
+ return CreateClusterCreationRequestResponse()
99
+ if self.__create_cluster_response:
100
+ return self.__create_cluster_response
101
+ return CreateClusterCreationRequestResponse(request_id="mock-request-id")
102
+
103
+ def GetClusterState(self, request, context):
104
+ if self.__get_cluster_state_error:
105
+ context.set_code(self.__get_cluster_state_error)
106
+ context.set_details("Failed to get cluster state")
107
+ return GetClusterStateResponse()
108
+ if self.__get_cluster_state_response:
109
+ return self.__get_cluster_state_response
110
+ return GetClusterStateResponse(cluster_state=ClusterState())
111
+
112
+ def GetCluster(self, request, context):
113
+ if self.__get_cluster_error:
114
+ context.set_code(self.__get_cluster_error)
115
+ context.set_details("Failed to get cluster")
116
+ return GetClusterResponse()
117
+ if self.__get_cluster_response:
118
+ return self.__get_cluster_response
119
+ return GetClusterResponse(cluster_state=ClusterState())
120
+
121
+ def ListClusters(self, request, context):
122
+ if self.__list_clusters_error:
123
+ context.set_code(self.__list_clusters_error)
124
+ context.set_details("Failed to list clusters")
125
+ return ListClustersResponse()
126
+ if self.__list_clusters_response:
127
+ return self.__list_clusters_response
128
+ return ListClustersResponse()
129
+
130
+ def UpdateClusterConfiguration(self, request, context):
131
+ if self.__update_cluster_error:
132
+ context.set_code(self.__update_cluster_error)
133
+ context.set_details("Failed to update cluster")
134
+ return UpdateClusterConfigurationResponse()
135
+ if self.__update_cluster_response:
136
+ return self.__update_cluster_response
137
+ return UpdateClusterConfigurationResponse(request_id="mock-request-id")
138
+
139
+ def DeleteCluster(self, request, context):
140
+ if self.__delete_cluster_error:
141
+ context.set_code(self.__delete_cluster_error)
142
+ context.set_details("Failed to delete cluster")
143
+ return DeleteClusterResponse()
144
+ if self.__delete_cluster_response:
145
+ return self.__delete_cluster_response
146
+ return DeleteClusterResponse(request_id="mock-request-id")