Пример #1
0
from walkoff.security import permissions_accepted_for_resources, ResourcePermissions
from walkoff.server.decorators import validate_resource_exists_factory


def does_playbook_exist(playbook_name):
    from walkoff.server.context import running_context
    return running_context.controller.is_playbook_registered(playbook_name)


def does_workflow_exist(playbook_name, workflow_name):
    from walkoff.server.context import running_context
    return running_context.controller.is_workflow_registered(
        playbook_name, workflow_name)


validate_playbook_is_registered = validate_resource_exists_factory(
    'playbook', does_playbook_exist)
validate_workflow_is_registered = validate_resource_exists_factory(
    'workflow', does_workflow_exist)
'''
def validate_playbook_is_registered(operation, playbook_name):
    from walkoff.server.context import running_context

    def wrapper(func):
        if running_context.controller.is_playbook_registered(playbook_name):
            return func
        else:
            current_app.logger.error(
                'Could not {0} playbook {1}. Playbook does not exist.'.format(operation, playbook_name))
            return lambda: ({"error": 'Playbook does not exist'.format(playbook_name)}, OBJECT_DNE_ERROR)

    return wrapper
Пример #2
0
from flask import request, current_app
from flask_jwt_extended import jwt_required

import walkoff.case.database as case_database
from walkoff.security import permissions_accepted_for_resources, ResourcePermissions
from walkoff.server.decorators import validate_resource_exists_factory
from walkoff.server.returncodes import *

validate_event_exists = validate_resource_exists_factory(
    'event',
    lambda event_id: current_app.running_context.case_db.session.query(
        case_database.Event).filter(case_database.Event.id == event_id).first(
        ))


def update_event_note():
    data = request.get_json()
    event_id = data['id']

    @jwt_required
    @permissions_accepted_for_resources(
        ResourcePermissions('cases', ['update']))
    @validate_event_exists('update', event_id)
    def __func():
        current_app.running_context.case_db.edit_event_note(
            event_id, data['note'])
        return current_app.running_context.case_db.event_as_json(
            event_id), SUCCESS

    return __func()
Пример #3
0

def does_execution_id_exist(execution_id):
    return executiondb.execution_db.session.query(
        exists().where(WorkflowStatus.execution_id == execution_id)).scalar()


def workflow_status_getter(execution_id):
    return executiondb.execution_db.session.query(WorkflowStatus).filter_by(
        execution_id=execution_id).first()


with_workflow_status = with_resource_factory('workflow',
                                             workflow_status_getter,
                                             validator=is_valid_uid)
validate_workflow_is_registered = validate_resource_exists_factory(
    'workflow', does_workflow_exist)
validate_execution_id_is_registered = validate_resource_exists_factory(
    'workflow', does_execution_id_exist)

status_order = OrderedDict([
    ((WorkflowStatusEnum.running, WorkflowStatusEnum.awaiting_data,
      WorkflowStatusEnum.paused), WorkflowStatus.started_at),
    ((WorkflowStatusEnum.aborted, WorkflowStatusEnum.completed),
     WorkflowStatus.completed_at)
])

executing_statuses = (WorkflowStatusEnum.running,
                      WorkflowStatusEnum.awaiting_data,
                      WorkflowStatusEnum.paused)
completed_statuses = (WorkflowStatusEnum.aborted, WorkflowStatusEnum.completed)
Пример #4
0
        exists().where(WorkflowStatus.execution_id == execution_id)).scalar()


def workflow_status_getter(execution_id):
    return current_app.running_context.execution_db.session.query(WorkflowStatus).filter_by(
        execution_id=execution_id).first()


def workflow_getter(workflow_id):
    return current_app.running_context.execution_db.session.query(Workflow).filter_by(id=workflow_id).first()


with_workflow = with_resource_factory('workflow', workflow_getter, validator=is_valid_uid)

with_workflow_status = with_resource_factory('workflow', workflow_status_getter, validator=is_valid_uid)
validate_workflow_is_registered = validate_resource_exists_factory('workflow', does_workflow_exist)
validate_execution_id_is_registered = validate_resource_exists_factory('workflow', does_execution_id_exist)

status_order = OrderedDict(
    [((WorkflowStatusEnum.running, WorkflowStatusEnum.awaiting_data, WorkflowStatusEnum.paused),
      WorkflowStatus.started_at),
     ((WorkflowStatusEnum.aborted, WorkflowStatusEnum.completed), WorkflowStatus.completed_at)])

executing_statuses = (WorkflowStatusEnum.running, WorkflowStatusEnum.awaiting_data, WorkflowStatusEnum.paused)
completed_statuses = (WorkflowStatusEnum.aborted, WorkflowStatusEnum.completed)


def get_all_workflow_status():
    @jwt_required
    @permissions_accepted_for_resources(ResourcePermissions('playbooks', ['read']))
    def __func():