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
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
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
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
def get_config(self): proto = workflow_definition_pb2.WorkflowDefinition() proto.ParseFromString(self.config) return proto
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