Exemple #1
0
    def load_workflow_from_file(self,
                                path,
                                workflow_name,
                                name_override=None,
                                playbook_override=None):
        self.tree = et.ElementTree(file=path)
        playbook_name = playbook_override if playbook_override else os.path.splitext(
            os.path.basename(path))[0]
        for workflow in self.tree.iter(tag="workflow"):
            current_workflow_name = workflow.get('name')
            if current_workflow_name == workflow_name:
                if name_override:
                    workflow_name = name_override
                name = construct_workflow_name_key(playbook_name,
                                                   workflow_name)
                key = _WorkflowKey(playbook_name, workflow_name)
                self.workflows[key] = wf.Workflow(name=name,
                                                  workflowConfig=workflow,
                                                  parent_name=self.name,
                                                  filename=playbook_name)
                break
        else:
            return False

        self.addChildWorkflows()
        self.addWorkflowScheduledJobs()
        return True
Exemple #2
0
 def load_workflows_from_file(self,
                              path,
                              name_override=None,
                              playbook_override=None):
     """Loads multiple workloads from a file.
     
     Args:
         path (str): Path to the workflow.
         name_override (str, optional): Name that the workflow should be changed to. 
         playbook_override (str, optional): Name that the playbook should be changed to.
     """
     self.tree = cElementTree.ElementTree(file=path)
     playbook_name = playbook_override if playbook_override else os.path.splitext(
         os.path.basename(path))[0]
     for workflow in self.tree.iter(tag='workflow'):
         workflow_name = name_override if name_override else workflow.get(
             'name')
         name = construct_workflow_name_key(playbook_name, workflow_name)
         key = _WorkflowKey(playbook_name, workflow_name)
         self.workflows[key] = wf.Workflow(name=name,
                                           xml=workflow,
                                           parent_name=self.name,
                                           playbook_name=playbook_name)
         logger.info('Adding workflow {0} to controller'.format(name))
     self.add_child_workflows()
     self.add_workflow_scheduled_jobs()
Exemple #3
0
 def loadWorkflowsFromFile(self, path):
     self.tree = et.ElementTree(file=path)
     for workflow in self.tree.iter(tag="workflow"):
         name = workflow.get("name")
         self.workflows[name] = wf.Workflow(name=name,
                                            workflowConfig=workflow,
                                            parent_name=self.name)
     self.addChildWorkflows()
     self.addWorkflowScheduledJobs()
Exemple #4
0
 def __add_workflow(self, key, name, xml, playbook):
     try:
         self.workflows[key] = wf.Workflow(name=name,
                                           xml=xml,
                                           parent_name=self.name,
                                           playbook_name=playbook)
         logger.info('Adding workflow {0} to controller'.format(name))
     except (UnknownApp, UnknownAppAction, InvalidInput) as e:
         logger.error('Cannot load workflow {0}: Error: {1}'.format(
             key, str(e)))
Exemple #5
0
 def loadWorkflowsFromFile(self,
                           path,
                           name_override=None,
                           playbook_override=None):
     self.tree = et.ElementTree(file=path)
     playbook_name = playbook_override if playbook_override else os.path.splitext(
         os.path.basename(path))[0]
     for workflow in self.tree.iter(tag='workflow'):
         workflow_name = name_override if name_override else workflow.get(
             'name')
         name = construct_workflow_name_key(playbook_name, workflow_name)
         key = _WorkflowKey(playbook_name, workflow_name)
         self.workflows[key] = wf.Workflow(name=name,
                                           workflowConfig=workflow,
                                           parent_name=self.name,
                                           filename=playbook_name)
     self.addChildWorkflows()
     self.addWorkflowScheduledJobs()
Exemple #6
0
    def load_workflow_from_file(self,
                                path,
                                workflow_name,
                                name_override=None,
                                playbook_override=None):
        """Loads a workflow from a file.
        
        Args:
            path (str): Path to the workflow.
            workflow_name (str): Name of the workflow to load.
            name_override (str, optional): Name that the workflow should be changed to.
            playbook_override (str, optional): Name that the playbook should be changed to.
            
        Returns:
            True on success, False otherwise.
        """
        self.tree = cElementTree.ElementTree(file=path)
        playbook_name = playbook_override if playbook_override else os.path.splitext(
            os.path.basename(path))[0]
        for workflow in self.tree.iter(tag='workflow'):
            current_workflow_name = workflow.get('name')
            if current_workflow_name == workflow_name:
                if name_override:
                    workflow_name = name_override
                name = construct_workflow_name_key(playbook_name,
                                                   workflow_name)
                key = _WorkflowKey(playbook_name, workflow_name)
                self.workflows[key] = wf.Workflow(name=name,
                                                  xml=workflow,
                                                  parent_name=self.name,
                                                  playbook_name=playbook_name)
                logger.info('Adding workflow {0} to controller'.format(name))
                break
        else:
            logger.warning(
                'Workflow {0} not found in playbook {0}. Cannot load.'.format(
                    workflow_name, playbook_name))
            return False

        self.add_child_workflows()
        self.add_workflow_scheduled_jobs()
        return True