示例#1
0
def dict_to_workflow_definition(config):
    try:
        template_proto = ParseDict(
            config, workflow_definition_pb2.WorkflowDefinition())
        return template_proto
    except ParseError as e:
        raise InvalidArgumentException(details=str(e)) from e
示例#2
0
文件: apis.py 项目: zhenv5/fedlearner
 def post(self):
     parser = reqparse.RequestParser()
     parser.add_argument('name', required=True, help='name is empty')
     parser.add_argument('comment')
     parser.add_argument('config',
                         type=dict,
                         required=True,
                         help='config is empty')
     data = parser.parse_args()
     name = data['name']
     comment = data['comment']
     config = data['config']
     if Template.query.filter_by(name=name).first() is not None:
         abort(HTTPStatus.CONFLICT, msg='template %s already exists' % name)
     # form to proto buffer
     template_proto = workflow_definition_pb2.WorkflowDefinition()
     try:
         template_proto = ParseDict(config, template_proto)
     except ParseError:
         abort(HTTPStatus.BAD_REQUEST, msg='Invalid template')
     template = Template(name=name,
                         comment=comment,
                         group_alias=template_proto.group_alias)
     template.set_config(template_proto)
     db.session.add(template)
     db.session.commit()
     logging.info('Inserted a template to db')
     return {'template': template.to_dict()}, HTTPStatus.OK
示例#3
0
def dict_to_workflow_definition(config):
    try:
        template_proto = ParseDict(
            config, workflow_definition_pb2.WorkflowDefinition())
        for variable in template_proto.variables:
            _classify_variable(variable)
        for job in template_proto.job_definitions:
            for variable in job.variables:
                _classify_variable(variable)
    except ParseError as e:
        raise InvalidArgumentException(details={'config': str(e)})
    return template_proto
示例#4
0
    def _filter_workflow(self, workflow, modes):
        # filter peer-readable and peer-writable variables
        if workflow is None:
            return None

        new_wf = workflow_definition_pb2.WorkflowDefinition(
            group_alias=workflow.group_alias, is_left=workflow.is_left)
        for var in workflow.variables:
            if var.access_mode in modes:
                new_wf.variables.append(var)
        for job_def in workflow.job_definitions:
            # keep yaml template private
            new_jd = workflow_definition_pb2.JobDefinition(
                name=job_def.name,
                job_type=job_def.job_type,
                is_federated=job_def.is_federated,
                dependencies=job_def.dependencies)
            for var in job_def.variables:
                if var.access_mode in modes:
                    new_jd.variables.append(var)
            new_wf.job_definitions.append(new_jd)
        return new_wf
示例#5
0
 def get_config(self):
     proto = workflow_definition_pb2.WorkflowDefinition()
     proto.ParseFromString(self.config)
     return proto
示例#6
0
 def get_fork_proposal_config(self):
     if self.fork_proposal_config is not None:
         proto = workflow_definition_pb2.WorkflowDefinition()
         proto.ParseFromString(self.fork_proposal_config)
         return proto
     return None