Signed-off-by: JoshuaL3000 <joshua.jian.ern.liew@intel.com> Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
71 lines
2.1 KiB
Python
71 lines
2.1 KiB
Python
# Copyright (C) 2024 Intel Corporation
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
import json
|
|
from typing import Dict
|
|
|
|
from tools.components.component import Component
|
|
|
|
|
|
class Workflow(Component):
|
|
"""Class for handling EasyData workflow operations.
|
|
|
|
Attributes:
|
|
workflow_id: workflow id
|
|
wf_key: workflow key. Generated and stored when starting a servable workflow.
|
|
"""
|
|
|
|
def __init__(self, request_handler, workflow_id=None, workflow_key=None):
|
|
super().__init__(request_handler)
|
|
self.workflow_id = workflow_id
|
|
self.wf_key = workflow_key
|
|
|
|
def start(self, params: Dict[str, str]) -> Dict[str, str]:
|
|
"""
|
|
``POST https://SDK_BASE_URL/serving/servable_workflows/{workflow_id}/start``
|
|
|
|
Starts a workflow instance with the workflow_id and parameters provided.
|
|
Returns a workflow key used to track the workflow instance.
|
|
|
|
:param dict params: Workflow parameters used to start workflow.
|
|
|
|
:returns: WorkflowKey
|
|
|
|
:rtype: string
|
|
"""
|
|
data = json.dumps({"params": params})
|
|
endpoint = f"serving/servable_workflows/{self.workflow_id}/start"
|
|
self.wf_key = self._make_request(endpoint, "POST", data)["wf_key"]
|
|
if self.wf_key:
|
|
return f"Workflow successfully started. The workflow key is {self.wf_key}."
|
|
else:
|
|
return "Workflow failed to start"
|
|
|
|
def get_status(self) -> Dict[str, str]:
|
|
"""
|
|
``GET https://SDK_BASE_URL/serving/serving_workflows/{workflow_key}/status``
|
|
|
|
Gets the workflow status.
|
|
|
|
:returns: WorkflowStatus
|
|
|
|
:rtype: string
|
|
"""
|
|
|
|
endpoint = f"serving/serving_workflows/{self.wf_key}/status"
|
|
return self._make_request(endpoint, "GET")
|
|
|
|
def result(self) -> list[Dict[str, str]]:
|
|
"""
|
|
``GET https://SDK_BASE_URL/serving/serving_workflows/{workflow_key}/results``
|
|
|
|
Gets the workflow output result.
|
|
|
|
:returns: WorkflowOutputData
|
|
|
|
:rtype: string
|
|
"""
|
|
|
|
endpoint = f"serving/serving_workflows/{self.wf_key}/results"
|
|
return self._make_request(endpoint, "GET")
|