+++ /dev/null
-##############################################################################\r
-# Copyright (c) 2018 Huawei Technologies Co.,Ltd. and others\r
-#\r
-# All rights reserved. This program and the accompanying materials\r
-# are made available under the terms of the Apache License, Version 2.0\r
-# which accompanies this distribution, and is available at\r
-# http://www.apache.org/licenses/LICENSE-2.0\r
-##############################################################################\r
-\r
-from conductor import conductor\r
-import json\r
-\r
-\r
-class WorkflowMgr(object):\r
- def __init__(self, serverAddr):\r
- self._serverAddr = serverAddr + '/api'\r
- self._metaDataClient = conductor.MetadataClient(self._serverAddr)\r
- self._workflowClient = conductor.WorkflowClient(self._serverAddr)\r
- self._tasksDefined = False\r
- self._workflowDefined = False\r
- self._workflowName = ""\r
-\r
- def setTaskDef(self, taskJson):\r
- jsonObj = json.loads(taskJson)\r
- print "define tasks:\n", taskJson\r
- for (k, v) in jsonObj.items():\r
- self._metaDataClient.registerTaskDefs(v)\r
- self._tasksDefined = True\r
-\r
- def setWorkflowDef(self, workflowJson):\r
- jsonObj = json.loads(workflowJson)\r
- print "define workflow:\n", workflowJson\r
- try:\r
- self._metaDataClient.createWorkflowDef(jsonObj)\r
- except Exception as e:\r
- print e\r
- self._workflowName = jsonObj['name']\r
- self._workflowDefined = True\r
-\r
- def startWorkflow(self, param={}):\r
- workflowId = ''\r
- if not self._tasksDefined:\r
- print "error: please define the task at first\n"\r
- elif not self._workflowDefined:\r
- print "error: please define the workflow at first\n"\r
- else:\r
- workflowId = self._workflowClient.startWorkflow(\r
- self._workflowName, param)\r
- return workflowId\r
-\r
- def setTaskDefFromFile(self, taskFilePath):\r
- with open(taskFilePath, 'r') as f:\r
- self.setTaskDef(f.read())\r
-\r
- def setWorkflowFromFile(self, workflowFilePath):\r
- with open(workflowFilePath, 'r') as f:\r
- self.setWorkflowDef(f.read())\r
-\r
-\r
-# test demo\r
-def main():\r
- serverAddr = "http://192.168.199.131:8080"\r
- wfMgr = WorkflowMgr(serverAddr)\r
- wfMgr.setTaskDefFromFile('mock_tasks.json')\r
- wfMgr.setWorkflowFromFile('mock_workflow.json')\r
- inputParam = {'input': 'fake'}\r
- wfMgr.startWorkflow(inputParam)\r
-\r
-\r
-if __name__ == "__main__":\r
- main()\r