Esempio n. 1
0
    def __func():
        if 'workflows_path' in configuration:
            for playbook in running_context.controller.get_all_playbooks():
                try:
                    write_playbook_to_file(playbook)
                except (IOError, OSError):
                    current_app.logger.error(
                        'Could not commit old playbook {0} to file. '
                        'Losing uncommitted changes!'.format(playbook))
            running_context.controller.load_playbooks()
        if not _reset_token_durations(access_token_duration=configuration.get(
                'access_token_duration', None),
                                      refresh_token_duration=configuration.get(
                                          'refresh_token_duration', None)):
            return {'error': 'Invalid token durations.'}, BAD_REQUEST

        for config, config_value in configuration.items():
            if hasattr(core.config.paths, config):
                setattr(core.config.paths, config, config_value)
            elif hasattr(core.config.config, config):
                setattr(core.config.config, config, config_value)

        current_app.logger.info('Changed configuration')
        try:
            core.config.config.write_values_to_file()
            return __get_current_configuration(), SUCCESS
        except (IOError, OSError):
            current_app.logger.error(
                'Could not write changes to configuration to file')
            return {"error": 'Could not write to file.'}, IO_ERROR
Esempio n. 2
0
    def __func():
        if running_context.controller.is_playbook_registered(playbook_name):
            form = forms.CopyPlaybookForm(request.form)
            if form.playbook.data:
                new_playbook_name = form.playbook.data
            else:
                new_playbook_name = playbook_name + "_Copy"

            if running_context.controller.is_playbook_registered(
                    new_playbook_name):
                current_app.logger.error('Cannot copy playbook {0} to {1}. '
                                         'Name already exists'.format(
                                             playbook_name, new_playbook_name))
                return {
                    "error": 'Playbook already exists.'
                }, OBJECT_EXISTS_ERROR
            else:
                running_context.controller.copy_playbook(
                    playbook_name, new_playbook_name)
                write_playbook_to_file(new_playbook_name)
                current_app.logger.info('Copied playbook {0} to {1}'.format(
                    playbook_name, new_playbook_name))

            return {}, OBJECT_CREATED
        else:
            current_app.logger.error(
                'Could not copy playbook {0}. Playbook does not exist.'.format(
                    playbook_name))
            return {
                'error': 'Playbook does not exist.',
                'playbooks': running_context.controller.get_all_workflows()
            }, OBJECT_DNE_ERROR
Esempio n. 3
0
 def __func():
     if running_context.controller.is_workflow_registered(
             playbook_name, workflow_name):
         workflow = running_context.controller.get_workflow(
             playbook_name, workflow_name)
         workflow.from_cytoscape_data(
             json.loads(request.get_json()['cytoscape']))
         if 'start' in request.get_json():
             workflow.start_step = request.get_json()['start']
         try:
             write_playbook_to_file(playbook_name)
             current_app.logger.info('Saved workflow {0}-{1}'.format(
                 playbook_name, workflow_name))
             return {"steps": workflow.get_cytoscape_data()}, SUCCESS
         except (OSError, IOError) as e:
             current_app.logger.info(
                 'Cannot save workflow {0}-{1} to file'.format(
                     playbook_name, workflow_name))
             return {
                 "error": "Error saving: {0}".format(e.message),
                 "steps": workflow.get_cytoscape_data()
             }, IO_ERROR
     else:
         current_app.logger.info(
             'Cannot save workflow {0}-{1}. Workflow not in controller'.
             format(playbook_name, workflow_name))
         return {
             'error': 'Playbook or workflow does not exist.'
         }, OBJECT_DNE_ERROR
Esempio n. 4
0
def save_workflow(playbook_name, workflow_name):
    if running_context.controller.is_workflow_registered(
            playbook_name, workflow_name):
        if request.get_json():
            if 'cytoscape' in request.get_json():
                workflow = running_context.controller.get_workflow(
                    playbook_name, workflow_name)
                workflow.from_cytoscape_data(
                    json.loads(request.get_json()['cytoscape']))
                try:
                    write_playbook_to_file(playbook_name)
                    return json.dumps({
                        "status": "success",
                        "steps": workflow.get_cytoscape_data()
                    })
                except (OSError, IOError) as e:
                    return json.dumps({
                        "status":
                        "Error saving: {0}".format(e.message),
                        "steps":
                        workflow.get_cytoscape_data()
                    })
            else:
                return json.dumps({"status": "error: malformed json"})
        else:
            return json.dumps({"status": "error: no information received"})
    else:
        return json.dumps({'status': 'error: workflow name is not valid'})
