diff --git a/.gitignore b/.gitignore index ba717d3..0f07d27 100644 --- a/.gitignore +++ b/.gitignore @@ -54,3 +54,4 @@ coverage.xml # MacOS .DS_Store +.idea diff --git a/instill/clients/mgmt.py b/instill/clients/mgmt.py index 0c1b8e9..1315356 100644 --- a/instill/clients/mgmt.py +++ b/instill/clients/mgmt.py @@ -2,7 +2,7 @@ from typing import Dict # common -from google.protobuf import field_mask_pb2 +from google.protobuf import field_mask_pb2, timestamp_pb2 import instill.protogen.common.healthcheck.v1beta.healthcheck_pb2 as healthcheck @@ -229,7 +229,7 @@ def create_organization( @grpc_handler def list_organization( self, - filer_str: str = "", + filter_str: str = "", next_page_token: str = "", total_size: int = 100, async_enabled: bool = False, @@ -238,7 +238,7 @@ def list_organization( return RequestFactory( method=self.hosts[self.instance].async_client.ListOrganizations, request=mgmt_interface.ListOrganizationsRequest( - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, view=mgmt_interface.VIEW_FULL, @@ -248,7 +248,7 @@ def list_organization( return RequestFactory( method=self.hosts[self.instance].client.ListOrganizations, request=mgmt_interface.ListOrganizationsRequest( - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, view=mgmt_interface.VIEW_FULL, @@ -375,7 +375,7 @@ def update_organization_membership( membership: mgmt_interface.OrganizationMembership, mask: field_mask_pb2.FieldMask, async_enabled: bool = False, - ) -> mgmt_interface.UpdateOrganizationResponse: + ) -> mgmt_interface.UpdateOrganizationMembershipResponse: if async_enabled: return RequestFactory( method=self.hosts[ @@ -549,13 +549,19 @@ def get_user( if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.GetUser, - request=mgmt_interface.GetUserRequest(name="users/me"), + request=mgmt_interface.GetUserRequest( + name="users/me", + view=mgmt_interface.VIEW_FULL, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.GetUser, - request=mgmt_interface.GetUserRequest(name="users/me"), + request=mgmt_interface.GetUserRequest( + name="users/me", + view=mgmt_interface.VIEW_FULL, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -578,28 +584,31 @@ def get_remaining_credit( metadata=self.hosts[self.instance].metadata, ).send_sync() - @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() + # 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: @@ -607,39 +616,58 @@ def list_pipeline_trigger_records( method=self.hosts[ self.instance ].async_client.ListPipelineTriggerRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest(), + request=metric_interface.ListPipelineTriggerChartRecordsRequest( + aggregation_window=aggregation_window, + filter=filter_str, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.ListPipelineTriggerRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest(), + request=metric_interface.ListPipelineTriggerChartRecordsRequest( + aggregation_window=aggregation_window, + filter=filter_str, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @grpc_handler def list_pipeline_trigger_table_records( self, + total_size: int = 100, + next_page_token: str = "", + filter_str: str = "", async_enabled: bool = False, - ) -> metric_interface.ListPipelineTriggerTableRecordsRequest: + ) -> metric_interface.ListPipelineTriggerTableRecordsResponse: if async_enabled: return RequestFactory( method=self.hosts[ self.instance ].async_client.ListPipelineTriggerTableRecords, - request=metric_interface.ListPipelineTriggerTableRecordsResponse(), + request=metric_interface.ListPipelineTriggerTableRecordsRequest( + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.ListPipelineTriggerTableRecords, - request=metric_interface.ListPipelineTriggerTableRecordsResponse(), + request=metric_interface.ListPipelineTriggerTableRecordsRequest( + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), metadata=self.hosts[self.instance].metadata, ).send_sync() @grpc_handler def list_pipeline_trigger_chart_records( self, + aggregation_window: int, + filter_str: str = "", async_enabled: bool = False, ) -> metric_interface.ListPipelineTriggerChartRecordsResponse: if async_enabled: @@ -647,12 +675,260 @@ def list_pipeline_trigger_chart_records( method=self.hosts[ self.instance ].async_client.ListPipelineTriggerChartRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest(), + request=metric_interface.ListPipelineTriggerChartRecordsRequest( + aggregation_window=aggregation_window, + filter=filter_str, + ), metadata=self.hosts[self.instance].metadata, ).send_async() return RequestFactory( method=self.hosts[self.instance].client.ListPipelineTriggerChartRecords, - request=metric_interface.ListPipelineTriggerChartRecordsRequest(), + request=metric_interface.ListPipelineTriggerChartRecordsRequest( + aggregation_window=aggregation_window, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_authenticated_user( + self, + async_enabled: bool = False, + ) -> mgmt_interface.GetAuthenticatedUserResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetAuthenticatedUser, + request=mgmt_interface.GetAuthenticatedUserRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetAuthenticatedUser, + request=mgmt_interface.GetAuthenticatedUserRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def patch_authenticated_user( + self, + user: mgmt_interface.AuthenticatedUser, + mask: field_mask_pb2.FieldMask, + async_enabled: bool = False, + ) -> mgmt_interface.PatchAuthenticatedUserResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.PatchAuthenticatedUser, + request=mgmt_interface.PatchAuthenticatedUserRequest( + user=user, + update_mask=mask, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.PatchAuthenticatedUser, + request=mgmt_interface.PatchAuthenticatedUserRequest( + user=user, + update_mask=mask, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_users( + self, + total_size: int = 100, + next_page_token: str = "", + filter_str: str = "", + async_enabled: bool = False, + ) -> mgmt_interface.ListUsersResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListUsers, + request=mgmt_interface.ListUsersRequest( + page_size=total_size, + page_token=next_page_token, + view=mgmt_interface.VIEW_FULL, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListUsers, + request=mgmt_interface.ListUsersRequest( + page_size=total_size, + page_token=next_page_token, + view=mgmt_interface.VIEW_FULL, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_authenticated_subscription( + self, + async_enabled: bool = False, + ) -> mgmt_interface.GetAuthenticatedUserSubscriptionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.GetAuthenticatedUserSubscription, + request=mgmt_interface.GetAuthenticatedUserSubscriptionRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetAuthenticatedUserSubscription, + request=mgmt_interface.GetAuthenticatedUserSubscriptionRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_organization_subscription( + self, + parent: str, + async_enabled: bool = False, + ) -> mgmt_interface.GetOrganizationSubscriptionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.GetOrganizationSubscription, + request=mgmt_interface.GetOrganizationSubscriptionRequest( + parent=parent, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetOrganizationSubscription, + request=mgmt_interface.GetOrganizationSubscriptionRequest( + parent=parent, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_credit_consumption_chart_records( + self, + owner: str, + aggregation_window: str, + start: timestamp_pb2.Timestamp, + stop: timestamp_pb2.Timestamp, + async_enabled: bool = False, + ) -> metric_interface.ListCreditConsumptionChartRecordsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.ListCreditConsumptionChartRecords, + request=metric_interface.ListCreditConsumptionChartRecordsRequest( + owner=owner, + aggregation_window=aggregation_window, + start=start, + stop=stop, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListCreditConsumptionChartRecords, + request=metric_interface.ListCreditConsumptionChartRecordsRequest( + owner=owner, + aggregation_window=aggregation_window, + start=start, + stop=stop, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def auth_token_issuer( + self, + username: str, + password: str, + async_enabled: bool = False, + ) -> mgmt_interface.AuthTokenIssuerResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.AuthTokenIssuer, + request=mgmt_interface.AuthTokenIssuerRequest( + username=username, + password=password, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.AuthTokenIssuer, + request=mgmt_interface.AuthTokenIssuerRequest( + username=username, + password=password, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def auth_logout( + self, + async_enabled: bool = False, + ) -> mgmt_interface.AuthLogoutResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.AuthLogout, + request=mgmt_interface.AuthLogoutRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.AuthLogout, + request=mgmt_interface.AuthLogoutRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def auth_change_password( + self, + old_password: str, + new_password: str, + async_enabled: bool = False, + ) -> mgmt_interface.AuthChangePasswordResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.AuthChangePassword, + request=mgmt_interface.AuthChangePasswordRequest( + old_password=old_password, + new_password=new_password, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.AuthChangePassword, + request=mgmt_interface.AuthChangePasswordRequest( + old_password=old_password, + new_password=new_password, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def auth_validate_access_token( + self, + async_enabled: bool = False, + ) -> mgmt_interface.AuthValidateAccessTokenResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.AuthValidateAccessToken, + request=mgmt_interface.AuthValidateAccessTokenRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.AuthValidateAccessToken, + request=mgmt_interface.AuthValidateAccessTokenRequest(), metadata=self.hosts[self.instance].metadata, ).send_sync() diff --git a/instill/clients/model.py b/instill/clients/model.py index 59eda70..5362b25 100644 --- a/instill/clients/model.py +++ b/instill/clients/model.py @@ -5,6 +5,7 @@ # common import instill.protogen.common.healthcheck.v1beta.healthcheck_pb2 as healthcheck +import instill.protogen.common.task.v1alpha.task_pb2 as task_interface import instill.protogen.model.model.v1alpha.model_definition_pb2 as model_definition_interface # model @@ -105,13 +106,15 @@ def is_serving(self) -> bool: def watch_model( self, model_name: str, + version: str, async_enabled: bool = False, ) -> model_interface.WatchUserModelResponse: if async_enabled: return RequestFactory( method=self.hosts[self.instance].async_client.WatchUserModel, request=model_interface.WatchUserModelRequest( - name=f"{self.namespace}/models/{model_name}" + name=f"{self.namespace}/models/{model_name}", + version=version, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -124,17 +127,49 @@ def watch_model( metadata=self.hosts[self.instance].metadata, ).send_sync() + @grpc_handler + def watch_latest_model( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.WatchUserLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.WatchUserLatestModel, + request=model_interface.WatchUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.WatchUserLatestModel, + request=model_interface.WatchUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + @grpc_handler def create_model( self, name: str, + task: task_interface.Task.ValueType, + region: str, + hardware: str, definition: str, configuration: dict, + visibility: model_interface.Model.Visibility.ValueType = model_interface.Model.VISIBILITY_PUBLIC, async_enabled: bool = False, ) -> model_interface.CreateUserModelResponse: model = model_interface.Model() model.id = name + model.task = task + model.region = region + model.hardware = hardware model.model_definition = definition + model.visibility = visibility + model.configuration.Clear() model.configuration.update(configuration) if async_enabled: return RequestFactory( @@ -178,6 +213,120 @@ def trigger_model( metadata=self.hosts[self.instance].metadata, ).send_sync() + @grpc_handler + def trigger_async_model( + self, + model_name: str, + task_inputs: list, + version: str, + async_enabled: bool = False, + ) -> model_interface.TriggerAsyncUserModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.TriggerAsyncUserModel, + request=model_interface.TriggerAsyncUserModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerAsyncUserModel, + request=model_interface.TriggerAsyncUserModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_latest_model( + self, + model_name: str, + task_inputs: list, + async_enabled: bool = False, + ) -> model_interface.TriggerUserLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.TriggerUserLatestModel, + request=model_interface.TriggerUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerUserLatestModel, + request=model_interface.TriggerUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_async_latest_model( + self, + model_name: str, + task_inputs: list, + async_enabled: bool = False, + ) -> model_interface.TriggerAsyncUserLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerAsyncUserLatestModel, + request=model_interface.TriggerAsyncUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerAsyncUserLatestModel, + request=model_interface.TriggerAsyncUserLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_model_binary_file_upload( + self, + model_name: str, + # task_input: list, + version: str, + async_enabled: bool = False, + ) -> model_interface.TriggerUserModelBinaryFileUploadResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerUserModelBinaryFileUpload, + request=model_interface.TriggerUserModelBinaryFileUploadRequest( + name=f"{self.namespace}/models/{model_name}", + # task_input=task_input, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerUserModelBinaryFileUpload, + request=model_interface.TriggerUserModelBinaryFileUploadRequest( + name=f"{self.namespace}/models/{model_name}", + # task_input=task_input, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + @grpc_handler def delete_model( self, @@ -201,6 +350,78 @@ def delete_model( metadata=self.hosts[self.instance].metadata, ).send_sync() + @grpc_handler + def rename_model( + self, + model_name: str, + new_model_id: str, + async_enabled: bool = False, + ) -> model_interface.RenameUserModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.RenameUserModel, + request=model_interface.RenameUserModelRequest( + name=f"{self.namespace}/models/{model_name}", + new_model_id=new_model_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.RenameUserModel, + request=model_interface.RenameUserModelRequest( + name=f"{self.namespace}/models/{model_name}", + new_model_id=new_model_id, + ), + 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, @@ -299,10 +520,13 @@ def get_model_card( @grpc_handler def list_models( self, + visibility: model_interface.Model.Visibility.ValueType = model_interface.Model.VISIBILITY_PUBLIC, next_page_token: str = "", total_size: int = 100, show_deleted: bool = False, public=False, + filter_str: str = "", + order_by: str = "", async_enabled: bool = False, ) -> model_interface.ListUserModelsResponse: if async_enabled: @@ -315,6 +539,9 @@ def list_models( page_token=next_page_token, show_deleted=show_deleted, view=model_definition_interface.VIEW_FULL, + filter=filter_str, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -327,6 +554,9 @@ def list_models( page_token=next_page_token, show_deleted=show_deleted, view=model_definition_interface.VIEW_FULL, + filter=filter_str, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -339,6 +569,9 @@ def list_models( page_token=next_page_token, show_deleted=show_deleted, view=model_definition_interface.VIEW_FULL, + filter=filter_str, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -351,6 +584,80 @@ def list_models( page_token=next_page_token, show_deleted=show_deleted, view=model_definition_interface.VIEW_FULL, + filter=filter_str, + visibility=visibility, + order_by=order_by, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_model_definitions( + self, + page_size: int = 100, + page_token: str = "", + async_enabled: bool = False, + ) -> model_definition_interface.ListModelDefinitionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListModelDefinitions, + request=model_definition_interface.ListModelDefinitionsRequest( + page_size=page_size, + page_token=page_token, + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListModelDefinitions, + request=model_definition_interface.ListModelDefinitionsRequest( + page_size=page_size, + page_token=page_token, + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_available_regions( + self, + async_enabled: bool = False, + ) -> model_interface.ListAvailableRegionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListAvailableRegions, + request=model_interface.ListAvailableRegionsRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListAvailableRegions, + request=model_interface.ListAvailableRegionsRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_model_definition( + self, + model_name: 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, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + 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, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -358,14 +665,15 @@ def list_models( @grpc_handler def get_operation( self, - name: str, + model_name: 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=name, + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -373,7 +681,622 @@ def get_operation( return RequestFactory( method=self.hosts[self.instance].client.GetModelOperation, request=model_interface.GetModelOperationRequest( - name=name, + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_latest_model_operation( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.GetUserLatestModelOperationResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.GetUserLatestModelOperation, + request=model_interface.GetUserLatestModelOperationRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetUserLatestModelOperation, + request=model_interface.GetUserLatestModelOperationRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_organization_latest_model_operation( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.GetOrganizationLatestModelOperationResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.GetOrganizationLatestModelOperation, + request=model_interface.GetOrganizationLatestModelOperationRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetOrganizationLatestModelOperation, + request=model_interface.GetOrganizationLatestModelOperationRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_model_versions( + self, + page: int, + model_name: str, + page_size: int = 100, + async_enabled: bool = False, + ) -> model_interface.ListUserModelVersionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListUserModelVersions, + request=model_interface.ListUserModelVersionsRequest( + page_size=page_size, + page=page, + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListUserModelVersions, + request=model_interface.ListUserModelVersionsRequest( + page_size=page_size, + page=page, + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def delete_model_version( + self, + model_name: str, + version: str, + async_enabled: bool = False, + ) -> model_interface.DeleteUserModelVersionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.DeleteUserModelVersion, + request=model_interface.DeleteUserModelVersionRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.DeleteUserModelVersion, + request=model_interface.DeleteUserModelVersionRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_organization_models( + self, + page_size: int = 100, + page_token: str = "", + parent: str = "", + show_deleted: bool = False, + # filter: str = "", + order_by: str = "", + async_enabled: bool = False, + ) -> model_interface.ListOrganizationModelsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListOrganizationModels, + request=model_interface.ListOrganizationModelsRequest( + page_size=page_size, + page_token=page_token, + view=model_definition_interface.VIEW_FULL, + parent=parent, + show_deleted=show_deleted, + # filter=filter, + # visibility=visibility, + order_by=order_by, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListOrganizationModels, + request=model_interface.ListOrganizationModelsRequest( + page_size=page_size, + page_token=page_token, + view=model_definition_interface.VIEW_FULL, + parent=parent, + show_deleted=show_deleted, + # filter=filter, + # visibility=visibility, + order_by=order_by, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def create_organization_model( + self, + name: str, + definition: str, + configuration: dict, + parent: str, + async_enabled: bool = False, + ) -> model_interface.CreateOrganizationModelResponse: + model = model_interface.Model() + model.id = name + model.model_definition = definition + model.configuration.update(configuration) + + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.CreateOrganizationModel, + request=model_interface.CreateOrganizationModelRequest( + model=model, + parent=parent, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.CreateOrganizationModel, + request=model_interface.CreateOrganizationModelRequest( + model=model, + parent=parent, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_organization_model( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.GetOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetOrganizationModel, + request=model_interface.GetOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetOrganizationModel, + request=model_interface.GetOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + view=model_definition_interface.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def update_organization_model( + self, + model: model_interface.Model, + update_mask: field_mask_pb2.FieldMask, + async_enabled: bool = False, + ) -> model_interface.UpdateOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.UpdateOrganizationModel, + request=model_interface.UpdateOrganizationModelRequest( + model=model, + update_mask=update_mask, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.UpdateOrganizationModel, + request=model_interface.UpdateOrganizationModelRequest( + model=model, + update_mask=update_mask, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def delete_organization_model( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.DeleteOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.DeleteOrganizationModel, + request=model_interface.DeleteOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.DeleteOrganizationModel, + request=model_interface.DeleteOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def rename_organization_model( + self, + model_name: str, + new_model_id: str, + async_enabled: bool = False, + ) -> model_interface.RenameOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.RenameOrganizationModel, + request=model_interface.RenameOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + new_model_id=new_model_id, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.RenameOrganizationModel, + request=model_interface.RenameOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + new_model_id=new_model_id, + ), + 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, + model_name: str, + version: str, + async_enabled: bool = False, + ) -> model_interface.WatchOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.WatchOrganizationModel, + request=model_interface.WatchOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.WatchOrganizationModel, + request=model_interface.WatchOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def watch_organization_latest_model( + self, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.WatchOrganizationLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.WatchOrganizationLatestModel, + request=model_interface.WatchOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.WatchOrganizationLatestModel, + request=model_interface.WatchOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_organization_model_versions( + self, + page_size: int, + page: int, + model_name: str, + async_enabled: bool = False, + ) -> model_interface.ListOrganizationModelVersionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.ListOrganizationModelVersions, + request=model_interface.ListOrganizationModelVersionsRequest( + page_size=page_size, + page=page, + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListOrganizationModelVersions, + request=model_interface.ListOrganizationModelVersionsRequest( + page_size=page_size, + page=page, + name=f"{self.namespace}/models/{model_name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def delete_organization_model_version( + self, + model_name: str, + version: str, + async_enabled: bool = False, + ) -> model_interface.DeleteOrganizationModelVersionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.DeleteOrganizationModelVersion, + request=model_interface.DeleteOrganizationModelVersionRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.DeleteOrganizationModelVersion, + request=model_interface.DeleteOrganizationModelVersionRequest( + name=f"{self.namespace}/models/{model_name}", + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_organization_model( + self, + model_name: str, + task_inputs: list, + version: str, + async_enabled: bool = False, + ) -> model_interface.TriggerOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.TriggerOrganizationModel, + request=model_interface.TriggerOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerOrganizationModel, + request=model_interface.TriggerOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_async_organization_model( + self, + model_name: str, + task_inputs: list, + version: str, + async_enabled: bool = False, + ) -> model_interface.TriggerAsyncOrganizationModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerAsyncOrganizationModel, + request=model_interface.TriggerAsyncOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerAsyncOrganizationModel, + request=model_interface.TriggerAsyncOrganizationModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_organization_latest_model( + self, + model_name: str, + task_inputs: list, + async_enabled: bool = False, + ) -> model_interface.TriggerOrganizationLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerOrganizationLatestModel, + request=model_interface.TriggerOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerOrganizationLatestModel, + request=model_interface.TriggerOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_async_organization_latest_model( + self, + model_name: str, + task_inputs: list, + async_enabled: bool = False, + ) -> model_interface.TriggerAsyncOrganizationLatestModelResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerAsyncOrganizationLatestModel, + request=model_interface.TriggerAsyncOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerAsyncOrganizationLatestModel, + request=model_interface.TriggerAsyncOrganizationLatestModelRequest( + name=f"{self.namespace}/models/{model_name}", + task_inputs=task_inputs, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_organization_model_binary_file_upload( + self, + model_name: str, + # task_input: list, + version: str, + async_enabled: bool = False, + ) -> model_interface.TriggerOrganizationModelBinaryFileUploadResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerOrganizationModelBinaryFileUpload, + request=model_interface.TriggerOrganizationModelBinaryFileUploadRequest( + name=f"{self.namespace}/models/{model_name}", + # task_input=task_input, + version=version, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[ + self.instance + ].client.TriggerOrganizationModelBinaryFileUpload, + request=model_interface.TriggerOrganizationModelBinaryFileUploadRequest( + name=f"{self.namespace}/models/{model_name}", + # task_input=task_input, + version=version, ), metadata=self.hosts[self.instance].metadata, ).send_sync() diff --git a/instill/clients/pipeline.py b/instill/clients/pipeline.py index 6b30f84..d83b2a6 100644 --- a/instill/clients/pipeline.py +++ b/instill/clients/pipeline.py @@ -6,6 +6,7 @@ # common import instill.protogen.common.healthcheck.v1beta.healthcheck_pb2 as healthcheck +import instill.protogen.vdp.pipeline.v1beta.component_definition_pb2 as component_definition # pipeline import instill.protogen.vdp.pipeline.v1beta.pipeline_pb2 as pipeline_interface @@ -15,6 +16,7 @@ from instill.clients.constant import DEFAULT_INSTANCE from instill.clients.instance import InstillInstance from instill.configuration import global_config +from instill.protogen.vdp.pipeline.v1beta import common_pb2 from instill.utils.error_handler import grpc_handler # from instill.utils.logger import Logger @@ -269,6 +271,8 @@ def clone_pipeline( self, name: str, target: str, + description: str, + sharing: common_pb2.Sharing, async_enabled: bool = False, ) -> pipeline_interface.CloneUserPipelineResponse: if async_enabled: @@ -277,6 +281,8 @@ def clone_pipeline( request=pipeline_interface.CloneUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -286,6 +292,8 @@ def clone_pipeline( request=pipeline_interface.CloneUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -295,6 +303,7 @@ def trigger_pipeline( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerUserPipelineResponse: if async_enabled: @@ -303,6 +312,7 @@ def trigger_pipeline( request=pipeline_interface.TriggerUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -312,6 +322,7 @@ def trigger_pipeline( request=pipeline_interface.TriggerUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -321,6 +332,7 @@ def trigger_async_pipeline( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerAsyncUserPipelineResponse: if async_enabled: @@ -329,6 +341,7 @@ def trigger_async_pipeline( request=pipeline_interface.TriggerAsyncUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -338,6 +351,7 @@ def trigger_async_pipeline( request=pipeline_interface.TriggerAsyncUserPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -368,7 +382,9 @@ def delete_pipeline( @grpc_handler def list_pipelines( self, - filer_str: str = "", + visibility: pipeline_interface.Pipeline.Visibility.ValueType, + order_by: str, + filter_str: str = "", next_page_token: str = "", total_size: int = 100, show_deleted: bool = False, @@ -384,11 +400,13 @@ def list_pipelines( return RequestFactory( method=method, request=pipeline_interface.ListPipelinesRequest( - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, view=pipeline_interface.Pipeline.VIEW_RECIPE, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -397,11 +415,13 @@ def list_pipelines( method=method, request=pipeline_interface.ListUserPipelinesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, view=pipeline_interface.Pipeline.VIEW_RECIPE, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -410,11 +430,13 @@ def list_pipelines( return RequestFactory( method=method, request=pipeline_interface.ListPipelinesRequest( - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, view=pipeline_interface.Pipeline.VIEW_RECIPE, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -423,11 +445,13 @@ def list_pipelines( method=method, request=pipeline_interface.ListUserPipelinesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, view=pipeline_interface.Pipeline.VIEW_RECIPE, + visibility=visibility, + order_by=order_by, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -586,7 +610,7 @@ def update_pipeline_release( @grpc_handler def list_pipeline_releases( self, - filer_str: str = "", + filter_str: str = "", next_page_token: str = "", total_size: int = 100, show_deleted: bool = False, @@ -597,7 +621,7 @@ def list_pipeline_releases( method=self.hosts[self.instance].async_client.ListUserPipelineReleases, request=pipeline_interface.ListUserPipelineReleasesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -610,7 +634,7 @@ def list_pipeline_releases( method=self.hosts[self.instance].client.ListUserPipelineReleases, request=pipeline_interface.ListUserPipelineReleasesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -672,6 +696,7 @@ def trigger_pipeline_release( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerUserPipelineReleaseResponse: if async_enabled: @@ -682,6 +707,7 @@ def trigger_pipeline_release( request=pipeline_interface.TriggerUserPipelineReleaseRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -691,6 +717,7 @@ def trigger_pipeline_release( request=pipeline_interface.TriggerUserPipelineReleaseRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -700,6 +727,7 @@ def trigger_async_pipeline_release( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerAsyncUserPipelineReleaseResponse: if async_enabled: @@ -710,6 +738,7 @@ def trigger_async_pipeline_release( request=pipeline_interface.TriggerAsyncUserPipelineReleaseRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -719,6 +748,7 @@ def trigger_async_pipeline_release( request=pipeline_interface.TriggerAsyncUserPipelineReleaseRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -891,7 +921,8 @@ def get_org_pipeline( return RequestFactory( method=self.hosts[self.instance].async_client.GetOrganizationPipeline, request=pipeline_interface.GetOrganizationPipelineRequest( - name=f"{self.target_namespace}/pipelines/{name}" + name=f"{self.target_namespace}/pipelines/{name}", + view=pipeline_interface.Pipeline.VIEW_RECIPE, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -899,7 +930,8 @@ def get_org_pipeline( return RequestFactory( method=self.hosts[self.instance].client.GetOrganizationPipeline, request=pipeline_interface.GetOrganizationPipelineRequest( - name=f"{self.target_namespace}/pipelines/{name}" + name=f"{self.target_namespace}/pipelines/{name}", + view=pipeline_interface.Pipeline.VIEW_RECIPE, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -990,6 +1022,8 @@ def clone_org_pipeline( self, name: str, target: str, + description: str, + sharing: common_pb2.Sharing, async_enabled: bool = False, ) -> pipeline_interface.CloneOrganizationPipelineResponse: if async_enabled: @@ -998,6 +1032,8 @@ def clone_org_pipeline( request=pipeline_interface.CloneOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -1007,6 +1043,8 @@ def clone_org_pipeline( request=pipeline_interface.CloneOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -1016,6 +1054,7 @@ def trigger_org_pipeline( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerOrganizationPipelineResponse: if async_enabled: @@ -1026,6 +1065,7 @@ def trigger_org_pipeline( request=pipeline_interface.TriggerOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -1035,6 +1075,7 @@ def trigger_org_pipeline( request=pipeline_interface.TriggerOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -1044,6 +1085,7 @@ def trigger_org_async_pipeline( self, name: str, inputs: list, + data: list, async_enabled: bool = False, ) -> pipeline_interface.TriggerAsyncOrganizationPipelineResponse: if async_enabled: @@ -1054,6 +1096,7 @@ def trigger_org_async_pipeline( request=pipeline_interface.TriggerAsyncOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_async() @@ -1063,6 +1106,7 @@ def trigger_org_async_pipeline( request=pipeline_interface.TriggerAsyncOrganizationPipelineRequest( name=f"{self.target_namespace}/pipelines/{name}", inputs=inputs, + data=data, ), metadata=self.hosts[self.instance].metadata, ).send_sync() @@ -1095,7 +1139,9 @@ def delete_org_pipeline( @grpc_handler def list_org_pipelines( self, - filer_str: str = "", + visibility: pipeline_interface.Pipeline.Visibility.ValueType, + order_by: str, + filter_str: str = "", next_page_token: str = "", total_size: int = 100, show_deleted: bool = False, @@ -1105,8 +1151,10 @@ def list_org_pipelines( return RequestFactory( method=self.hosts[self.instance].async_client.ListOrganizationPipelines, request=pipeline_interface.ListOrganizationPipelinesRequest( + visibility=visibility, + order_by=order_by, parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -1117,8 +1165,10 @@ def list_org_pipelines( return RequestFactory( method=self.hosts[self.instance].client.ListOrganizationPipelines, request=pipeline_interface.ListOrganizationPipelinesRequest( + visibility=visibility, + order_by=order_by, parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -1266,7 +1316,7 @@ def update_org_pipeline_release( @grpc_handler def list_org_pipeline_releases( self, - filer_str: str = "", + filter_str: str = "", next_page_token: str = "", total_size: int = 100, show_deleted: bool = False, @@ -1279,7 +1329,7 @@ def list_org_pipeline_releases( ].async_client.ListOrganizationPipelineReleases, request=pipeline_interface.ListOrganizationPipelineReleasesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -1292,7 +1342,7 @@ def list_org_pipeline_releases( method=self.hosts[self.instance].client.ListOrganizationPipelineReleases, request=pipeline_interface.ListOrganizationPipelineReleasesRequest( parent=self.target_namespace, - filter=filer_str, + filter=filter_str, page_size=total_size, page_token=next_page_token, show_deleted=show_deleted, @@ -1540,3 +1590,315 @@ def list_org_secrets( ), metadata=self.hosts[self.instance].metadata, ).send_sync() + + @grpc_handler + def get_hub_stats( + self, + async_enabled: bool = False, + ) -> pipeline_interface.GetHubStatsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetHubStats, + request=pipeline_interface.GetHubStatsRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetHubStats, + request=pipeline_interface.GetHubStatsRequest(), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def clone_pipeline_release( + self, + name: str, + target: str, + description: str, + sharing: common_pb2.Sharing, + async_enabled: bool = False, + ) -> pipeline_interface.CloneUserPipelineReleaseResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.CloneUserPipelineRelease, + request=pipeline_interface.CloneUserPipelineReleaseRequest( + name=f"{self.target_namespace}/pipelines/{name}", + target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.CloneUserPipelineRelease, + request=pipeline_interface.CloneUserPipelineReleaseRequest( + name=f"{self.target_namespace}/pipelines/{name}", + target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_pipeline_with_stream( + self, + name: str, + inputs: list, + data: list, + async_enabled: bool = False, + ) -> pipeline_interface.TriggerUserPipelineWithStreamResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerUserPipelineWithStream, + request=pipeline_interface.TriggerUserPipelineWithStreamRequest( + name=f"{self.target_namespace}/pipelines/{name}", + inputs=inputs, + data=data, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerUserPipelineWithStream, + request=pipeline_interface.TriggerUserPipelineWithStreamRequest( + name=f"{self.target_namespace}/pipelines/{name}", + inputs=inputs, + data=data, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def clone_organization_pipeline_release( + self, + name: str, + target: str, + description: str, + sharing: common_pb2.Sharing, + async_enabled: bool = False, + ) -> pipeline_interface.CloneOrganizationPipelineReleaseResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.CloneOrganizationPipelineRelease, + request=pipeline_interface.CloneOrganizationPipelineReleaseRequest( + name=f"{self.target_namespace}/pipelines/{name}", + target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.CloneOrganizationPipelineRelease, + request=pipeline_interface.CloneOrganizationPipelineReleaseRequest( + name=f"{self.target_namespace}/pipelines/{name}", + target=f"{self.target_namespace}/pipelines/{target}", + description=description, + sharing=sharing, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def trigger_organization_pipeline_stream( + self, + name: str, + inputs: list, + data: list, + async_enabled: bool = False, + ) -> pipeline_interface.TriggerOrganizationPipelineStreamResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[ + self.instance + ].async_client.TriggerOrganizationPipelineStream, + request=pipeline_interface.TriggerOrganizationPipelineStreamRequest( + name=f"{self.target_namespace}/pipelines/{name}", + inputs=inputs, + data=data, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.TriggerOrganizationPipelineStream, + request=pipeline_interface.TriggerOrganizationPipelineStreamRequest( + name=f"{self.target_namespace}/pipelines/{name}", + inputs=inputs, + data=data, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_connector_definitions( + self, + total_size: int = 100, + next_page_token: str = "", + filter_str: str = "", + async_enabled: bool = False, + ) -> component_definition.ListConnectorDefinitionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListConnectorDefinitions, + request=component_definition.ListConnectorDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListConnectorDefinitions, + request=component_definition.ListConnectorDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_connector_definition( + self, + name: str, + async_enabled: bool = False, + ) -> component_definition.GetConnectorDefinitionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetConnectorDefinition, + request=component_definition.GetConnectorDefinitionRequest( + name=f"{self.target_namespace}/pipelines/{name}", + view=component_definition.ComponentDefinition.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetConnectorDefinition, + request=component_definition.GetConnectorDefinitionRequest( + name=f"{self.target_namespace}/pipelines/{name}", + view=component_definition.ComponentDefinition.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_operator_definitions( + self, + total_size: int = 100, + next_page_token: str = "", + filter_str: str = "", + async_enabled: bool = False, + ) -> component_definition.ListOperatorDefinitionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListOperatorDefinitions, + request=component_definition.ListOperatorDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListOperatorDefinitions, + request=component_definition.ListOperatorDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page_size=total_size, + page_token=next_page_token, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def list_component_definitions( + self, + page: int, + total_size: int = 100, + filter_str: str = "", + async_enabled: bool = False, + ) -> component_definition.ListComponentDefinitionsResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.ListComponentDefinitions, + request=component_definition.ListComponentDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page=page, + page_size=total_size, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.ListComponentDefinitions, + request=component_definition.ListComponentDefinitionsRequest( + view=component_definition.ComponentDefinition.VIEW_FULL, + page=page, + page_size=total_size, + filter=filter_str, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def get_operator_definition( + self, + name: str, + async_enabled: bool = False, + ) -> component_definition.GetOperatorDefinitionResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.GetOperatorDefinition, + request=component_definition.GetOperatorDefinitionRequest( + name=f"{self.target_namespace}/pipelines/{name}", + view=component_definition.ComponentDefinition.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.GetOperatorDefinition, + request=component_definition.GetOperatorDefinitionRequest( + name=f"{self.target_namespace}/pipelines/{name}", + view=component_definition.ComponentDefinition.VIEW_FULL, + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() + + @grpc_handler + def check_name( + self, + name: str, + async_enabled: bool = False, + ) -> common_pb2.CheckNameResponse: + if async_enabled: + return RequestFactory( + method=self.hosts[self.instance].async_client.CheckName, + request=common_pb2.CheckNameRequest( + name=f"{self.target_namespace}/pipelines/{name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_async() + + return RequestFactory( + method=self.hosts[self.instance].client.CheckName, + request=common_pb2.CheckNameRequest( + name=f"{self.target_namespace}/pipelines/{name}", + ), + metadata=self.hosts[self.instance].metadata, + ).send_sync() diff --git a/instill/protogen b/instill/protogen index a6ac070..88445e5 160000 --- a/instill/protogen +++ b/instill/protogen @@ -1 +1 @@ -Subproject commit a6ac0707e3f351e2d3db7e78a3041c7116cb58ae +Subproject commit 88445e57507f7e0da7ed435a744f1bd3efa41580 diff --git a/instill/resources/__init__.py b/instill/resources/__init__.py index 29ce245..2ddf9eb 100644 --- a/instill/resources/__init__.py +++ b/instill/resources/__init__.py @@ -1,3 +1,4 @@ +import instill.protogen.common.task.v1alpha.task_pb2 as task import instill.protogen.model.model.v1alpha.model_pb2 as model_pb import instill.protogen.model.model.v1alpha.task_classification_pb2 as task_classification import instill.protogen.model.model.v1alpha.task_detection_pb2 as task_detection