Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions instill_sdk/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@

sys.path.append(os.path.join(os.path.dirname(__file__), "protogen"))


try:
__version__ = version("instill-python-sdk")
__version__ = version("instill-sdk")
except PackageNotFoundError:
__version__ = "(local)"

Expand Down
2 changes: 1 addition & 1 deletion instill_sdk/clients/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from instill_sdk.clients.client import InstillClient
from instill_sdk.clients.client import InstillClient, get_client
from instill_sdk.clients.connector import ConnectorClient
from instill_sdk.clients.mgmt import MgmtClient
from instill_sdk.clients.model import ModelClient
Expand Down
10 changes: 10 additions & 0 deletions instill_sdk/clients/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,16 @@ def instance(self):
def instance(self):
pass

@property
@abstractmethod
def metadata(self):
pass

@metadata.setter
@abstractmethod
def metadata(self):
pass

@abstractmethod
def liveness(self):
raise NotImplementedError
Expand Down
43 changes: 33 additions & 10 deletions instill_sdk/clients/connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,17 @@ def __init__(self, namespace: str) -> None:
self.hosts = defaultdict(dict)
self.instance = "default"
self.namespace = namespace
self.metadata: str = ""

if global_config.hosts is not None:
for instance in global_config.hosts.keys():
if global_config.hosts[instance].token is None:
if instance == "default":
self.metadata = (
(
"authorization",
f"Bearer {global_config.hosts[instance].token}",
),
)
channel = grpc.insecure_channel(global_config.hosts[instance].url)
else:
ssl_creds = grpc.ssl_channel_credentials()
Expand Down Expand Up @@ -59,6 +66,14 @@ def instance(self):
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) -> connector_interface.LivenessResponse:
return self.hosts[self.instance]["client"].Liveness(
request=connector_interface.LivenessRequest()
Expand Down Expand Up @@ -92,7 +107,8 @@ def create_connector(
resp = self.hosts[self.instance]["client"].CreateUserConnectorResource(
request=connector_interface.CreateUserConnectorResourceRequest(
connector_resource=connector, parent=self.namespace
)
),
metadata=self.metadata,
)

return resp.connector_resource
Expand All @@ -104,7 +120,8 @@ def get_connector(self, name: str) -> connector_interface.ConnectorResource:
.GetUserConnectorResource(
request=connector_interface.GetUserConnectorResourceRequest(
name=f"{self.namespace}/connector-resources/{name}"
)
),
metadata=self.metadata,
)
.connector_resource
)
Expand All @@ -116,7 +133,8 @@ def test_connector(self, name: str) -> connector_interface.ConnectorResource.Sta
.TestUserConnectorResource(
request=connector_interface.TestUserConnectorResourceRequest(
name=f"{self.namespace}/connector-resources/{name}"
)
),
metadata=self.metadata,
)
.state
)
Expand All @@ -128,7 +146,8 @@ def execute_connector(self, name: str, inputs: list) -> list:
.ExecuteUserConnectorResource(
request=connector_interface.ExecuteUserConnectorResourceRequest(
name=f"{self.namespace}/connector-resources/{name}", inputs=inputs
)
),
metadata=self.metadata,
)
.outputs
)
Expand All @@ -140,7 +159,8 @@ def watch_connector(self, name: str) -> connector_interface.ConnectorResource.St
.WatchUserConnectorResource(
request=connector_interface.WatchUserConnectorResourceRequest(
name=f"{self.namespace}/connector-resources/{name}"
)
),
metadata=self.metadata,
)
.state
)
Expand All @@ -150,20 +170,23 @@ def delete_connector(self, name: str):
self.hosts[self.instance]["client"].DeleteUserConnectorResource(
request=connector_interface.DeleteUserConnectorResourceRequest(
name=f"{self.namespace}/connector-resources/{name}"
)
),
metadata=self.metadata,
)

