

def is_valid(self):
    missing = (self.depends_on - set(self.context.keys()))
    if missing:
        raise exceptions.WorkflowValidationError(('Unable to complete the workflow. The values %s are required but not present.' % ', '.join(missing)))
    checked_steps = []
    if ('general_processes' in self.context):
        checked_steps = self.context['general_processes']
    enabled_services = set([])
    for process_name in checked_steps:
        enabled_services.add(str(process_name).split(':')[0])
    steps_valid = True
    for step in self.steps:
        process_name = str(getattr(step, 'process_name', None))
        if ((process_name not in enabled_services) and (not isinstance(step, GeneralConfig))):
            continue
        if (not step.action.is_valid()):
            steps_valid = False
            step.has_errors = True
    if (not steps_valid):
        return steps_valid
    return steps_valid.validate(self.context)

dataset/ETHPy150Open CiscoSystems/avos/openstack_dashboard/dashboards/project/data_processing/nodegroup_templates/workflows/create.py ConfigureNodegroupTemplate.is_valid/VarMisuse@203/298 `self`->`steps_valid`