Esempio n. 5
0
 def __func():
     if current_user.is_authenticated:
         form = forms.SettingsForm(request.form)
         for key, value in form.data.items():
             if hasattr(core.config.paths, key):
                 if key == 'workflows_path' and key != core.config.paths.workflows_path:
                     for playbook in running_context.controller.get_all_playbooks(
                     ):
                         try:
                             write_playbook_to_file(playbook)
                         except (IOError, OSError):
                             current_app.logger.error(
                                 'Could not commit old playbooks to file. '
                                 'Losing uncommitted changes!')
                     core.config.paths.workflows_path = value
                     running_context.controller.workflows = {}
                     running_context.controller.load_all_workflows_from_directory(
                     )
                 else:
                     setattr(core.config.paths, key, value)
             else:
                 setattr(core.config.config, key, value)
         current_app.logger.info('Changed configuration')
         try:
             core.config.config.write_values_to_file()
             return SUCCESS
         except (IOError, OSError):
             current_app.logger.error(
                 'Could not write changes to configuration to file')
             return {'error': 'Could not write to file.'}, IO_ERROR
     else:
         current_app.logger.warning(
             'Configuration attempted to be set by non authenticated user')
         return {"error": 'User is not authenticated.'}, UNAUTHORIZED_ERROR
Esempio n. 6
0
    def __func():
        if running_context.controller.is_workflow_registered(
                playbook_name, workflow_name):
            running_context.controller.remove_workflow(playbook_name,
                                                       workflow_name)

            if len(
                    running_context.controller.get_all_workflows_by_playbook(
                        playbook_name)) == 0:
                current_app.logger.debug(
                    'Removing playbook {0} since it is empty.'.format(
                        playbook_name))
                playbook_filename = os.path.join(
                    core.config.paths.workflows_path,
                    '{0}.playbook'.format(playbook_name))
                try:
                    os.remove(playbook_filename)
                except OSError:
                    current_app.logger.warning(
                        'Cannot remove playbook {0}. '
                        'The playbook does not exist.'.format(playbook_name))

            else:
                write_playbook_to_file(playbook_name)

            current_app.logger.info('Deleted workflow {0}-{1}'.format(
                playbook_name, workflow_name))
            return {}, SUCCESS
        else:
            current_app.logger.info(
                'Workflow {0}-{1} not found in controller. Cannot delete'.
                format(playbook_name, workflow_name))
            return {
                "error": 'Playbook or workflow does not exist.'
            }, OBJECT_DNE_ERROR
Esempio n. 7
0
    def __func():
        if running_context.controller.is_playbook_registered(playbook_name):
            data = request.get_json()
            if 'playbook' in data and data['playbook']:
                new_playbook_name = data['playbook']
            else:
                new_playbook_name = playbook_name + "_Copy"
            if running_context.controller.is_playbook_registered(
                    new_playbook_name):
                current_app.logger.error('Cannot copy playbook {0} to {1}. '
                                         'Name already exists'.format(
                                             playbook_name, new_playbook_name))
                return {
                    "error": 'Playbook already exists.'
                }, OBJECT_EXISTS_ERROR
            else:
                running_context.controller.copy_playbook(
                    playbook_name, new_playbook_name)
                write_playbook_to_file(new_playbook_name)
                current_app.logger.info('Copied playbook {0} to {1}'.format(
                    playbook_name, new_playbook_name))

            return running_context.controller.get_all_workflows(
            ), OBJECT_CREATED
        else:
            current_app.logger.error(
                'Could not copy playbook {0}. Playbook does not exist.'.format(
                    playbook_name))
            return {'error': 'Playbook does not exist.'}, OBJECT_DNE_ERROR