@grpc_handler
def list_connectors(self, public=False) -> Tuple[list, str, int]:
if not public:
resp = self.hosts[self.instance]["client"].ListUserConnectorResources(
connector_interface.ListUserConnectorResourcesRequest(
request=connector_interface.ListUserConnectorResourcesRequest(
parent=self.namespace
)
),
metadata=self.metadata,
)
else:
resp = self.hosts[self.instance]["client"].ListConnectorResources(
connector_interface.ListConnectorResourcesRequest()
request=connector_interface.ListConnectorResourcesRequest(),
metadata=(self.metadata,),
)

return resp.connector_resources, resp.next_page_token, resp.total_size
60 changes: 51 additions & 9 deletions instill_sdk/clients/mgmt.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,18 @@
class MgmtClient(Client):
def __init__(self) -> None:
self.hosts = defaultdict(dict)
self.instance = "default"
self.instance: str = "default"
self.metadata: str = ""

if global_config.hosts is not None:
for instance in global_config.hosts.keys():
if global_config.hosts[instance].token is None:
if instance == "default":
self.metadata = (
(
"authorization",
f"Bearer {global_config.hosts[instance].token}",
),
)
channel = grpc.insecure_channel(global_config.hosts[instance].url)
else:
ssl_creds = grpc.ssl_channel_credentials()
Expand Down Expand Up @@ -54,6 +61,14 @@ def instance(self):
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) -> mgmt_interface.LivenessResponse:
return self.hosts[self.instance]["client"].Liveness(
request=mgmt_interface.LivenessRequest()
Expand All @@ -73,10 +88,31 @@ def is_serving(self) -> bool:
except Exception:
return False

@grpc_handler
def login(self, username="admin", password="password") -> str:
return (
self.hosts[self.instance]["client"]
.AuthLogin(
request=mgmt_interface.AuthLoginRequest(
username=username, password=password
)
)
.access_token
)

@grpc_handler
def get_token(self, name: str) -> mgmt_interface.ApiToken:
response = self.hosts[self.instance]["client"].GetToken(
request=mgmt_interface.GetTokenRequest(name=name),
metadata=self.metadata,
)
return response.token

@grpc_handler
def get_user(self) -> mgmt_interface.User:
response = self.hosts[self.instance]["client"].QueryAuthenticatedUser(
request=mgmt_interface.QueryAuthenticatedUserRequest()
request=mgmt_interface.QueryAuthenticatedUserRequest(),
metadata=self.metadata,
)
return response.user

Expand All @@ -85,45 +121,51 @@ def list_pipeline_trigger_records(
self,
) -> metric_interface.ListPipelineTriggerRecordsResponse:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListPipelineTriggerChartRecordsRequest()
request=metric_interface.ListPipelineTriggerChartRecordsRequest(),
metadata=self.metadata,
)

@grpc_handler
def list_pipeline_trigger_table_records(
self,
) -> metric_interface.ListPipelineTriggerTableRecordsRequest:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListPipelineTriggerTableRecordsResponse()
request=metric_interface.ListPipelineTriggerTableRecordsResponse(),
metadata=self.metadata,
)

@grpc_handler
def list_pipeline_trigger_chart_records(
self,
) -> metric_interface.ListPipelineTriggerChartRecordsResponse:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListPipelineTriggerChartRecordsRequest()
request=metric_interface.ListPipelineTriggerChartRecordsRequest(),
metadata=self.metadata,
)

@grpc_handler
def list_connector_execute_records(
self,
) -> metric_interface.ListConnectorExecuteRecordsResponse:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListConnectorExecuteRecordsRequest()
request=metric_interface.ListConnectorExecuteRecordsRequest(),
metadata=self.metadata,
)

@grpc_handler
def list_connector_execute_table_records(
self,
) -> metric_interface.ListConnectorExecuteTableRecordsResponse:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListConnectorExecuteTableRecordsRequest()
request=metric_interface.ListConnectorExecuteTableRecordsRequest(),
metadata=self.metadata,
)

@grpc_handler
def list_connector_execute_chart_records(
self,
) -> metric_interface.ListConnectorExecuteChartRecordsResponse:
return self.hosts[self.instance]["client"].ListPipelineTriggerRecords(
request=metric_interface.ListConnectorExecuteChartRecordsRequest()
request=metric_interface.ListConnectorExecuteChartRecordsRequest(),
metadata=self.metadata,
)
Loading