Beispiel #1
0
    def convert_tasks(self, mistral_wf_tasks, expr_converter, force=False):
        orquesta_wf_tasks = ruamel.yaml.comments.CommentedMap()
        for task_name, m_task_spec in six.iteritems(mistral_wf_tasks):
            o_task_spec = ruamel.yaml.comments.CommentedMap()
            if force:
                for attr in TASK_UNSUPPORTED_ATTRIBUTES:
                    val = m_task_spec.get(attr)
                    if val:
                        o_task_spec[attr] = val
            else:
                for attr in TASK_UNSUPPORTED_ATTRIBUTES:
                    if attr in m_task_spec:
                        raise NotImplementedError(
                            ("Task '{}' contains an attribute '{}'"
                             " that is not supported in orquesta.").format(
                                 task_name, attr))

            if m_task_spec.get('action'):
                o_task_spec['action'] = m_task_spec['action']

            if m_task_spec.get('join'):
                o_task_spec['join'] = m_task_spec['join']

            if m_task_spec.get('input'):
                o_task_spec['input'] = ExpressionConverter.convert_dict(
                    m_task_spec['input'])

            o_task_transitions = self.convert_task_transitions(
                m_task_spec, expr_converter)
            o_task_spec.update(o_task_transitions)

            orquesta_wf_tasks[task_utils.translate_task_name(
                task_name)] = o_task_spec

        return orquesta_wf_tasks
Beispiel #2
0
 def normalize_transition_task_names(self, o_task_spec):
     for i, transition in enumerate(o_task_spec['next']):
         if 'do' in o_task_spec['next'][i]:
             new_dos = [
                 task_utils.translate_task_name(tname)
                 for tname in transition['do']
             ]
             o_task_spec['next'][i]['do'] = new_dos
     return o_task_spec
Beispiel #3
0
    def convert_tasks(self,
                      mistral_wf_tasks,
                      expr_converter,
                      wf_vars,
                      force=False):
        orquesta_wf_tasks = ruamel.yaml.comments.CommentedMap()
        for task_name, m_task_spec in six.iteritems(mistral_wf_tasks):
            # The variables in with-items expressions need to be accessed using
            # the `item(var)` syntax, not the usual `ctx().var` syntax, so we
            # use this list to keep track of which variables are within the
            # task context
            self.task_with_item_vars = []
            o_task_spec = ruamel.yaml.comments.CommentedMap()
            if force:
                for attr in TASK_UNSUPPORTED_ATTRIBUTES:
                    val = m_task_spec.get(attr)
                    if val:
                        o_task_spec[attr] = val
            else:
                for attr in TASK_UNSUPPORTED_ATTRIBUTES:
                    if attr in m_task_spec:
                        raise NotImplementedError(
                            ("Task '{}' contains an attribute '{}'"
                             " that is not supported in orquesta.").format(
                                 task_name, attr))

            if m_task_spec.get('with-items'):
                o_task_spec['with'] = self.convert_with_items(
                    m_task_spec, expr_converter)

            if m_task_spec.get('action'):
                o_task_spec['action'] = self.convert_action(
                    m_task_spec['action'])

            if m_task_spec.get('retry'):
                o_task_spec['retry'] = self.convert_retry(
                    m_task_spec['retry'], task_name)

            if m_task_spec.get('join'):
                o_task_spec['join'] = m_task_spec['join']

            if m_task_spec.get('input'):
                o_task_spec['input'] = self.convert_input(m_task_spec['input'])

            o_task_transitions = self.convert_task_transitions(
                task_name, m_task_spec, expr_converter, wf_vars)
            o_task_spec.update(o_task_transitions)

            orquesta_wf_tasks[task_utils.translate_task_name(
                task_name)] = o_task_spec

        return orquesta_wf_tasks
 def test_convert_dashes_to_underscores(self):
     self.assertEquals(task_utils.translate_task_name('foo-bar-baz'),
                       'foo_bar_baz')
     self.assertEquals(task_utils.translate_task_name('baz_foo'), 'baz_foo')