Esempio n. 8
0
def execute_workflow(playbook_name, workflow_name):
    if running_context.controller.is_workflow_registered(
            playbook_name, workflow_name):
        write_playbook_to_file(playbook_name)
        running_context.controller.execute_workflow(playbook_name,
                                                    workflow_name)
        status = 'success'
    else:
        status = 'error: invalid workflow name'
    return json.dumps({"status": status})
Esempio n. 9
0
 def __func():
     if running_context.controller.is_workflow_registered(
             playbook_name, workflow_name):
         write_playbook_to_file(playbook_name)
         running_context.controller.execute_workflow(
             playbook_name, workflow_name)
         current_app.logger.info('Executed workflow {0}-{1}'.format(
             playbook_name, workflow_name))
         return {}, SUCCESS_ASYNC
     else:
         current_app.logger.error(
             'Cannot execute workflow {0}-{1}. Does not exist in controller'
             .format(playbook_name, workflow_name))
         return {
             "error": 'Playbook or workflow does not exist.'
         }, OBJECT_DNE_ERROR
Esempio n. 10
0
 def __func():
     if running_context.controller.is_workflow_registered(
             playbook_name, workflow_name):
         workflow = running_context.controller.get_workflow(
             playbook_name, workflow_name)
         try:
             workflow.from_cytoscape_data(
                 json.loads(request.get_json()['cytoscape']))
         except UnknownApp as e:
             return {
                 "error": "Unknown app {0}.".format(e.app)
             }, INVALID_INPUT_ERROR
         except UnknownAppAction as e:
             return {
                 'error':
                 'Unknown action {0} for app {1}'.format(e.action, e.app)
             }, INVALID_INPUT_ERROR
         except InvalidInput as e:
             return {
                 'error':
                 'Invalid input to action. Error: {0}'.format(str(e))
             }, INVALID_INPUT_ERROR
         else:
             if 'start' in request.get_json():
                 workflow.start_step = request.get_json()['start']
             try:
                 write_playbook_to_file(playbook_name)
                 current_app.logger.info('Saved workflow {0}-{1}'.format(
                     playbook_name, workflow_name))
                 return {"steps": workflow.get_cytoscape_data()}, SUCCESS
             except (OSError, IOError) as e:
                 current_app.logger.info(
                     'Cannot save workflow {0}-{1} to file'.format(
                         playbook_name, workflow_name))
                 return {
                     "error": "Error saving: {0}".format(e.message),
                     "steps": workflow.get_cytoscape_data()
                 }, IO_ERROR
     else:
         current_app.logger.info(
             'Cannot save workflow {0}-{1}. Workflow not in controller'.
             format(playbook_name, workflow_name))
         return {
             'error': 'Playbook or workflow does not exist.'
         }, OBJECT_DNE_ERROR
Esempio n. 11
0
    def __func():
        data = request.get_json()

        if running_context.controller.is_workflow_registered(
                playbook_name, workflow_name):
            if 'playbook' in data and data['playbook']:
                new_playbook_name = data['playbook']
            else:
                new_playbook_name = playbook_name
            if 'workflow' in data and data['workflow']:
                new_workflow_name = data['workflow']
            else:
                new_workflow_name = workflow_name + "_Copy"

            if running_context.controller.is_workflow_registered(
                    new_playbook_name, new_workflow_name):
                current_app.logger.error(
                    'Cannot copy workflow {0}-{1} to {2}-{3}. '
                    'Workflow already exists.'.format(workflow_name,
                                                      playbook_name,
                                                      new_workflow_name,
                                                      new_playbook_name))
                return {
                    "error": 'Playbook or workflow already exists.'
                }, OBJECT_EXISTS_ERROR
            else:
                running_context.controller.copy_workflow(
                    playbook_name, new_playbook_name, workflow_name,
                    new_workflow_name)
                write_playbook_to_file(new_playbook_name)
                current_app.logger.info(
                    'Workflow {0}-{1} copied to {2}-{3}'.format(
                        playbook_name, workflow_name, new_playbook_name,
                        new_workflow_name))
                workflow = running_context.controller.get_workflow(
                    new_playbook_name, new_workflow_name)
                return workflow.read(), OBJECT_CREATED
        else:
            current_app.logger.info(
                'Workflow {0}-{1} not found in controller. Cannot copy it.'.
                format(playbook_name, workflow_name))
            return {
                "error": 'Playbook or workflow does not exist.'
            }, OBJECT_DNE_ERROR
