from uuid import UUID from flask import current_app, request from flask_jwt_extended import jwt_required from walkoff.extensions import db from walkoff.scheduler import InvalidTriggerArgs from walkoff.security import permissions_accepted_for_resources, ResourcePermissions from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * from walkoff.serverdb.scheduledtasks import ScheduledTask with_task = with_resource_factory('Scheduled task', lambda task_id: ScheduledTask.query.filter_by(id=task_id).first()) def validate_uuids(uuids): invalid_uuids = [] for uuid in uuids: try: UUID(uuid) except ValueError: invalid_uuids.append(uuid) return invalid_uuids def get_scheduler_status(): @jwt_required @permissions_accepted_for_resources(ResourcePermissions('scheduler', ['read'])) def __func(): return {"status": current_app.running_context.scheduler.scheduler.state}, SUCCESS
from uuid import UUID from flask import current_app, request from flask_jwt_extended import jwt_required from walkoff.extensions import db from walkoff.scheduler import InvalidTriggerArgs from walkoff.security import permissions_accepted_for_resources, ResourcePermissions from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * from walkoff.serverdb.scheduledtasks import ScheduledTask with_task = with_resource_factory( 'Scheduled task', lambda task_id: ScheduledTask.query.filter_by(id=task_id).first()) def validate_uuids(uuids): invalid_uuids = [] for uuid in uuids: try: UUID(uuid) except ValueError: invalid_uuids.append(uuid) return invalid_uuids def get_scheduler_status(): @jwt_required @permissions_accepted_for_resources(
return executiondb.execution_db.session.query( exists().where(Workflow.id == workflow_id)).scalar() 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,
from flask import request, current_app from flask_jwt_extended import jwt_required from walkoff.extensions import db from walkoff.security import permissions_accepted_for_resources, ResourcePermissions, admin_required from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * from walkoff.serverdb import clear_resources_for_role, get_all_available_resource_actions from walkoff.serverdb.role import Role with_role = with_resource_factory('role', lambda role_id: Role.query.filter_by(id=role_id).first()) def read_all_roles(): @jwt_required @admin_required def __func(): return [role.as_json() for role in Role.query.all()], SUCCESS return __func() def create_role(): @jwt_required @admin_required def __func(): json_data = request.get_json() if not Role.query.filter_by(name=json_data['name']).first(): resources = json_data['resources'] if 'resources' in json_data else [] if '/roles' in resources:
Workflow.playbook_id == playbook_id))).scalar() def playbook_getter(playbook_id): playbook = current_app.running_context.execution_db.session.query( Playbook).filter_by(id=playbook_id).first() return playbook def workflow_getter(workflow_id): return current_app.running_context.execution_db.session.query( Workflow).filter_by(id=workflow_id).first() with_playbook = with_resource_factory('playbook', playbook_getter, validator=is_valid_uid) with_workflow = with_resource_factory('workflow', workflow_getter, validator=is_valid_uid) validate_workflow_is_registered = validate_resource_exists_factory( 'workflow', does_workflow_exist) ALLOWED_EXTENSIONS = {'json', 'playbook'} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
from walkoff.server.returncodes import * from walkoff.serverdb import db from walkoff.serverdb.casesubscription import CaseSubscription try: from StringIO import StringIO except ImportError: from io import StringIO def case_getter(case_id): return current_app.running_context.case_db.session.query(case_database.Case) \ .filter(case_database.Case.id == case_id).first() with_case = with_resource_factory('case', case_getter) with_subscription = with_resource_factory( 'subscription', lambda case_id: CaseSubscription.query.filter_by(id=case_id).first()) def convert_subscriptions(subscriptions): return [ Subscription(subscription['id'], subscription['events']) for subscription in subscriptions ] def split_subscriptions(subscriptions): controller_subscriptions = None for i, subscription in enumerate(subscriptions):
from walkoff.appgateway.apiutil import get_app_device_api, UnknownApp, UnknownDevice, InvalidArgument from walkoff.appgateway.validator import validate_device_fields from walkoff.executiondb.device import Device, App from walkoff.security import permissions_accepted_for_resources, ResourcePermissions from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * try: from StringIO import StringIO except ImportError: from io import StringIO with_device = with_resource_factory( 'device', lambda device_id: current_app.running_context.execution_db.session.query(Device).filter( Device.id == device_id).first()) def get_device_json_with_app_name(device): device_json = device.as_json() app = current_app.running_context.execution_db.session.query(App).filter(App.id == device.app_id).first() device_json['app_name'] = app.name if app is not None else '' return device_json def read_all_devices(): @jwt_required @permissions_accepted_for_resources(ResourcePermissions('devices', ['read'])) def __func(): page = request.args.get('page', 1, type=int)
def does_execution_id_exist(execution_id): return current_app.running_context.execution_db.session.query( 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():
from walkoff import executiondb from walkoff.appgateway.validator import validate_device_fields from walkoff.executiondb.device import Device, App from walkoff.helpers import get_app_device_api, InvalidArgument, UnknownDevice, UnknownApp from walkoff.security import permissions_accepted_for_resources, ResourcePermissions from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * try: from StringIO import StringIO except ImportError: from io import StringIO with_device = with_resource_factory( 'device', lambda device_id: executiondb.execution_db.session.query(Device). filter(Device.id == device_id).first()) def get_device_json_with_app_name(device): device_json = device.as_json() app = executiondb.execution_db.session.query(App).filter( App.id == device.app_id).first() device_json['app_name'] = app.name if app is not None else '' return device_json def read_all_devices(): @jwt_required @permissions_accepted_for_resources( ResourcePermissions('devices', ['read']))
def does_workflow_exist(playbook_id, workflow_id): return current_app.running_context.execution_db.session.query( exists().where(and_(Workflow.id == workflow_id, Workflow.playbook_id == playbook_id))).scalar() def playbook_getter(playbook_id): playbook = current_app.running_context.execution_db.session.query(Playbook).filter_by(id=playbook_id).first() return playbook def workflow_getter(workflow_id): return current_app.running_context.execution_db.session.query(Workflow).filter_by(id=workflow_id).first() with_playbook = with_resource_factory('playbook', playbook_getter, validator=is_valid_uid) with_workflow = with_resource_factory('workflow', workflow_getter, validator=is_valid_uid) validate_workflow_is_registered = validate_resource_exists_factory('workflow', does_workflow_exist) ALLOWED_EXTENSIONS = {'json', 'playbook'} def allowed_file(filename): return '.' in filename and \ filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS def unique_constraint_problem(type_, operation, id_): return Problem.from_crud_resource( OBJECT_EXISTS_ERROR, type_,
from walkoff.appgateway.validator import validate_device_fields from walkoff.executiondb.device import Device, App from walkoff.appgateway.apiutil import get_app_device_api, UnknownApp, UnknownDevice, InvalidArgument from walkoff.security import permissions_accepted_for_resources, ResourcePermissions from walkoff.server.decorators import with_resource_factory from walkoff.server.problem import Problem from walkoff.server.returncodes import * try: from StringIO import StringIO except ImportError: from io import StringIO with_device = with_resource_factory( 'device', lambda device_id: current_app.running_context.execution_db. session.query(Device).filter(Device.id == device_id).first()) def get_device_json_with_app_name(device): device_json = device.as_json() app = current_app.running_context.execution_db.session.query(App).filter( App.id == device.app_id).first() device_json['app_name'] = app.name if app is not None else '' return device_json def read_all_devices(): @jwt_required @permissions_accepted_for_resources( ResourcePermissions('devices', ['read']))
from flask import request, current_app from flask_jwt_extended import jwt_required, get_jwt_identity from walkoff.server.returncodes import * from walkoff.database import add_user from walkoff.server.extensions import db from walkoff.database.user import User from walkoff.security import permissions_accepted_for_resources, ResourcePermissions, admin_required from walkoff.server.decorators import with_resource_factory with_user = with_resource_factory( 'user', lambda user_id: User.query.filter_by(id=user_id).first()) def read_all_users(): @jwt_required @permissions_accepted_for_resources(ResourcePermissions('users', ['read'])) def __func(): return [user.as_json() for user in User.query.all()], SUCCESS return __func() def create_user(): @jwt_required @permissions_accepted_for_resources( ResourcePermissions('users', ['create'])) def __func(): data = request.get_json() username = data['username'] if not User.query.filter_by(username=username).first():