diff --git a/ucloud/client.py b/ucloud/client.py index 0ed2543..2fcdc0d 100644 --- a/ucloud/client.py +++ b/ucloud/client.py @@ -14,6 +14,13 @@ def pathx(self): return PathXClient(self._config, self.transport, self.middleware, self.logger) + def stepflow(self): + from ucloud.services.stepflow.client import StepFlowClient + + return StepFlowClient( + self._config, self.transport, self.middleware, self.logger + ) + def uaccount(self): from ucloud.services.uaccount.client import UAccountClient diff --git a/ucloud/core/client/_client.py b/ucloud/core/client/_client.py index fe2a1f5..d60405c 100644 --- a/ucloud/core/client/_client.py +++ b/ucloud/core/client/_client.py @@ -80,7 +80,7 @@ def _send(self, action, args, **options): resp = handler(resp) if int(resp.get("RetCode", -1)) != 0: raise exc.RetCodeException( - action=req.json.get("Action"), + action=req.data.get("Action"), code=int(resp.get("RetCode")), message=resp.get("Message"), ) diff --git a/ucloud/services/stepflow/__init__.py b/ucloud/services/stepflow/__init__.py new file mode 100644 index 0000000..4c48b5a --- /dev/null +++ b/ucloud/services/stepflow/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/ucloud/services/stepflow/client.py b/ucloud/services/stepflow/client.py new file mode 100644 index 0000000..3685949 --- /dev/null +++ b/ucloud/services/stepflow/client.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- + +""" Code is generated by ucloud-model, DO NOT EDIT IT. """ +from ucloud.core.client import Client +from ucloud.services.stepflow.schemas import apis + + +class StepFlowClient(Client): + def __init__(self, config, transport=None, middleware=None, logger=None): + super(StepFlowClient, self).__init__(config, transport, middleware, logger) + + def create_sf_workflow_from_template(self, req=None, **kwargs): + """ CreateSFWorkflowFromTemplate - 导入工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ + - **Namespace** (str) - (Required) 需要创建的工作流namespace + - **Workflow** (str) - (Required) 描述工作流定义的base64字符串 + - **WorkflowName** (str) - (Required) 需要创建的工作流名称 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 创建的工作流版本号 + + """ + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.CreateSFWorkflowFromTemplateRequestSchema().dumps(d) + kwargs["max_retries"] = 0 + resp = self.invoke("CreateSFWorkflowFromTemplate", d, **kwargs) + return apis.CreateSFWorkflowFromTemplateResponseSchema().loads(resp) + + def get_sf_workflow_template(self, req=None, **kwargs): + """ GetSFWorkflowTemplate - 导出工作流定义 + + **Request** + + - **ProjectId** (str) - (Config) 项目ID。不填写为默认项目,子帐号必须填写。 请参考 `GetProjectList接口 `_ + - **Region** (str) - (Config) 地域。 参见 `地域和可用区列表 `_ + - **WorkflowId** (str) - (Required) 被导出工作流的Id + - **WorkflowVersion** (int) - 被导出工作流的版本号。取值范围:WorkflowVersion >= 1;默认会获取发布版本对应的workflow;超过最大版本会返回错误 + + **Response** + + - **Message** (str) - 返回消息 + - **Version** (int) - 导出工作流的版本号 + - **Workflow** (dict) - 见 **WorkflowTemplate** 模型定义 + - **WorkflowId** (str) - 导出工作流的Id + + **Response Model** + + **Param** + + - **Name** (str) - 参数名称 + - **Type** (str) - 参数类型 + - **Value** (str) - 参数值 + + **ActivityTemplate** + + - **Input** (dict) - Activity的输入 + - **Name** (str) - Activity的名字 + - **Next** (str) - 下一个Activity的名字 + - **Output** (list) - Activity的输出,详见Param + - **RetryTimes** (str) - Activity的重试次数 + - **Timeout** (str) - Activity的超时时间 + - **Type** (str) - Activity的类型 + + **WorkflowTemplate** + + - **Activites** (list) - 见 **ActivityTemplate** 模型定义 + - **Input** (list) - 见 **Param** 模型定义 + - **Output** (list) - 见 **Param** 模型定义 + + """ + d = {"ProjectId": self.config.project_id, "Region": self.config.region} + req and d.update(req) + d = apis.GetSFWorkflowTemplateRequestSchema().dumps(d) + resp = self.invoke("GetSFWorkflowTemplate", d, **kwargs) + return apis.GetSFWorkflowTemplateResponseSchema().loads(resp) diff --git a/ucloud/services/stepflow/schemas/__init__.py b/ucloud/services/stepflow/schemas/__init__.py new file mode 100644 index 0000000..4c48b5a --- /dev/null +++ b/ucloud/services/stepflow/schemas/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/ucloud/services/stepflow/schemas/apis.py b/ucloud/services/stepflow/schemas/apis.py new file mode 100644 index 0000000..9fa5d40 --- /dev/null +++ b/ucloud/services/stepflow/schemas/apis.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- + +""" Code is generated by ucloud-model, DO NOT EDIT IT. """ +from ucloud.core.typesystem import schema, fields +from ucloud.services.stepflow.schemas import models + +""" StepFlow API Schema +""" +""" +API: CreateSFWorkflowFromTemplate + +导入工作流定义 +""" + + +class CreateSFWorkflowFromTemplateRequestSchema(schema.RequestSchema): + """ CreateSFWorkflowFromTemplate - 导入工作流定义 + """ + + fields = { + "Namespace": fields.Str(required=True, dump_to="Namespace"), + "ProjectId": fields.Str(required=False, dump_to="ProjectId"), + "Region": fields.Str(required=True, dump_to="Region"), + "Workflow": fields.Base64(required=True, dump_to="Workflow"), + "WorkflowName": fields.Str(required=True, dump_to="WorkflowName"), + } + + +class CreateSFWorkflowFromTemplateResponseSchema(schema.ResponseSchema): + """ CreateSFWorkflowFromTemplate - 导入工作流定义 + """ + + fields = { + "Message": fields.Str(required=True, load_from="Message"), + "Version": fields.Int(required=True, load_from="Version"), + } + + +""" +API: GetSFWorkflowTemplate + +导出工作流定义 +""" + + +class GetSFWorkflowTemplateRequestSchema(schema.RequestSchema): + """ GetSFWorkflowTemplate - 导出工作流定义 + """ + + fields = { + "ProjectId": fields.Str(required=False, dump_to="ProjectId"), + "Region": fields.Str(required=True, dump_to="Region"), + "WorkflowId": fields.Str(required=True, dump_to="WorkflowId"), + "WorkflowVersion": fields.Int(required=False, dump_to="WorkflowVersion"), + } + + +class GetSFWorkflowTemplateResponseSchema(schema.ResponseSchema): + """ GetSFWorkflowTemplate - 导出工作流定义 + """ + + fields = { + "Message": fields.Str(required=False, load_from="Message"), + "Version": fields.Int(required=True, load_from="Version"), + "Workflow": models.WorkflowTemplateSchema(), + "WorkflowId": fields.Str(required=True, load_from="WorkflowId"), + } diff --git a/ucloud/services/stepflow/schemas/models.py b/ucloud/services/stepflow/schemas/models.py new file mode 100644 index 0000000..b6d5122 --- /dev/null +++ b/ucloud/services/stepflow/schemas/models.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- + +""" Code is generated by ucloud-model, DO NOT EDIT IT. """ +from ucloud.core.typesystem import schema, fields + + +class ParamSchema(schema.ResponseSchema): + """ Param - 工作流参数 + """ + + fields = { + "Name": fields.Str(required=False, load_from="Name"), + "Type": fields.Str(required=False, load_from="Type"), + "Value": fields.Str(required=False, load_from="Value"), + } + + +class ActivityTemplateSchema(schema.ResponseSchema): + """ ActivityTemplate - 工作流的Activity定义 + """ + + fields = { + "Input": fields.Str(), + "Name": fields.Str(required=False, load_from="Name"), + "Next": fields.Str(required=False, load_from="Next"), + "Output": fields.List(fields.Str()), + "RetryTimes": fields.Str(required=False, load_from="RetryTimes"), + "Timeout": fields.Str(required=False, load_from="Timeout"), + "Type": fields.Str(required=False, load_from="Type"), + } + + +class WorkflowTemplateSchema(schema.ResponseSchema): + """ WorkflowTemplate - Workflow对象定义 + """ + + fields = { + "Activites": fields.List(ActivityTemplateSchema()), + "Input": fields.List(ParamSchema()), + "Output": fields.List(ParamSchema()), + } diff --git a/ucloud/version.py b/ucloud/version.py index 5045509..e9a17d9 100644 --- a/ucloud/version.py +++ b/ucloud/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -version = "0.2.0" +version = "0.3.0"