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
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
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
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'})
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
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
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
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})
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
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
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
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
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
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