diff --git a/instill/clients/artifact.py b/instill/clients/artifact.py new file mode 100644 index 0000000..b64e755 --- /dev/null +++ b/instill/clients/artifact.py @@ -0,0 +1,442 @@ +# pylint: disable=no-member,wrong-import-position,too-many-lines,no-name-in-module +from typing import Dict + +# artifact +import instill.protogen.artifact.artifact.v1alpha.artifact_pb2 as artifact_interface +import instill.protogen.artifact.artifact.v1alpha.artifact_public_service_pb2_grpc as artifact_service +import instill.protogen.artifact.artifact.v1alpha.chunk_pb2 as chunk_interface + +# common +import instill.protogen.common.healthcheck.v1beta.healthcheck_pb2 as healthcheck +from instill.clients.base import Client, RequestFactory +from instill.clients.constant import DEFAULT_INSTANCE +from instill.clients.instance import InstillInstance +from instill.configuration import global_config +from instill.utils.error_handler import grpc_handler + + +class ArtifactClient(Client): + def __init__(self, async_enabled: bool) -> None: + self.hosts: Dict[str, InstillInstance] = {} + if DEFAULT_INSTANCE in global_config.hosts: + self.instance = DEFAULT_INSTANCE + elif len(global_config.hosts) == 0: + self.instance = "" + else: + self.instance = list(global_config.hosts.keys())[0] + + if global_config.hosts is not None: + for instance, config in global_config.hosts.items(): + self.hosts[instance] = InstillInstance( + artifact_service.ArtifactPublicServiceStub, + url=config.url, + token=config.token, + secure=config.secure, + async_enabled=async_enabled, + ) + + @property + def hosts(self): + return self._hosts + + @hosts.setter + def hosts(self, hosts: Dict[str, InstillInstance]): + self._hosts = hosts + + @property + def instance(self): + return self._instance + + @instance.setter + def instance(self, instance: str): + self._instance = instance + + @property + def metadata(self): + return self._metadata + + @metadata.setter + def metadata(self, metadata: str): + self._metadata = metadata + + def liveness( + self, + async_enabled: bool = False, + ) -> artifact_interface.LivenessResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.Liveness, + request=artifact_interface.LivenessRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.Liveness, + request=artifact_interface.LivenessRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + def readiness( + self, + async_enabled: bool = False, + ) -> artifact_interface.ReadinessResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.Readiness, + request=artifact_interface.ReadinessRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.Readiness, + request=artifact_interface.ReadinessRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + def is_serving(self) -> bool: + try: + return ( + self.readiness().health_check_response.status + == healthcheck.HealthCheckResponse.SERVING_STATUS_SERVING + ) + except Exception: + return False + + @grpc_handler + def create_knowledge_base( + self, + namespace_id: str, + name: str, + description: str, + tags: list[str], + async_enabled: bool = False, + ) -> artifact_interface.CreateKnowledgeBaseResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.CreateKnowledgeBase, + request=artifact_interface.CreateKnowledgeBaseRequest( + namespace_id=namespace_id, + name=name, + description=description, + tags=tags, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.CreateKnowledgeBase, + request=artifact_interface.CreateKnowledgeBaseRequest( + namespace_id=namespace_id, + name=name, + description=description, + tags=tags, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_knowledge_bases( + self, + namespace_id: str, + async_enabled: bool = False, + ) -> artifact_interface.ListKnowledgeBasesResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListKnowledgeBases, + request=artifact_interface.ListKnowledgeBasesRequest( + namespace_id=namespace_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListKnowledgeBases, + request=artifact_interface.ListKnowledgeBasesRequest( + namespace_id=namespace_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def update_knowledge_base( + self, + kb_id: str, + description: str, + tags: str, + namespace_id: str, + async_enabled: bool = False, + ) -> artifact_interface.UpdateKnowledgeBaseResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.UpdateKnowledgeBase, + request=artifact_interface.UpdateKnowledgeBaseRequest( + kb_id=kb_id, + description=description, + tags=tags, + namespace_id=namespace_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.UpdateKnowledgeBase, + request=artifact_interface.UpdateKnowledgeBaseRequest( + kb_id=kb_id, + description=description, + tags=tags, + namespace_id=namespace_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def delete_knowledge_base( + self, + namespace_id: str, + kb_id: str, + async_enabled: bool = False, + ) -> artifact_interface.DeleteKnowledgeBaseResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.DeleteKnowledgeBase, + request=artifact_interface.DeleteKnowledgeBaseRequest( + namespace_id=namespace_id, + kb_id=kb_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.DeleteKnowledgeBase, + request=artifact_interface.DeleteKnowledgeBaseRequest( + namespace_id=namespace_id, + kb_id=kb_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def upload_knowledge_base_file( + self, + namespace_id: str, + kb_id: str, + file: artifact_interface.File, + async_enabled: bool = False, + ) -> artifact_interface.UploadKnowledgeBaseFileResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.UploadKnowledgeBaseFile, + request=artifact_interface.UploadKnowledgeBaseFileRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file=file, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.UploadKnowledgeBaseFile, + request=artifact_interface.UploadKnowledgeBaseFileRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file=file, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def delete_knowledge_base_file( + self, + file_uid: str, + async_enabled: bool = False, + ) -> artifact_interface.DeleteKnowledgeBaseFileResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.DeleteKnowledgeBaseFile, + request=artifact_interface.DeleteKnowledgeBaseFileRequest( + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.DeleteKnowledgeBaseFile, + request=artifact_interface.DeleteKnowledgeBaseFileRequest( + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def process_knowledge_base_files( + self, + file_uids: list[str], + async_enabled: bool = False, + ) -> artifact_interface.ProcessKnowledgeBaseFilesResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ProcessKnowledgeBaseFiles, + request=artifact_interface.ProcessKnowledgeBaseFilesRequest( + file_uids=file_uids, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ProcessKnowledgeBaseFiles, + request=artifact_interface.ProcessKnowledgeBaseFilesRequest( + file_uids=file_uids, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_knowledge_base_files( + self, + namespace_id: str, + kb_id: str, + page_size: int, + page_token: str, + files_filter: artifact_interface.ListKnowledgeBaseFilesFilter, + async_enabled: bool = False, + ) -> artifact_interface.ListKnowledgeBaseFilesResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListKnowledgeBaseFiles, + request=artifact_interface.ListKnowledgeBaseFilesRequest( + namespace_id=namespace_id, + kb_id=kb_id, + page_size=page_size, + page_token=page_token, + filter=files_filter, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListKnowledgeBaseFiles, + request=artifact_interface.ListKnowledgeBaseFilesRequest( + namespace_id=namespace_id, + kb_id=kb_id, + page_size=page_size, + page_token=page_token, + filter=files_filter, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_chunks( + self, + namespace_id: str, + kb_id: str, + file_uid: str, + async_enabled: bool = False, + ) -> chunk_interface.ListChunksResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListChunks, + request=chunk_interface.ListChunksRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListChunks, + request=chunk_interface.ListChunksRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_source_file( + self, + namespace_id: str, + kb_id: str, + file_uid: str, + async_enabled: bool = False, + ) -> chunk_interface.GetSourceFileResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetSourceFile, + request=chunk_interface.GetSourceFileRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetSourceFile, + request=chunk_interface.GetSourceFileRequest( + namespace_id=namespace_id, + kb_id=kb_id, + file_uid=file_uid, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def update_chunk( + self, + chunk_uid: str, + retrievable: bool, + async_enabled: bool = False, + ) -> chunk_interface.UpdateChunkResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.UpdateChunk, + request=chunk_interface.UpdateChunkRequest( + chunk_uid=chunk_uid, + retrievable=retrievable, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.UpdateChunk, + request=chunk_interface.UpdateChunkRequest( + chunk_uid=chunk_uid, + retrievable=retrievable, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def similarity_chunks_search( + self, + namespace_id: str, + kb_id: str, + text_prompt: str, + topk: int, + async_enabled: bool = False, + ) -> chunk_interface.SimilarityChunksSearchResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.SimilarityChunksSearch, + request=chunk_interface.SimilarityChunksSearchRequest( + namespace_id=namespace_id, + kb_id=kb_id, + text_prompt=text_prompt, + topk=topk, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.SimilarityChunksSearch, + request=chunk_interface.SimilarityChunksSearchRequest( + namespace_id=namespace_id, + kb_id=kb_id, + text_prompt=text_prompt, + topk=topk, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() diff --git a/instill/clients/client.py b/instill/clients/client.py index c90f2ef..9870663 100644 --- a/instill/clients/client.py +++ b/instill/clients/client.py @@ -1,4 +1,5 @@ # pylint: disable=no-name-in-module +from instill.clients.artifact import ArtifactClient from instill.clients.mgmt import MgmtClient from instill.clients.model import ModelClient from instill.clients.pipeline import PipelineClient @@ -12,14 +13,18 @@ def __init__(self, async_enabled: bool = False) -> None: if not self.mgmt_service.is_serving(): Logger.w("Instill Core is required") raise NotServingException + + user_name = self.mgmt_service.get_user().user.name + self.pipeline_service = PipelineClient( - namespace=self.mgmt_service.get_user().user.name, + namespace=user_name, async_enabled=async_enabled, ) if not self.pipeline_service.is_serving(): Logger.w("Instill VDP is not serving, VDP functionalities will not work") + self.model_service = ModelClient( - namespace=self.mgmt_service.get_user().user.name, + namespace=user_name, async_enabled=async_enabled, ) if not self.model_service.is_serving(): @@ -27,10 +32,17 @@ def __init__(self, async_enabled: bool = False) -> None: "Instill Model is not serving, Model functionalities will not work" ) + self.artifact_service = ArtifactClient(async_enabled=async_enabled) + if not self.artifact_service.is_serving(): + Logger.w( + "Instill Artifact is not serving, Artifact functionalities will not work" + ) + def set_instance(self, instance: str): self.mgmt_service.instance = instance self.pipeline_service.instance = instance self.model_service.instance = instance + self.artifact_service.instance = instance def close(self): if self.mgmt_service.is_serving(): @@ -42,6 +54,9 @@ def close(self): if self.model_service.is_serving(): for host in self.model_service.hosts.values(): host.channel.close() + if self.artifact_service.is_serving(): + for host in self.artifact_service.hosts.values(): + host.channel.close() async def async_close(self): if self.mgmt_service.is_serving(): @@ -53,6 +68,9 @@ async def async_close(self): if self.model_service.is_serving(): for host in self.model_service.hosts.values(): await host.async_channel.close() + if self.artifact_service.is_serving(): + for host in self.artifact_service.hosts.values(): + await host.async_channel.close() def get_client(async_enabled: bool = False) -> InstillClient: diff --git a/instill/clients/instance.py b/instill/clients/instance.py index 50d7171..6ae2096 100644 --- a/instill/clients/instance.py +++ b/instill/clients/instance.py @@ -2,6 +2,7 @@ import grpc +import instill.protogen.artifact.artifact.v1alpha.artifact_public_service_pb2_grpc as artifact_service import instill.protogen.core.mgmt.v1beta.mgmt_public_service_pb2_grpc as mgmt_service import instill.protogen.model.model.v1alpha.model_public_service_pb2_grpc as model_service import instill.protogen.vdp.pipeline.v1beta.pipeline_public_service_pb2_grpc as pipeline_service @@ -47,6 +48,7 @@ def __init__(self, stub, url: str, token: str, secure: bool, async_enabled: bool model_service.ModelPublicServiceStub, pipeline_service.PipelinePublicServiceStub, mgmt_service.MgmtPublicServiceStub, + artifact_service.ArtifactPublicServiceStub, ] = stub(channel) if async_enabled: self.async_channel: grpc.Channel = async_channel @@ -54,4 +56,5 @@ def __init__(self, stub, url: str, token: str, secure: bool, async_enabled: bool model_service.ModelPublicServiceStub, pipeline_service.PipelinePublicServiceStub, mgmt_service.MgmtPublicServiceStub, + artifact_service.ArtifactPublicServiceStub, ] = stub(async_channel) diff --git a/instill/clients/mgmt.py b/instill/clients/mgmt.py index 1315356..c20b300 100644 --- a/instill/clients/mgmt.py +++ b/instill/clients/mgmt.py @@ -124,41 +124,50 @@ def check_namespace( @grpc_handler def list_user_membership( self, - parent: str, + user_id: str, async_enabled: bool = False, ) -> mgmt_interface.ListUserMembershipsResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.ListUserMemberships, - request=mgmt_interface.ListUserMembershipsRequest(parent=parent), + request=mgmt_interface.ListUserMembershipsRequest( + user_id=user_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.ListUserMemberships, - request=mgmt_interface.ListUserMembershipsRequest(parent=parent), + request=mgmt_interface.ListUserMembershipsRequest( + user_id=user_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @grpc_handler def get_user_membership( self, - name: str, + user_id: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetUserMembershipResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetUserMembership, request=mgmt_interface.GetUserMembershipRequest( - name=name, view=mgmt_interface.VIEW_FULL, + user_id=user_id, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.GetUserMembership, request=mgmt_interface.GetUserMembershipRequest( - name=name, view=mgmt_interface.VIEW_FULL, + user_id=user_id, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -191,18 +200,26 @@ def update_user_membership( @grpc_handler def delete_user_membership( self, - name: str, + user_id: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.DeleteUserMembershipResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.DeleteUserMembership, - request=mgmt_interface.DeleteUserMembershipRequest(name=name), + request=mgmt_interface.DeleteUserMembershipRequest( + user_id=user_id, + organization_id=organization_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.DeleteUserMembership, - request=mgmt_interface.DeleteUserMembershipRequest(name=name), + request=mgmt_interface.DeleteUserMembershipRequest( + user_id=user_id, + organization_id=organization_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -259,23 +276,24 @@ def list_organization( @grpc_handler def get_organization( self, - name: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetOrganizationResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetOrganization, request=mgmt_interface.GetOrganizationRequest( - name=name, view=mgmt_interface.VIEW_FULL, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.GetOrganization, request=mgmt_interface.GetOrganizationRequest( - name=name, view=mgmt_interface.VIEW_FULL, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -308,25 +326,30 @@ def update_organization( @grpc_handler def delete_organization( self, - name: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.DeleteOrganizationResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.DeleteOrganization, - request=mgmt_interface.DeleteOrganizationRequest(name=name), + request=mgmt_interface.DeleteOrganizationRequest( + organization_id=organization_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.DeleteOrganization, - request=mgmt_interface.DeleteOrganizationRequest(name=name), + request=mgmt_interface.DeleteOrganizationRequest( + organization_id=organization_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @grpc_handler def list_organization_memberships( self, - parent: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.ListOrganizationMembershipsResponse: if async_enabled: @@ -335,36 +358,43 @@ def list_organization_memberships( self.instance ].async_client.ListOrganizationMemberships, request=mgmt_interface.ListOrganizationMembershipsRequest( - parent=parent + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.ListOrganizationMemberships, - request=mgmt_interface.ListOrganizationMembershipsRequest(parent=parent), + request=mgmt_interface.ListOrganizationMembershipsRequest( + organization_id=organization_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @grpc_handler def get_organization_membership( self, - name: str, + organization_id: str, + user_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetOrganizationMembershipResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetOrganizationMembership, request=mgmt_interface.GetOrganizationMembershipRequest( - name=name, view=mgmt_interface.VIEW_FULL, + organization_id=organization_id, + user_id=user_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.GetOrganizationMembership, request=mgmt_interface.GetOrganizationMembershipRequest( - name=name, view=mgmt_interface.VIEW_FULL, + organization_id=organization_id, + user_id=user_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -399,7 +429,8 @@ def update_organization_membership( @grpc_handler def delete_organization_membership( self, - name: str, + organization_id: str, + user_id: str, async_enabled: bool = False, ) -> mgmt_interface.DeleteOrganizationMembershipResponse: if async_enabled: @@ -407,12 +438,19 @@ def delete_organization_membership( method=self.hosts[ self.instance ].async_client.DeleteOrganizationMembership, - request=mgmt_interface.DeleteOrganizationMembershipRequest(name=name), + request=mgmt_interface.DeleteOrganizationMembershipRequest( + organization_id=organization_id, + user_id=user_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() + return RequestFactory( method=self.hosts[self.instance].client.DeleteOrganizationMembership, - request=mgmt_interface.DeleteOrganizationMembershipRequest(name=name), + request=mgmt_interface.DeleteOrganizationMembershipRequest( + organization_id=organization_id, + user_id=user_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -462,19 +500,23 @@ def create_token( @grpc_handler def get_token( self, - name: str, + token_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetTokenResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetToken, - request=mgmt_interface.GetTokenRequest(name=name), + request=mgmt_interface.GetTokenRequest( + token_id=token_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.GetToken, - request=mgmt_interface.GetTokenRequest(name=name), + request=mgmt_interface.GetTokenRequest( + token_id=token_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -507,19 +549,23 @@ def list_tokens( @grpc_handler def delete_token( self, - name: str, + token_id: str, async_enabled: bool = False, ) -> mgmt_interface.DeleteTokenResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.DeleteToken, - request=mgmt_interface.DeleteTokenRequest(name=name), + request=mgmt_interface.DeleteTokenRequest( + token_id=token_id, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.DeleteToken, - request=mgmt_interface.DeleteTokenRequest(name=name), + request=mgmt_interface.DeleteTokenRequest( + token_id=token_id, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -544,14 +590,15 @@ def validate_token( @grpc_handler def get_user( self, + user_id: str = "me", async_enabled: bool = False, ) -> mgmt_interface.GetUserResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetUser, request=mgmt_interface.GetUserRequest( - name="users/me", view=mgmt_interface.VIEW_FULL, + user_id=user_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -559,8 +606,8 @@ def get_user( return RequestFactory( method=self.hosts[self.instance].client.GetUser, request=mgmt_interface.GetUserRequest( - name="users/me", view=mgmt_interface.VIEW_FULL, + user_id=user_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -568,66 +615,22 @@ def get_user( @grpc_handler def get_remaining_credit( self, - name: str, + namespace_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetRemainingCreditResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetRemainingCredit, - request=mgmt_interface.GetRemainingCreditRequest(owner=f"users/{name}"), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.GetRemainingCredit, - request=mgmt_interface.GetRemainingCreditRequest(owner=f"users/{name}"), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - - # seems duplicated with get_organization at line 261 - # @grpc_handler - # def get_org( - # self, - # org_name: str, - # async_enabled: bool = False, - # ) -> mgmt_interface.GetOrganizationResponse: - # if async_enabled: - # return RequestFactory( - # method=self.hosts[self.instance].async_client.GetOrganization, - # request=mgmt_interface.GetOrganizationRequest(name=f"orgs/{org_name}"), - # metadata=self.hosts[self.instance].metadata, - # ).send_async() - - # return RequestFactory( - # method=self.hosts[self.instance].client.GetOrganization, - # request=mgmt_interface.GetOrganizationRequest(name=f"orgs/{org_name}"), - # metadata=self.hosts[self.instance].metadata, - # ).send_sync() - - @grpc_handler - def list_pipeline_trigger_records( - self, - aggregation_window: int, - filter_str: str = "", - async_enabled: bool = False, - ) -> metric_interface.ListPipelineTriggerRecordsResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[ - self.instance - ].async_client.ListPipelineTriggerRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest( - aggregation_window=aggregation_window, - filter=filter_str, + request=mgmt_interface.GetRemainingCreditRequest( + namespace_id=namespace_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( - method=self.hosts[self.instance].client.ListPipelineTriggerRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest( - aggregation_window=aggregation_window, - filter=filter_str, + method=self.hosts[self.instance].client.GetRemainingCredit, + request=mgmt_interface.GetRemainingCreditRequest( + namespace_id=namespace_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -789,7 +792,7 @@ def get_authenticated_subscription( @grpc_handler def get_organization_subscription( self, - parent: str, + organization_id: str, async_enabled: bool = False, ) -> mgmt_interface.GetOrganizationSubscriptionResponse: if async_enabled: @@ -798,7 +801,7 @@ def get_organization_subscription( self.instance ].async_client.GetOrganizationSubscription, request=mgmt_interface.GetOrganizationSubscriptionRequest( - parent=parent, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -806,7 +809,7 @@ def get_organization_subscription( return RequestFactory( method=self.hosts[self.instance].client.GetOrganizationSubscription, request=mgmt_interface.GetOrganizationSubscriptionRequest( - parent=parent, + organization_id=organization_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -814,7 +817,7 @@ def get_organization_subscription( @grpc_handler def list_credit_consumption_chart_records( self, - owner: str, + namespace_id: str, aggregation_window: str, start: timestamp_pb2.Timestamp, stop: timestamp_pb2.Timestamp, @@ -826,7 +829,7 @@ def list_credit_consumption_chart_records( self.instance ].async_client.ListCreditConsumptionChartRecords, request=metric_interface.ListCreditConsumptionChartRecordsRequest( - owner=owner, + namespace_id=namespace_id, aggregation_window=aggregation_window, start=start, stop=stop, @@ -837,7 +840,7 @@ def list_credit_consumption_chart_records( return RequestFactory( method=self.hosts[self.instance].client.ListCreditConsumptionChartRecords, request=metric_interface.ListCreditConsumptionChartRecordsRequest( - owner=owner, + namespace_id=namespace_id, aggregation_window=aggregation_window, start=start, stop=stop, diff --git a/instill/clients/model.py b/instill/clients/model.py index 5891758..97cb88f 100644 --- a/instill/clients/model.py +++ b/instill/clients/model.py @@ -380,52 +380,6 @@ def rename_model( metadata=self.hosts[self.instance].metadata, ).send_sync() - @grpc_handler - def publish_model( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.PublishUserModelResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[self.instance].async_client.PublishUserModel, - request=model_interface.PublishUserModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.PublishUserModel, - request=model_interface.PublishUserModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - - @grpc_handler - def unpublish_model( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.UnpublishUserModelResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[self.instance].async_client.UnpublishUserModel, - request=model_interface.UnpublishUserModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.UnpublishUserModel, - request=model_interface.UnpublishUserModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - @grpc_handler def get_model( self, @@ -498,29 +452,6 @@ def lookup_model( metadata=self.hosts[self.instance].metadata, ).send_sync() - @grpc_handler - def get_model_card( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.GetUserModelCardResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[self.instance].async_client.GetUserModelCard, - request=model_interface.GetUserModelCardRequest( - name=f"{self.namespace}/models/{model_name}" - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.GetUserModelCard, - request=model_interface.GetUserModelCardRequest( - name=f"{self.namespace}/models/{model_name}" - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - @grpc_handler def list_models( self, @@ -644,15 +575,15 @@ def list_available_regions( @grpc_handler def get_model_definition( self, - model_name: str, + model_definition_id: str, async_enabled: bool = False, ) -> model_definition_interface.GetModelDefinitionResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetModelDefinition, request=model_definition_interface.GetModelDefinitionRequest( - name=f"{self.namespace}/models/{model_name}", view=model_definition_interface.VIEW_FULL, + model_definition_id=model_definition_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -660,8 +591,8 @@ def get_model_definition( return RequestFactory( method=self.hosts[self.instance].client.GetModelDefinition, request=model_definition_interface.GetModelDefinitionRequest( - name=f"{self.namespace}/models/{model_name}", view=model_definition_interface.VIEW_FULL, + model_definition_id=model_definition_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -669,14 +600,14 @@ def get_model_definition( @grpc_handler def get_operation( self, - model_name: str, + operation_id: str, async_enabled: bool = False, ) -> model_interface.GetModelOperationResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetModelOperation, request=model_interface.GetModelOperationRequest( - name=f"{self.namespace}/models/{model_name}", + operation_id=operation_id, view=model_definition_interface.VIEW_FULL, ), metadata=self.hosts[self.instance].metadata, @@ -685,7 +616,7 @@ def get_operation( return RequestFactory( method=self.hosts[self.instance].client.GetModelOperation, request=model_interface.GetModelOperationRequest( - name=f"{self.namespace}/models/{model_name}", + operation_id=operation_id, view=model_definition_interface.VIEW_FULL, ), metadata=self.hosts[self.instance].metadata, @@ -975,77 +906,6 @@ def rename_organization_model( metadata=self.hosts[self.instance].metadata, ).send_sync() - @grpc_handler - def publish_organization_model( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.PublishOrganizationModelResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[self.instance].async_client.PublishOrganizationModel, - request=model_interface.PublishOrganizationModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.PublishOrganizationModel, - request=model_interface.PublishOrganizationModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - - @grpc_handler - def unpublish_organization_model( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.UnpublishOrganizationModelResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[ - self.instance - ].async_client.UnpublishOrganizationModel, - request=model_interface.UnpublishOrganizationModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.UnpublishOrganizationModel, - request=model_interface.UnpublishOrganizationModelRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - - @grpc_handler - def get_organization_model_card( - self, - model_name: str, - async_enabled: bool = False, - ) -> model_interface.GetOrganizationModelCardResponse: - if async_enabled: - return RequestFactory( - method=self.hosts[self.instance].async_client.GetOrganizationModelCard, - request=model_interface.GetOrganizationModelCardRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_async() - - return RequestFactory( - method=self.hosts[self.instance].client.GetOrganizationModelCard, - request=model_interface.GetOrganizationModelCardRequest( - name=f"{self.namespace}/models/{model_name}", - ), - metadata=self.hosts[self.instance].metadata, - ).send_sync() - @grpc_handler def watch_organization_model( self, diff --git a/instill/clients/pipeline.py b/instill/clients/pipeline.py index 785f767..7b9dad7 100644 --- a/instill/clients/pipeline.py +++ b/instill/clients/pipeline.py @@ -465,14 +465,14 @@ def list_pipelines( @grpc_handler def get_operation( self, - name: str, + operation_id: str, async_enabled: bool = False, ) -> pipeline_interface.GetOperationResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetOperation, request=pipeline_interface.GetOperationRequest( - name=name, + operation_id=operation_id, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -480,7 +480,7 @@ def get_operation( return RequestFactory( method=self.hosts[self.instance].client.GetOperation, request=pipeline_interface.GetOperationRequest( - name=name, + operation_id=operation_id, ), metadata=self.hosts[self.instance].metadata, ).send_sync() diff --git a/instill/protogen b/instill/protogen index 88445e5..001b64f 160000 --- a/instill/protogen +++ b/instill/protogen @@ -1 +1 @@ -Subproject commit 88445e57507f7e0da7ed435a744f1bd3efa41580 +Subproject commit 001b64f96d01bc0a1afad2a129f5859b15de472d