Esempio n. 12
0
    def __func():
        form = forms.CopyWorkflowForm(request.form)

        if running_context.controller.is_workflow_registered(
                playbook_name, workflow_name):
            if form.playbook.data:
                new_playbook_name = form.playbook.data
            else:
                new_playbook_name = playbook_name
            if form.workflow.data:
                new_workflow_name = form.workflow.data
            else:
                new_workflow_name = workflow_name + "_Copy"

            if running_context.controller.is_workflow_registered(
                    new_playbook_name, new_workflow_name):
                current_app.logger.error(
                    'Cannot copy workflow {0}-{1} to {2}-{3}. '
                    'Workflow already exists.'.format(workflow_name,
                                                      playbook_name,
                                                      new_workflow_name,
                                                      new_playbook_name))
                return {
                    "error": 'Playbook or workflow already exists.'
                }, OBJECT_EXISTS_ERROR
            else:
                running_context.controller.copy_workflow(
                    playbook_name, new_playbook_name, workflow_name,
                    new_workflow_name)
                write_playbook_to_file(new_playbook_name)
                current_app.logger.info(
                    'Workflow {0}-{1} copied to {2}-{3}'.format(
                        playbook_name, workflow_name, new_playbook_name,
                        new_workflow_name))
                return {}, OBJECT_CREATED
        else:
            current_app.logger.info(
                'Workflow {0}-{1} not found in controller. Cannot copy it.'.
                format(playbook_name, workflow_name))
            return {
                "error": 'Playbook or workflow does not exist.'
            }, OBJECT_DNE_ERROR
Esempio n. 13
0
 def __func():
     if running_context.controller.is_workflow_registered(
             playbook_name, workflow_name):
         workflow = running_context.controller.get_workflow(
             playbook_name, workflow_name)
         try:
             workflow.update_from_json(request.get_json())
         except UnknownApp as e:
             return {
                 "error": "Unknown app {0}.".format(e.app)
             }, INVALID_INPUT_ERROR
         except UnknownAppAction as e:
             return {'error': 'Unknown action for app'}, INVALID_INPUT_ERROR
         except InvalidArgument as e:
             return {
                 'error':
                 'Invalid input to action. Error: {0}'.format(str(e))
             }, INVALID_INPUT_ERROR
         else:
             try:
                 write_playbook_to_file(playbook_name)
                 current_app.logger.info('Saved workflow {0}-{1}'.format(
                     playbook_name, workflow_name))
                 return {}, SUCCESS
             except (OSError, IOError) as e:
                 current_app.logger.info(
                     'Cannot save workflow {0}-{1} to file'.format(
                         playbook_name, workflow_name))
                 return {
                     "error": "Error saving: {0}".format(e.message)
                 }, IO_ERROR
     else:
         current_app.logger.info(
             'Cannot save workflow {0}-{1}. Workflow not in controller'.
             format(playbook_name, workflow_name))
         return {
             'error': 'Playbook or workflow does not exist.'
         }, OBJECT_DNE_ERROR
Esempio n. 14
0
    def __func():
        if running_context.controller.is_workflow_registered(
                playbook_name, workflow_name):
            data = request.get_json()
            args = data['arguments'] if 'arguments' in data else None
            start = data['start'] if 'start' in data else None

            write_playbook_to_file(playbook_name)
            uid = running_context.controller.execute_workflow(
                playbook_name,
                workflow_name,
                start=start,
                start_arguments=args)
            current_app.logger.info('Executed workflow {0}-{1}'.format(
                playbook_name, workflow_name))
            return {'id': uid}, SUCCESS_ASYNC
        else:
            current_app.logger.error(
                'Cannot execute workflow {0}-{1}. Does not exist in controller'
                .format(playbook_name, workflow_name))
            return {
                "error": 'Playbook or workflow does not exist.'
            }, OBJECT_DNE_ERROR