Example #1
0
def update_workflows(definition,
                     scope='private',
                     identifier=None,
                     namespace='',
                     validate=True):
    LOG.debug("Updating workflows...")

    wf_list_spec = spec_parser.get_workflow_list_spec_from_yaml(
        definition, validate=services.is_validation_enabled(validate))

    wfs = wf_list_spec.get_workflows()

    if identifier and len(wfs) > 1:
        raise exc.InputException(
            "More than one workflows are not supported for "
            "update with identifier. [identifier: %s]" % identifier)

    db_wfs = []

    wfs_yaml = safe_yaml.load(definition) if len(wfs) != 1 else None

    with db_api.transaction():
        for wf_spec in wfs:
            if len(wfs) != 1:
                definition = _cut_wf_definition_from_all(
                    wfs_yaml, wf_spec.get_name())

            db_wfs.append(
                _update_workflow(wf_spec,
                                 definition,
                                 scope,
                                 namespace=namespace,
                                 identifier=identifier))

    return db_wfs
Example #2
0
def update_workbook_v2(definition,
                       namespace='',
                       scope='private',
                       validate=True):
    wb_spec = spec_parser.get_workbook_spec_from_yaml(
        definition, validate=services.is_validation_enabled(validate))

    values = _get_workbook_values(wb_spec, definition, scope, namespace)

    with db_api_v2.transaction():
        wb_db = db_api_v2.update_workbook(values['name'], values)

        _, db_wfs = _on_workbook_update(wb_db, wb_spec, namespace)

    return wb_db
Example #3
0
def create_workflows(definition,
                     scope='private',
                     is_system=False,
                     run_in_tx=True,
                     namespace='',
                     validate=True):
    LOG.debug("Creating workflows...")

    wf_list_spec = spec_parser.get_workflow_list_spec_from_yaml(
        definition, validate=services.is_validation_enabled(validate))

    db_wfs = []

    if run_in_tx:
        with db_api.transaction():
            _append_all_workflows(definition, is_system, scope, namespace,
                                  wf_list_spec, db_wfs)
    else:
        _append_all_workflows(definition, is_system, scope, namespace,
                              wf_list_spec, db_wfs)

    return db_wfs