Merge pull request #492 from sartography/columns-missing-from-logs-678

Columns missing from logs #678
This commit is contained in:
Dan Funk 2022-03-14 16:48:50 -04:00 committed by GitHub
commit 562ad1ac27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 23 additions and 15 deletions

View File

@ -1,7 +1,5 @@
import time
import uuid
from SpiffWorkflow.util.metrics import firsttime, timeit, sincetime
from flask import g
from crc import session
@ -9,13 +7,10 @@ from crc.api.common import ApiError, ApiErrorSchema
from crc.models.api_models import WorkflowApiSchema
from crc.models.study import StudyModel, WorkflowMetadata, StudyStatus
from crc.models.task_event import TaskEventModel, TaskEvent, TaskEventSchema
from crc.models.task_log import TaskLogModelSchema, TaskLogQuery, TaskLogQuerySchema
from crc.models.workflow import WorkflowModel, WorkflowSpecInfoSchema, WorkflowSpecCategorySchema
from crc.services.error_service import ValidationErrorService
from crc.services.lookup_service import LookupService
from crc.services.spec_file_service import SpecFileService
from crc.services.study_service import StudyService
from crc.services.task_logging_service import TaskLoggingService
from crc.services.user_service import UserService
from crc.services.workflow_processor import WorkflowProcessor
from crc.services.workflow_service import WorkflowService

View File

@ -43,6 +43,4 @@ class GetLogsByWorkflow(Script):
def do_task(self, task, study_id, workflow_id, *args, **kwargs):
level, code, size = self.get_parameters(args, kwargs)
log_models = TaskLoggingService().get_logs_for_workflow(workflow_id=workflow_id, level=level, code=code, size=size)
# query = TaskLogQuery(code=code, per_page=size)
# log_models = TaskLoggingService.get_logs_for_workflow(workflow_id, query).items
return TaskLogModelSchema(many=True).dump(log_models)

View File

@ -1,7 +1,5 @@
from SpiffWorkflow.exceptions import WorkflowTaskExecException
from crc import session
from crc.api.common import ApiError
from crc.models.task_log import TaskLogModel, TaskLogModelSchema, TaskLogLevels
from crc.scripts.script import Script
from crc.services.task_logging_service import TaskLoggingService
@ -45,8 +43,6 @@ class TaskLog(Script):
raise WorkflowTaskExecException(task, 'You must include a level, code, and message'
' when calling the log() script')
def do_task_validate_only(self, task, study_id, workflow_id, *args, **kwargs):
level, code, message = self.get_arguments(task, *args, **kwargs)
log_model = TaskLogModel(level=level,
@ -61,4 +57,3 @@ class TaskLog(Script):
level, code, message = self.get_arguments(task, *args, **kwargs)
log_model = TaskLoggingService.add_log(task, level, code, message, study_id, workflow_id)
return TaskLogModelSchema().dump(log_model)

View File

@ -1,6 +1,7 @@
from crc import app, session
from crc.api.common import ApiError
from crc.models.task_log import TaskLogModel, TaskLogLevels, TaskLogQuery, TaskLogModelSchema
from crc.models.workflow import WorkflowModel
from crc.services.user_service import UserService
from sqlalchemy import desc
@ -24,15 +25,22 @@ class TaskLoggingService(object):
user_uid = UserService.current_user().uid
except ApiError as e:
user_uid = "unknown"
log_message = f"Workflow {workflow_id}, study {study_id}, task {task.get_name()}, user {user_uid}: {message}"
if workflow_id:
workflow_spec_id = session.query(WorkflowModel.workflow_spec_id).\
filter(WorkflowModel.id == workflow_id).\
scalar()
else:
workflow_spec_id = None
log_message = f"Workflow Spec {workflow_spec_id}, study {study_id}, task {task.get_name()}, user {user_uid}: {message}"
app.logger.log(TaskLogLevels[level].value, log_message)
log_model = TaskLogModel(level=level,
code=code,
user_uid=user_uid,
message=message,
study_id=study_id,
workflow_id=workflow_id,
task=task.get_name())
task=task.get_name(),
user_uid=user_uid,
workflow_spec_id=workflow_spec_id)
session.add(log_model)
session.commit()
return log_model

View File

@ -42,6 +42,7 @@ class TestTaskLogging(BaseTest):
self.assertEqual('test_code', log_model.code)
self.assertEqual('info', log_model.level)
self.assertEqual('Activity_LogEvent', log_model.task)
self.assertEqual('logging_task', log_model.workflow_spec_id)
def test_add_metrics_log(self):
log_data = {'level': 'metrics',
@ -51,6 +52,7 @@ class TestTaskLogging(BaseTest):
log_model = session.query(TaskLogModel).filter(TaskLogModel.id == log_id).first()
self.assertEqual('metrics', log_model.level)
self.assertEqual('logging_task', log_model.workflow_spec_id)
def test_get_logging_validation(self):
self.load_test_spec('empty_workflow', master_spec=True)
@ -71,6 +73,10 @@ class TestTaskLogging(BaseTest):
self.assertIn(task.data['logging_models_debug_post'][0], task.data['logging_models_all_post'])
self.assertEqual('test_code', task.data['logging_models_info_post'][0]['code'])
self.assertEqual('debug_test_code', task.data['logging_models_debug_post'][0]['code'])
self.assertEqual('Test Workflows', task.data['logging_models_info_post'][0]['category'])
self.assertEqual('Test Workflows', task.data['logging_models_debug_post'][0]['category'])
self.assertEqual('get_logging', task.data['logging_models_info_post'][0]['workflow'])
self.assertEqual('get_logging', task.data['logging_models_debug_post'][0]['workflow'])
def test_get_logs_for_study(self):
self.add_studies()
@ -102,7 +108,11 @@ class TestTaskLogging(BaseTest):
workflow_logs = task_api.data['workflow_logs']
study_logs = task_api.data['study_logs']
self.assertEqual(3, len(workflow_logs))
self.assertEqual('Test Workflows', workflow_logs[0]['category'])
self.assertEqual('get_logging_for_study', workflow_logs[0]['workflow'])
self.assertEqual(5, len(study_logs))
self.assertEqual('Test Workflows', study_logs[0]['category'])
self.assertEqual('hello_world', study_logs[0]['workflow'])
def test_logging_api(self):
workflow = self.create_workflow('logging_task')
@ -129,6 +139,8 @@ class TestTaskLogging(BaseTest):
self.assertEqual('info', logs[0]['level'])
self.assertEqual(self.test_uid, logs[0]['user_uid'])
self.assertEqual('You forgot to include the correct data.', logs[0]['message'])
self.assertEqual('Test Workflows', logs[0]['category'])
self.assertEqual('logging_task', logs[0]['workflow'])
def test_logging_service_paginates_and_sorts(self):
self.add_studies()