frogml-core 0.0.86__py3-none-any.whl → 0.0.88__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 +1 -1
- frogml_core/clients/jfrog_gateway/client.py +27 -8
- frogml_core/inner/tool/grpc/grpc_try_wrapping.py +28 -4
- {frogml_core-0.0.86.dist-info → frogml_core-0.0.88.dist-info}/METADATA +2 -2
- {frogml_core-0.0.86.dist-info → frogml_core-0.0.88.dist-info}/RECORD +15 -8
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.py +69 -0
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.pyi +69 -0
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2_grpc.py +102 -0
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.py +45 -0
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.pyi +53 -0
- frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2_grpc.py +4 -0
- frogml_services_mock/mocks/frogml_mocks.py +2 -0
- frogml_services_mock/mocks/jfrog_tenant_info_service_mock.py +42 -0
- frogml_services_mock/services_mock.py +9 -0
- {frogml_core-0.0.86.dist-info → frogml_core-0.0.88.dist-info}/WHEEL +0 -0
frogml_core/__init__.py
CHANGED
@@ -2,8 +2,15 @@ from typing import cast
|
|
2
2
|
|
3
3
|
from dependency_injector.wiring import Provide, inject
|
4
4
|
|
5
|
-
from frogml_core.exceptions import FrogmlException
|
6
5
|
from frogml_core.inner.di_configuration import FrogmlContainer
|
6
|
+
from frogml_core.inner.tool.grpc.grpc_try_wrapping import grpc_try_catch_wrapper
|
7
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2 import (
|
8
|
+
GetJFrogTenantInfoResponse,
|
9
|
+
GetJFrogTenantInfoRequest,
|
10
|
+
)
|
11
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2_grpc import (
|
12
|
+
JFrogTenantInfoServiceStub,
|
13
|
+
)
|
7
14
|
from frogml_proto.qwak.jfrog.gateway.v0.repository_service_pb2 import (
|
8
15
|
GetRepositoryConfigurationResponse,
|
9
16
|
GetRepositoryConfigurationRequest,
|
@@ -21,7 +28,9 @@ class JfrogGatewayClient:
|
|
21
28
|
@inject
|
22
29
|
def __init__(self, grpc_channel=Provide[FrogmlContainer.core_grpc_channel]):
|
23
30
|
self.__repository_service = RepositoryServiceStub(grpc_channel)
|
31
|
+
self.__jfrog_tenant_info_service = JFrogTenantInfoServiceStub(grpc_channel)
|
24
32
|
|
33
|
+
@grpc_try_catch_wrapper("Failed to get repository configuration")
|
25
34
|
def get_repository_configuration(
|
26
35
|
self, repository_key: str
|
27
36
|
) -> GetRepositoryConfigurationResponse:
|
@@ -32,10 +41,20 @@ class JfrogGatewayClient:
|
|
32
41
|
"""
|
33
42
|
request = GetRepositoryConfigurationRequest(repository_key=repository_key)
|
34
43
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
44
|
+
return cast(
|
45
|
+
GetRepositoryConfigurationResponse,
|
46
|
+
self.__repository_service.GetRepositoryConfiguration(request),
|
47
|
+
)
|
48
|
+
|
49
|
+
@grpc_try_catch_wrapper("Failed to get JFrog tenant info")
|
50
|
+
def get_jfrog_tenant_info(self) -> GetJFrogTenantInfoResponse:
|
51
|
+
"""
|
52
|
+
Get the customer's JFrog tenant info
|
53
|
+
:return: The JFrog tenant info response
|
54
|
+
"""
|
55
|
+
return cast(
|
56
|
+
GetJFrogTenantInfoResponse,
|
57
|
+
self.__jfrog_tenant_info_service.GetJFrogTenantInfo(
|
58
|
+
GetJFrogTenantInfoRequest()
|
59
|
+
),
|
60
|
+
)
|
@@ -1,15 +1,39 @@
|
|
1
|
+
import logging
|
2
|
+
from typing import Callable
|
3
|
+
|
1
4
|
import grpc
|
2
5
|
|
3
6
|
from frogml_core.exceptions import FrogmlException
|
4
7
|
|
5
8
|
|
6
|
-
|
7
|
-
|
9
|
+
logger = logging.getLogger(__name__)
|
10
|
+
logger.setLevel(logging.INFO)
|
11
|
+
|
12
|
+
|
13
|
+
def grpc_try_catch_wrapper(exception_message: str):
|
14
|
+
def decorator(function: Callable):
|
8
15
|
def _inner_wrapper(*args, **kwargs):
|
9
16
|
try:
|
17
|
+
logger.debug(
|
18
|
+
"About to call gRPC function: %s where *args = %s and **kwargs = %s",
|
19
|
+
function.__name__,
|
20
|
+
args,
|
21
|
+
kwargs,
|
22
|
+
)
|
10
23
|
return function(*args, **kwargs)
|
11
|
-
except
|
12
|
-
|
24
|
+
except Exception as e:
|
25
|
+
logger.exception(
|
26
|
+
"An exception occurred in gRPC function %s. Exception: %s",
|
27
|
+
function.__name__,
|
28
|
+
e,
|
29
|
+
)
|
30
|
+
if isinstance(e, grpc.RpcError):
|
31
|
+
# noinspection PyUnresolvedReferences
|
32
|
+
raise FrogmlException(
|
33
|
+
exception_message + f". Error is: {e.details()}."
|
34
|
+
) from e
|
35
|
+
|
36
|
+
raise e
|
13
37
|
|
14
38
|
return _inner_wrapper
|
15
39
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: frogml-core
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.88
|
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
|
@@ -31,7 +31,7 @@ Requires-Dist: protobuf (>=4.21.6) ; python_version >= "3.10"
|
|
31
31
|
Requires-Dist: pyarrow (>=6.0.0) ; extra == "feature-store"
|
32
32
|
Requires-Dist: pyathena (>=2.2.0,!=2.18.0) ; extra == "feature-store"
|
33
33
|
Requires-Dist: pyspark (==3.4.2) ; extra == "feature-store"
|
34
|
-
Requires-Dist: python-jose
|
34
|
+
Requires-Dist: python-jose[cryptography] (>=3.4.0)
|
35
35
|
Requires-Dist: python-json-logger (>=2.0.2)
|
36
36
|
Requires-Dist: requests
|
37
37
|
Requires-Dist: retrying (==1.3.4)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
frogml_core/__init__.py,sha256=
|
1
|
+
frogml_core/__init__.py,sha256=twgBbCi-3DxE4i01CUscvYdGwQFPLUrynAGv-9irXi0,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
|
@@ -65,7 +65,7 @@ frogml_core/clients/integration_management/integration_utils.py,sha256=j5gomMtYi
|
|
65
65
|
frogml_core/clients/integration_management/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
66
|
frogml_core/clients/integration_management/openai/openai_system_secret.py,sha256=eP3blUextKicLnjpDcyElpShKCwsSnq7_OIt5pf3kLc,2145
|
67
67
|
frogml_core/clients/jfrog_gateway/__init__.py,sha256=E_BrYKBESU3wGNiR_RQncbAhLWyvJ-Ub2Akt_6FpfgM,39
|
68
|
-
frogml_core/clients/jfrog_gateway/client.py,sha256
|
68
|
+
frogml_core/clients/jfrog_gateway/client.py,sha256=-7eN9nq7BUVDCC_rBBHlOd7Ngu6sL1Lwn4G-pLKA51g,2101
|
69
69
|
frogml_core/clients/kube_deployment_captain/__init__.py,sha256=rJUEEy3zNH0aTFyuO_UBexzaUKdjvwU9P2vV1MDj684,41
|
70
70
|
frogml_core/clients/kube_deployment_captain/client.py,sha256=oz7VF37TSO0S07MqXOYu2Xmx_rl9IVrfHOz_8MWnBZ8,9340
|
71
71
|
frogml_core/clients/location_discovery/__init__.py,sha256=sqGQ75YHFE6nvOcir38fykUUmAa6cFEIze8PJYgYWRc,44
|
@@ -285,7 +285,7 @@ frogml_core/inner/tool/auth.py,sha256=H0tQTc8JgEGLxv79IS_28jahi8cq8NNoP3lpxlQshP
|
|
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
|
288
|
-
frogml_core/inner/tool/grpc/grpc_try_wrapping.py,sha256=
|
288
|
+
frogml_core/inner/tool/grpc/grpc_try_wrapping.py,sha256=nMNzmHQcgROBfd_QOTTUCZy-bIcpxPGPiUwsseqIrLg,1172
|
289
289
|
frogml_core/inner/tool/protobuf_factory.py,sha256=QBk7ySxHRkxvrC8ICZR7sYizDHIZKQHOcGfo6qXnrDA,1699
|
290
290
|
frogml_core/inner/tool/retry_utils.py,sha256=KcSFJuj02RKF-H9INpCmdiTNXlywEMJ2ClBa00N9aNM,435
|
291
291
|
frogml_core/inner/tool/run_config/__init__.py,sha256=krOWmfbiUyMxa4Z7FHZk3gGZBbMiJINxLxD7XwyUefE,277
|
@@ -666,6 +666,12 @@ frogml_proto/qwak/deployment/deployment_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8
|
|
666
666
|
frogml_proto/qwak/deployment/deployment_service_pb2.py,sha256=nElkI-aRZBXTRbWTn6yZ9-m_sSMG7S_KKSEn2qPH_jg,46324
|
667
667
|
frogml_proto/qwak/deployment/deployment_service_pb2.pyi,sha256=U43wEm09zS8pyjl_bHqym9b778pgodxPl-LrsP8gTrc,40993
|
668
668
|
frogml_proto/qwak/deployment/deployment_service_pb2_grpc.py,sha256=JTfQWEXtDmSa7E_wlCPFGuWe4mWF3BhbU5kphAJmEUk,27757
|
669
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.py,sha256=IYnu38-bjQHONTmtb57FrcqR6MOIIfxOvIXIb_wpN2w,4798
|
670
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2.pyi,sha256=hnVo03rTflR9nBvNIYqHf-RB5PfrxJhn3hnKgnTQ5ac,2448
|
671
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service_pb2_grpc.py,sha256=yrYrxN01Ty295xL0HDECbKVudyw98UKxAP_qsYx1gTQ,5294
|
672
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.py,sha256=GLErGwAdocN1Cn_06ye-NFdCGEzBfYkAutYf6Eoh4FU,2459
|
673
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2.pyi,sha256=685WP-kcl5wFSPW9H8wPRES9XSrRdFnIAOknpfMsrbc,1639
|
674
|
+
frogml_proto/qwak/ecosystem/jfrog/v0/jfrog_tenant_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
669
675
|
frogml_proto/qwak/ecosystem/jfrog/v0/token_pb2.py,sha256=8hJ7R8WfDA3c8ey_kgKFcPsi4_V-Vw0tNwsN9aEhxDQ,13287
|
670
676
|
frogml_proto/qwak/ecosystem/jfrog/v0/token_pb2.pyi,sha256=eZhdgcdWYETdyH8uKi8qHfqx97_i_JTzlI2SY_Pppoc,17104
|
671
677
|
frogml_proto/qwak/ecosystem/jfrog/v0/token_pb2_grpc.py,sha256=1oboBPFxaTEXt9Aw7EAj8gXHDCNMhZD2VXqocC9l_gk,159
|
@@ -1070,11 +1076,12 @@ frogml_services_mock/mocks/features_operator_v3_service.py,sha256=_RcUeL9LRFbxL7
|
|
1070
1076
|
frogml_services_mock/mocks/features_set_state_service_api.py,sha256=jLtDYRBQUXP9x2DaywRPNFTtAGewP1JF1wv28ZTRbL4,2290
|
1071
1077
|
frogml_services_mock/mocks/feedback_service.py,sha256=NH8IskHnwbHGfDJCunSWMWQd9UfVBL7rPzVrFWrCZC4,1140
|
1072
1078
|
frogml_services_mock/mocks/file_versioning_service.py,sha256=MtxGcWoB_hkJUMBRSso9-G_6_WBbHkrgzG6Rf_37Ysk,2606
|
1073
|
-
frogml_services_mock/mocks/frogml_mocks.py,sha256=
|
1079
|
+
frogml_services_mock/mocks/frogml_mocks.py,sha256=zJx_jIOkXtO0ngdZ1iHNykku1KcaHsmdRSdxGdyotGc,6701
|
1074
1080
|
frogml_services_mock/mocks/fs_offline_serving_service.py,sha256=O4hd4kQ-sXm9zMPVJYHXO4ARPuc3UN0E9rcOtDkSJRk,2093
|
1075
1081
|
frogml_services_mock/mocks/instance_template_management_service.py,sha256=8J8NlD667kWfjhSXsyH31jjr7qKIaF77K1Fc7FgxtHY,4762
|
1076
1082
|
frogml_services_mock/mocks/integration_management_service.py,sha256=XvWyif8pGuqJsrjTs6m29cneVuYdjVptPpRndwIdqq4,2771
|
1077
1083
|
frogml_services_mock/mocks/internal_build_orchestrator_service.py,sha256=saWQOWbJC5uoAcr053rmd0Jj2TI4TH3Kyr2D5lsL87w,1059
|
1084
|
+
frogml_services_mock/mocks/jfrog_tenant_info_service_mock.py,sha256=wvRJS5Jn1y_7nRR5PXmoJwBrA3qDB8fu8tOXXlHxkfA,1510
|
1078
1085
|
frogml_services_mock/mocks/job_registry_service_api.py,sha256=Zd5lVM6h4jFfKHxnQAux1FiBEw2tXFA284OJ33a_IH4,2711
|
1079
1086
|
frogml_services_mock/mocks/kube_captain_service_api.py,sha256=WVCaoOHY-kFdS73bd7kuOssr1RAK1F6MUlJ-NO0eLfY,1596
|
1080
1087
|
frogml_services_mock/mocks/location_discovery_service_api.py,sha256=TUdku1zdmIZXZYbkGurK-OhScPfMeGUzRVa7FgxZnrQ,3682
|
@@ -1093,9 +1100,9 @@ frogml_services_mock/mocks/utils/exception_handlers.py,sha256=k_8mez3cwjNjKE9yGQ
|
|
1093
1100
|
frogml_services_mock/mocks/vector_serving_api.py,sha256=ZljLOw9_ee-nlvEMU0HNzmK2tcsmBY6VzuVzLmInYj4,5838
|
1094
1101
|
frogml_services_mock/mocks/vectors_management_api.py,sha256=-GtKow3JmBj6LRZw625WdD8pt9VKtGZUs2VXTbtEPg0,3602
|
1095
1102
|
frogml_services_mock/mocks/workspace_manager_service_mock.py,sha256=WbOiWgOyr-xTicwJO7jdY-gN_5hF_s9GOU-ZO5P_2_M,7745
|
1096
|
-
frogml_services_mock/services_mock.py,sha256=
|
1103
|
+
frogml_services_mock/services_mock.py,sha256=sgKgwhu2W0YOHtzil8x7f1znK_sZr_i27XSeiF4xqVE,21200
|
1097
1104
|
frogml_services_mock/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1098
1105
|
frogml_services_mock/utils/service_utils.py,sha256=ZlB0CnB1J6oBn6_m7fQO2U8tKoboHdUa6ljjkRMYNXU,265
|
1099
|
-
frogml_core-0.0.
|
1100
|
-
frogml_core-0.0.
|
1101
|
-
frogml_core-0.0.
|
1106
|
+
frogml_core-0.0.88.dist-info/METADATA,sha256=d-_5vh5OvKAIllVEA8nyZrJWJ1zdLFT4gBDIRKxeEvc,2028
|
1107
|
+
frogml_core-0.0.88.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
1108
|
+
frogml_core-0.0.88.dist-info/RECORD,,
|
@@ -0,0 +1,69 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: frogml_proto.qwak.ecosystem/jfrog/v0/jfrog_tenant_info_service.proto
|
4
|
+
"""Generated protocol buffer code."""
|
5
|
+
from google.protobuf import descriptor as _descriptor
|
6
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
7
|
+
from google.protobuf import message as _message
|
8
|
+
from google.protobuf import reflection as _reflection
|
9
|
+
from google.protobuf import symbol_database as _symbol_database
|
10
|
+
# @@protoc_insertion_point(imports)
|
11
|
+
|
12
|
+
_sym_db = _symbol_database.Default()
|
13
|
+
|
14
|
+
|
15
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0 import jfrog_tenant_pb2 as qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__pb2
|
16
|
+
|
17
|
+
|
18
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n7qwak/ecosystem/jfrog/v0/jfrog_tenant_info_service.proto\x12)qwak.ecosystem.jfrog.jfrog_tenant_info.v0\x1a*qwak/ecosystem/jfrog/v0/jfrog_tenant.proto\"\x1b\n\x19GetJFrogTenantInfoRequest\"m\n\x1aGetJFrogTenantInfoResponse\x12O\n\x0btenant_info\x18\x01 \x01(\x0b\x32:.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfo\"\x1a\n\x18ListJFrogProjectsRequest\"f\n\x19ListJFrogProjectsResponse\x12I\n\x08projects\x18\x01 \x03(\x0b\x32\x37.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogProject2\xdd\x02\n\x16JFrogTenantInfoService\x12\xa1\x01\n\x12GetJFrogTenantInfo\x12\x44.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.GetJFrogTenantInfoRequest\x1a\x45.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.GetJFrogTenantInfoResponse\x12\x9e\x01\n\x11ListJFrogProjects\x12\x43.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.ListJFrogProjectsRequest\x1a\x44.qwak.ecosystem.jfrog.jfrog_tenant_info.v0.ListJFrogProjectsResponseB\xbd\x01\n com.qwak.ai.jfrog.tenant.info.v0P\x01Z\x96\x01github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/jfrog/v0;jfrog_v0b\x06proto3')
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
_GETJFROGTENANTINFOREQUEST = DESCRIPTOR.message_types_by_name['GetJFrogTenantInfoRequest']
|
23
|
+
_GETJFROGTENANTINFORESPONSE = DESCRIPTOR.message_types_by_name['GetJFrogTenantInfoResponse']
|
24
|
+
_LISTJFROGPROJECTSREQUEST = DESCRIPTOR.message_types_by_name['ListJFrogProjectsRequest']
|
25
|
+
_LISTJFROGPROJECTSRESPONSE = DESCRIPTOR.message_types_by_name['ListJFrogProjectsResponse']
|
26
|
+
GetJFrogTenantInfoRequest = _reflection.GeneratedProtocolMessageType('GetJFrogTenantInfoRequest', (_message.Message,), {
|
27
|
+
'DESCRIPTOR' : _GETJFROGTENANTINFOREQUEST,
|
28
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2'
|
29
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.GetJFrogTenantInfoRequest)
|
30
|
+
})
|
31
|
+
_sym_db.RegisterMessage(GetJFrogTenantInfoRequest)
|
32
|
+
|
33
|
+
GetJFrogTenantInfoResponse = _reflection.GeneratedProtocolMessageType('GetJFrogTenantInfoResponse', (_message.Message,), {
|
34
|
+
'DESCRIPTOR' : _GETJFROGTENANTINFORESPONSE,
|
35
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2'
|
36
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.GetJFrogTenantInfoResponse)
|
37
|
+
})
|
38
|
+
_sym_db.RegisterMessage(GetJFrogTenantInfoResponse)
|
39
|
+
|
40
|
+
ListJFrogProjectsRequest = _reflection.GeneratedProtocolMessageType('ListJFrogProjectsRequest', (_message.Message,), {
|
41
|
+
'DESCRIPTOR' : _LISTJFROGPROJECTSREQUEST,
|
42
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2'
|
43
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.ListJFrogProjectsRequest)
|
44
|
+
})
|
45
|
+
_sym_db.RegisterMessage(ListJFrogProjectsRequest)
|
46
|
+
|
47
|
+
ListJFrogProjectsResponse = _reflection.GeneratedProtocolMessageType('ListJFrogProjectsResponse', (_message.Message,), {
|
48
|
+
'DESCRIPTOR' : _LISTJFROGPROJECTSRESPONSE,
|
49
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2'
|
50
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.ListJFrogProjectsResponse)
|
51
|
+
})
|
52
|
+
_sym_db.RegisterMessage(ListJFrogProjectsResponse)
|
53
|
+
|
54
|
+
_JFROGTENANTINFOSERVICE = DESCRIPTOR.services_by_name['JFrogTenantInfoService']
|
55
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
56
|
+
|
57
|
+
DESCRIPTOR._options = None
|
58
|
+
DESCRIPTOR._serialized_options = b'\n com.qwak.ai.jfrog.tenant.info.v0P\001Z\226\001github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/jfrog/v0;jfrog_v0'
|
59
|
+
_GETJFROGTENANTINFOREQUEST._serialized_start=146
|
60
|
+
_GETJFROGTENANTINFOREQUEST._serialized_end=173
|
61
|
+
_GETJFROGTENANTINFORESPONSE._serialized_start=175
|
62
|
+
_GETJFROGTENANTINFORESPONSE._serialized_end=284
|
63
|
+
_LISTJFROGPROJECTSREQUEST._serialized_start=286
|
64
|
+
_LISTJFROGPROJECTSREQUEST._serialized_end=312
|
65
|
+
_LISTJFROGPROJECTSRESPONSE._serialized_start=314
|
66
|
+
_LISTJFROGPROJECTSRESPONSE._serialized_end=416
|
67
|
+
_JFROGTENANTINFOSERVICE._serialized_start=419
|
68
|
+
_JFROGTENANTINFOSERVICE._serialized_end=768
|
69
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
"""
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
3
|
+
isort:skip_file
|
4
|
+
"""
|
5
|
+
import builtins
|
6
|
+
import collections.abc
|
7
|
+
import google.protobuf.descriptor
|
8
|
+
import google.protobuf.internal.containers
|
9
|
+
import google.protobuf.message
|
10
|
+
import frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2
|
11
|
+
import sys
|
12
|
+
|
13
|
+
if sys.version_info >= (3, 8):
|
14
|
+
import typing as typing_extensions
|
15
|
+
else:
|
16
|
+
import typing_extensions
|
17
|
+
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
19
|
+
|
20
|
+
class GetJFrogTenantInfoRequest(google.protobuf.message.Message):
|
21
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
22
|
+
|
23
|
+
def __init__(
|
24
|
+
self,
|
25
|
+
) -> None: ...
|
26
|
+
|
27
|
+
global___GetJFrogTenantInfoRequest = GetJFrogTenantInfoRequest
|
28
|
+
|
29
|
+
class GetJFrogTenantInfoResponse(google.protobuf.message.Message):
|
30
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
31
|
+
|
32
|
+
TENANT_INFO_FIELD_NUMBER: builtins.int
|
33
|
+
@property
|
34
|
+
def tenant_info(self) -> frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2.JFrogTenantInfo:
|
35
|
+
""" Information about the tenant"""
|
36
|
+
def __init__(
|
37
|
+
self,
|
38
|
+
*,
|
39
|
+
tenant_info: frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2.JFrogTenantInfo | None = ...,
|
40
|
+
) -> None: ...
|
41
|
+
def HasField(self, field_name: typing_extensions.Literal["tenant_info", b"tenant_info"]) -> builtins.bool: ...
|
42
|
+
def ClearField(self, field_name: typing_extensions.Literal["tenant_info", b"tenant_info"]) -> None: ...
|
43
|
+
|
44
|
+
global___GetJFrogTenantInfoResponse = GetJFrogTenantInfoResponse
|
45
|
+
|
46
|
+
class ListJFrogProjectsRequest(google.protobuf.message.Message):
|
47
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
48
|
+
|
49
|
+
def __init__(
|
50
|
+
self,
|
51
|
+
) -> None: ...
|
52
|
+
|
53
|
+
global___ListJFrogProjectsRequest = ListJFrogProjectsRequest
|
54
|
+
|
55
|
+
class ListJFrogProjectsResponse(google.protobuf.message.Message):
|
56
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
57
|
+
|
58
|
+
PROJECTS_FIELD_NUMBER: builtins.int
|
59
|
+
@property
|
60
|
+
def projects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2.JFrogProject]:
|
61
|
+
"""A list of projects for which the requesting user is an admin"""
|
62
|
+
def __init__(
|
63
|
+
self,
|
64
|
+
*,
|
65
|
+
projects: collections.abc.Iterable[qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2.JFrogProject] | None = ...,
|
66
|
+
) -> None: ...
|
67
|
+
def ClearField(self, field_name: typing_extensions.Literal["projects", b"projects"]) -> None: ...
|
68
|
+
|
69
|
+
global___ListJFrogProjectsResponse = ListJFrogProjectsResponse
|
@@ -0,0 +1,102 @@
|
|
1
|
+
# Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
|
2
|
+
"""Client and server classes corresponding to protobuf-defined services."""
|
3
|
+
import grpc
|
4
|
+
|
5
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0 import jfrog_tenant_info_service_pb2 as qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2
|
6
|
+
|
7
|
+
|
8
|
+
class JFrogTenantInfoServiceStub(object):
|
9
|
+
"""Missing associated documentation comment in .proto file."""
|
10
|
+
|
11
|
+
def __init__(self, channel):
|
12
|
+
"""Constructor.
|
13
|
+
|
14
|
+
Args:
|
15
|
+
channel: A grpc.Channel.
|
16
|
+
"""
|
17
|
+
self.GetJFrogTenantInfo = channel.unary_unary(
|
18
|
+
'/qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfoService/GetJFrogTenantInfo',
|
19
|
+
request_serializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoRequest.SerializeToString,
|
20
|
+
response_deserializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoResponse.FromString,
|
21
|
+
)
|
22
|
+
self.ListJFrogProjects = channel.unary_unary(
|
23
|
+
'/qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfoService/ListJFrogProjects',
|
24
|
+
request_serializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsRequest.SerializeToString,
|
25
|
+
response_deserializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsResponse.FromString,
|
26
|
+
)
|
27
|
+
|
28
|
+
|
29
|
+
class JFrogTenantInfoServiceServicer(object):
|
30
|
+
"""Missing associated documentation comment in .proto file."""
|
31
|
+
|
32
|
+
def GetJFrogTenantInfo(self, request, context):
|
33
|
+
"""Get Tenant Info
|
34
|
+
"""
|
35
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
36
|
+
context.set_details('Method not implemented!')
|
37
|
+
raise NotImplementedError('Method not implemented!')
|
38
|
+
|
39
|
+
def ListJFrogProjects(self, request, context):
|
40
|
+
"""List Tenant Projects
|
41
|
+
Returns all projects for which the requesting user is an admin
|
42
|
+
"""
|
43
|
+
context.set_code(grpc.StatusCode.UNIMPLEMENTED)
|
44
|
+
context.set_details('Method not implemented!')
|
45
|
+
raise NotImplementedError('Method not implemented!')
|
46
|
+
|
47
|
+
|
48
|
+
def add_JFrogTenantInfoServiceServicer_to_server(servicer, server):
|
49
|
+
rpc_method_handlers = {
|
50
|
+
'GetJFrogTenantInfo': grpc.unary_unary_rpc_method_handler(
|
51
|
+
servicer.GetJFrogTenantInfo,
|
52
|
+
request_deserializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoRequest.FromString,
|
53
|
+
response_serializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoResponse.SerializeToString,
|
54
|
+
),
|
55
|
+
'ListJFrogProjects': grpc.unary_unary_rpc_method_handler(
|
56
|
+
servicer.ListJFrogProjects,
|
57
|
+
request_deserializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsRequest.FromString,
|
58
|
+
response_serializer=qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsResponse.SerializeToString,
|
59
|
+
),
|
60
|
+
}
|
61
|
+
generic_handler = grpc.method_handlers_generic_handler(
|
62
|
+
'qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfoService', rpc_method_handlers)
|
63
|
+
server.add_generic_rpc_handlers((generic_handler,))
|
64
|
+
|
65
|
+
|
66
|
+
# This class is part of an EXPERIMENTAL API.
|
67
|
+
class JFrogTenantInfoService(object):
|
68
|
+
"""Missing associated documentation comment in .proto file."""
|
69
|
+
|
70
|
+
@staticmethod
|
71
|
+
def GetJFrogTenantInfo(request,
|
72
|
+
target,
|
73
|
+
options=(),
|
74
|
+
channel_credentials=None,
|
75
|
+
call_credentials=None,
|
76
|
+
insecure=False,
|
77
|
+
compression=None,
|
78
|
+
wait_for_ready=None,
|
79
|
+
timeout=None,
|
80
|
+
metadata=None):
|
81
|
+
return grpc.experimental.unary_unary(request, target, '/qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfoService/GetJFrogTenantInfo',
|
82
|
+
qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoRequest.SerializeToString,
|
83
|
+
qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.GetJFrogTenantInfoResponse.FromString,
|
84
|
+
options, channel_credentials,
|
85
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
86
|
+
|
87
|
+
@staticmethod
|
88
|
+
def ListJFrogProjects(request,
|
89
|
+
target,
|
90
|
+
options=(),
|
91
|
+
channel_credentials=None,
|
92
|
+
call_credentials=None,
|
93
|
+
insecure=False,
|
94
|
+
compression=None,
|
95
|
+
wait_for_ready=None,
|
96
|
+
timeout=None,
|
97
|
+
metadata=None):
|
98
|
+
return grpc.experimental.unary_unary(request, target, '/qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfoService/ListJFrogProjects',
|
99
|
+
qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsRequest.SerializeToString,
|
100
|
+
qwak_dot_ecosystem_dot_jfrog_dot_v0_dot_jfrog__tenant__info__service__pb2.ListJFrogProjectsResponse.FromString,
|
101
|
+
options, channel_credentials,
|
102
|
+
insecure, call_credentials, compression, wait_for_ready, timeout, metadata)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
# Generated by the protocol buffer compiler. DO NOT EDIT!
|
3
|
+
# source: frogml_proto.qwak.ecosystem/jfrog/v0/jfrog_tenant.proto
|
4
|
+
"""Generated protocol buffer code."""
|
5
|
+
from google.protobuf import descriptor as _descriptor
|
6
|
+
from google.protobuf import descriptor_pool as _descriptor_pool
|
7
|
+
from google.protobuf import message as _message
|
8
|
+
from google.protobuf import reflection as _reflection
|
9
|
+
from google.protobuf import symbol_database as _symbol_database
|
10
|
+
# @@protoc_insertion_point(imports)
|
11
|
+
|
12
|
+
_sym_db = _symbol_database.Default()
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n*qwak/ecosystem/jfrog/v0/jfrog_tenant.proto\x12)qwak.ecosystem.jfrog.jfrog_tenant_info.v0\"\'\n\x0fJFrogTenantInfo\x12\x14\n\x0cplatform_url\x18\x01 \x01(\t\"N\n\x0cJFrogProject\x12\x13\n\x0bproject_key\x18\x01 \x01(\t\x12\x14\n\x0c\x64isplay_name\x18\x02 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x03 \x01(\tB\xbd\x01\n com.qwak.ai.jfrog.tenant.info.v0P\x01Z\x96\x01github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/jfrog/v0;jfrog_v0b\x06proto3')
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
_JFROGTENANTINFO = DESCRIPTOR.message_types_by_name['JFrogTenantInfo']
|
22
|
+
_JFROGPROJECT = DESCRIPTOR.message_types_by_name['JFrogProject']
|
23
|
+
JFrogTenantInfo = _reflection.GeneratedProtocolMessageType('JFrogTenantInfo', (_message.Message,), {
|
24
|
+
'DESCRIPTOR' : _JFROGTENANTINFO,
|
25
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2'
|
26
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogTenantInfo)
|
27
|
+
})
|
28
|
+
_sym_db.RegisterMessage(JFrogTenantInfo)
|
29
|
+
|
30
|
+
JFrogProject = _reflection.GeneratedProtocolMessageType('JFrogProject', (_message.Message,), {
|
31
|
+
'DESCRIPTOR' : _JFROGPROJECT,
|
32
|
+
'__module__' : 'qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2'
|
33
|
+
# @@protoc_insertion_point(class_scope:qwak.ecosystem.jfrog.jfrog_tenant_info.v0.JFrogProject)
|
34
|
+
})
|
35
|
+
_sym_db.RegisterMessage(JFrogProject)
|
36
|
+
|
37
|
+
if _descriptor._USE_C_DESCRIPTORS == False:
|
38
|
+
|
39
|
+
DESCRIPTOR._options = None
|
40
|
+
DESCRIPTOR._serialized_options = b'\n com.qwak.ai.jfrog.tenant.info.v0P\001Z\226\001github.com/qwak-ai/qwak-platform/services/shared/java/libs/qwak-common/qwak-common-api/qwak-platform-ecosystem-api/pb/qwak/ecosystem/jfrog/v0;jfrog_v0'
|
41
|
+
_JFROGTENANTINFO._serialized_start=89
|
42
|
+
_JFROGTENANTINFO._serialized_end=128
|
43
|
+
_JFROGPROJECT._serialized_start=130
|
44
|
+
_JFROGPROJECT._serialized_end=208
|
45
|
+
# @@protoc_insertion_point(module_scope)
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"""
|
2
|
+
@generated by mypy-protobuf. Do not edit manually!
|
3
|
+
isort:skip_file
|
4
|
+
"""
|
5
|
+
import builtins
|
6
|
+
import google.protobuf.descriptor
|
7
|
+
import google.protobuf.message
|
8
|
+
import sys
|
9
|
+
|
10
|
+
if sys.version_info >= (3, 8):
|
11
|
+
import typing as typing_extensions
|
12
|
+
else:
|
13
|
+
import typing_extensions
|
14
|
+
|
15
|
+
DESCRIPTOR: google.protobuf.descriptor.FileDescriptor
|
16
|
+
|
17
|
+
class JFrogTenantInfo(google.protobuf.message.Message):
|
18
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
19
|
+
|
20
|
+
PLATFORM_URL_FIELD_NUMBER: builtins.int
|
21
|
+
platform_url: builtins.str
|
22
|
+
"""The JFrog platform base url"""
|
23
|
+
def __init__(
|
24
|
+
self,
|
25
|
+
*,
|
26
|
+
platform_url: builtins.str = ...,
|
27
|
+
) -> None: ...
|
28
|
+
def ClearField(self, field_name: typing_extensions.Literal["platform_url", b"platform_url"]) -> None: ...
|
29
|
+
|
30
|
+
global___JFrogTenantInfo = JFrogTenantInfo
|
31
|
+
|
32
|
+
class JFrogProject(google.protobuf.message.Message):
|
33
|
+
DESCRIPTOR: google.protobuf.descriptor.Descriptor
|
34
|
+
|
35
|
+
PROJECT_KEY_FIELD_NUMBER: builtins.int
|
36
|
+
DISPLAY_NAME_FIELD_NUMBER: builtins.int
|
37
|
+
DESCRIPTION_FIELD_NUMBER: builtins.int
|
38
|
+
project_key: builtins.str
|
39
|
+
"""The project's key"""
|
40
|
+
display_name: builtins.str
|
41
|
+
"""The project's display name"""
|
42
|
+
description: builtins.str
|
43
|
+
"""The project's description"""
|
44
|
+
def __init__(
|
45
|
+
self,
|
46
|
+
*,
|
47
|
+
project_key: builtins.str = ...,
|
48
|
+
display_name: builtins.str = ...,
|
49
|
+
description: builtins.str = ...,
|
50
|
+
) -> None: ...
|
51
|
+
def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "display_name", b"display_name", "project_key", b"project_key"]) -> None: ...
|
52
|
+
|
53
|
+
global___JFrogProject = JFrogProject
|
@@ -58,6 +58,7 @@ from frogml_services_mock.mocks.integration_management_service import (
|
|
58
58
|
from frogml_services_mock.mocks.internal_build_orchestrator_service import (
|
59
59
|
InternalBuildOrchestratorServiceMock,
|
60
60
|
)
|
61
|
+
from frogml_services_mock.mocks.jfrog_tenant_info_service_mock import JFrogTenantInfoServiceMock
|
61
62
|
from frogml_services_mock.mocks.job_registry_service_api import (
|
62
63
|
JobRegistryServiceApiMock,
|
63
64
|
)
|
@@ -135,3 +136,4 @@ class FrogmlMocks:
|
|
135
136
|
model_version_manager_service: ModelVersionManagerServiceMock
|
136
137
|
repository_service: RepositoryServiceMock
|
137
138
|
location_discovery_service: LocationDiscoveryServiceApiMock
|
139
|
+
jfrog_tenant_info_service: JFrogTenantInfoServiceMock
|
@@ -0,0 +1,42 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from typing import Dict
|
3
|
+
|
4
|
+
from google.protobuf.timestamp_pb2 import Timestamp
|
5
|
+
|
6
|
+
from frogml_core.exceptions import FrogmlNotFoundException
|
7
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2 import (
|
8
|
+
GetJFrogTenantInfoRequest,
|
9
|
+
GetJFrogTenantInfoResponse,
|
10
|
+
)
|
11
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2_grpc import (
|
12
|
+
JFrogTenantInfoServiceServicer,
|
13
|
+
)
|
14
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_pb2 import JFrogTenantInfo
|
15
|
+
from frogml_proto.qwak.jfrog.gateway.v0.repository_pb2 import RepositorySpec
|
16
|
+
from frogml_services_mock.mocks.utils.exception_handlers import (
|
17
|
+
raise_not_found_grpc_error,
|
18
|
+
)
|
19
|
+
|
20
|
+
timestamp = Timestamp()
|
21
|
+
timestamp.FromDatetime(datetime.now())
|
22
|
+
|
23
|
+
|
24
|
+
class JFrogTenantInfoServiceMock(JFrogTenantInfoServiceServicer):
|
25
|
+
def __init__(self):
|
26
|
+
super(JFrogTenantInfoServiceMock, self).__init__()
|
27
|
+
self.repositories: Dict[str, RepositorySpec] = {}
|
28
|
+
self.should_raise_exception: bool = False
|
29
|
+
self.platform_url: str = "mock.jfrog.io"
|
30
|
+
|
31
|
+
def GetJFrogTenantInfo(
|
32
|
+
self, request: GetJFrogTenantInfoRequest, context
|
33
|
+
) -> GetJFrogTenantInfoResponse:
|
34
|
+
if self.should_raise_exception:
|
35
|
+
raise_not_found_grpc_error(
|
36
|
+
context,
|
37
|
+
FrogmlNotFoundException(f"JFrog tenant info not found"),
|
38
|
+
)
|
39
|
+
|
40
|
+
return GetJFrogTenantInfoResponse(
|
41
|
+
tenant_info=JFrogTenantInfo(platform_url=self.platform_url)
|
42
|
+
)
|
@@ -3,6 +3,7 @@ from typing import Any, Generator, List, Tuple
|
|
3
3
|
|
4
4
|
import grpc
|
5
5
|
import pytest
|
6
|
+
|
6
7
|
from frogml_core.inner.di_configuration import FrogmlContainer
|
7
8
|
from frogml_proto.jfml.model_version.v1.model_version_manager_service_pb2_grpc import (
|
8
9
|
add_ModelVersionManagerServiceServicer_to_server,
|
@@ -53,6 +54,8 @@ from frogml_proto.qwak.deployment.alert_service_pb2_grpc import (
|
|
53
54
|
from frogml_proto.qwak.deployment.deployment_service_pb2_grpc import (
|
54
55
|
add_DeploymentManagementServiceServicer_to_server,
|
55
56
|
)
|
57
|
+
from frogml_proto.qwak.ecosystem.jfrog.v0.jfrog_tenant_info_service_pb2_grpc import \
|
58
|
+
add_JFrogTenantInfoServiceServicer_to_server
|
56
59
|
from frogml_proto.qwak.ecosystem.v0.ecosystem_runtime_service_pb2_grpc import (
|
57
60
|
add_QwakEcosystemRuntimeServicer_to_server,
|
58
61
|
)
|
@@ -183,6 +186,7 @@ from frogml_services_mock.mocks.integration_management_service import (
|
|
183
186
|
from frogml_services_mock.mocks.internal_build_orchestrator_service import (
|
184
187
|
InternalBuildOrchestratorServiceMock,
|
185
188
|
)
|
189
|
+
from frogml_services_mock.mocks.jfrog_tenant_info_service_mock import JFrogTenantInfoServiceMock
|
186
190
|
from frogml_services_mock.mocks.job_registry_service_api import (
|
187
191
|
JobRegistryServiceApiMock,
|
188
192
|
)
|
@@ -539,6 +543,11 @@ def attach_servicers(free_port, server):
|
|
539
543
|
LocationDiscoveryServiceApiMock,
|
540
544
|
add_LocationDiscoveryServiceServicer_to_server,
|
541
545
|
),
|
546
|
+
(
|
547
|
+
"jfrog_tenant_info_service",
|
548
|
+
JFrogTenantInfoServiceMock,
|
549
|
+
add_JFrogTenantInfoServiceServicer_to_server,
|
550
|
+
),
|
542
551
|
("port", free_port, None),
|
543
552
|
],
|
544
553
|
)
|
File without changes
|