Verified Commit 08ae94a4 authored by Peter Stanko's avatar Peter Stanko
Browse files

Extensive logging for the REST layer

parent 187a872e
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@ def process_submission(new_submission_id: str):
    new_submission = rest_service.find.submission(new_submission_id)
    project = new_submission.project
    course = project.course
    log.info(f"[SUBMIT] Processing submission: {new_submission.log_name}")
    if not project.config.test_files_commit_hash:
        log.warning(f"Project test files not found: {project.log_name}")
        update_project_test_files(course_id=course.id, project_id=project.id)
@@ -28,6 +29,8 @@ def upload_results_to_storage(new_submission_id: str, path: str):
    from portal.service.rest import RestService
    rest_service = RestService()
    new_submission = rest_service.find.submission(new_submission_id)
    log.info(f"[SUBMIT] Processing results - upload to the storage for "
             f"{new_submission.log_name}: {path}")
    processor = submission_processor.SubmissionProcessor(new_submission)
    file_params = dict(source=dict(url=path, type='zip'))
    processor.upload_result(path=path, file_params=file_params)
@@ -41,6 +44,7 @@ def clone_submission_files(source_id: str, target_id: str):
    rest_service = RestService()
    source = rest_service.find.submission(source_id)
    target = rest_service.find.submission(target_id)
    log.info(f"[SUBMIT] Copy submission files: {source.log_name} -> {target.log_name}")
    processor = submission_processor.SubmissionProcessor(source)
    processor.clone(target)

@@ -49,8 +53,8 @@ def clone_submission_files(source_id: str, target_id: str):
def start_processing_submission(submission_id: str, submission_params):
    from portal.service.rest import RestService
    rest_service = RestService()

    submission = rest_service.find.submission(submission_id)
    log.info(f"[SUBMIT] Processing submission - send to worker: {submission.log_name}")
    processor = submission_processor.SubmissionProcessor(submission, submission_params)
    processor.send_to_worker()

+6 −3
Original line number Diff line number Diff line
@@ -33,8 +33,8 @@ class CourseList(CustomResource):
    @access_log
    def post(self):
        self.permissions.require.sysadmin()

        data = rest_helpers.parse_request_data(resource='course', action='create')
        log.info(f"[REST] Create new course by {self.client.log_name}: {data} ")
        new_course = self.rest.courses.create(**data)
        return SCHEMAS.dump('course', new_course), 201

@@ -70,6 +70,7 @@ class CourseResource(CustomResource):
    def delete(self, cid: str):
        self.permissions.require.sysadmin()
        course = self.rest.find.course(cid)
        log.info(f"[REST] Delete course {course.log_name} by {self.client.log_name}")
        self.rest.courses(course).delete()
        return '', 204

@@ -81,8 +82,8 @@ class CourseResource(CustomResource):
        course = self.rest.find.course(cid)
        # authorization
        self.permissions(course=course).require.update_course()

        data = rest_helpers.parse_request_data(action='update', resource='course', partial=True)
        log.info(f"[REST] Update course by {self.client.log_name}: {data} ")
        self.rest.courses(course).update(**data)
        return '', 204

@@ -112,7 +113,7 @@ class CourseNotesToken(CustomResource):
        self.permissions(course=course).require.course_access_token()

        json_data = rest_helpers.require_data(action='update_notes_token', resource='course')

        log.info(f"[REST] Update course access token by {self.client.log_name}: {json_data} ")
        self.rest.courses(course).update_notes_token(json_data['token'])
        return '', 204

@@ -140,6 +141,8 @@ class CourseImport(CustomResource):
                400, f'[IMPORT] Cannot import course to itself. (id: {cid})')

        config = data['config']
        log.info(f"[REST] Import course by {self.client.log_name} "
                 f"from {source_course}: {config} ")

        copied_course = self.rest.courses(course).copy_course(course, config)
        return SCHEMAS.dump('course', copied_course)
+4 −0
Original line number Diff line number Diff line
@@ -19,3 +19,7 @@ class CustomResource(Resource):
    @property
    def permissions(self) -> PermissionsService:
        return self.rest.permissions

    @property
    def client(self):
        return self.rest.auth.client
+1 −1
Original line number Diff line number Diff line
@@ -98,7 +98,7 @@ def user_oauth_register(user_info):
        email=user_info['email'],
        is_admin=False
    )
    log.debug(f"[GITLAB] Created user={new_user}")
    log.info(f"[GITLAB] Created user={new_user}")
    return new_user


+14 −3
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ class GroupsList(CustomResource):
        self.permissions(course=course).require.update_course()

        data = rest_helpers.parse_request_data(action='create', resource='group')

        log.info(f"[REST] Create new group by {self.client.log_name} in {course.log_name}: {data}")
        new_group = self.rest.groups.create(course, **data)
        return SCHEMAS.dump('group', new_group), 201

@@ -64,8 +64,8 @@ class GroupResource(CustomResource):
        course = self.find.course(cid)
        # authorization
        self.permissions(course=course).require.update_course()

        group = self.find.group(course, gid)
        log.info(f"[REST] Delete group {group.log_name} by {self.client.log_name}")
        self.rest.groups(group).delete()
        return '', 204

@@ -77,9 +77,9 @@ class GroupResource(CustomResource):
        course = self.find.course(cid)
        # authorization
        self.permissions(course=course).require.write_groups()

        data = rest_helpers.parse_request_data(action='update', resource='group', partial=True)
        group = self.find.group(course, gid)
        log.info(f"[REST] Update group {group.log_name} by {self.client.log_name}: {data}")
        self.rest.groups(group).update(**data)
        return '', 204

@@ -116,6 +116,8 @@ class GroupUsersList(CustomResource):
        )

        group = self.find.group(course, gid)
        log.info(f"[REST] Update group membership {group.log_name} by "
                 f"{self.client.log_name}: {data}")
        # everything from users_add is added, THEN everything from users_remove
        # is removed
        self.rest.groups(group).update_membership(data)
@@ -144,6 +146,8 @@ class GroupAddOrDeleteSingleUser(CustomResource):
        group = self.find.group(course, gid)
        user = self.find.user(uid)
        self.rest.groups(group).add_user(user)
        log.info(f"[REST] Update group membership {group.log_name} by "
                 f"{self.client.log_name}, add user {user.log_name}")
        return '', 204

    @jwt_required
@@ -158,6 +162,8 @@ class GroupAddOrDeleteSingleUser(CustomResource):
        group = self.find.group(course, gid)
        user = self.find.user(uid)
        self.rest.groups(group).remove_user(user)
        log.info(f"[REST] Update group membership {group.log_name} by "
                 f"{self.client.log_name}, remove user {user.log_name}")
        return '', 204


@@ -200,6 +206,8 @@ class GroupAddOrDeleteProject(CustomResource):
        group = self.find.group(course, gid)
        project = self.find.project(course, pid)
        self.rest.groups(group).add_project(project)
        log.info(f"[REST] Update group membership {group.log_name} by "
                 f"{self.client.log_name}, add project {project.log_name}")
        return '', 204

    @jwt_required
@@ -216,6 +224,8 @@ class GroupAddOrDeleteProject(CustomResource):
        group = self.find.group(course, gid)
        project = self.find.project(course, pid)
        self.rest.groups(group).remove_project(project)
        log.info(f"[REST] Update group membership {group.log_name} by "
                 f"{self.client.log_name}, remove project {project.log_name}")
        return '', 204


@@ -235,5 +245,6 @@ class GroupImport(CustomResource):
        data = rest_helpers.parse_request_data(
            schema=SCHEMAS.group_import, action='import', resource='group'
        )
        log.info(f"[REST] Group import by {self.client.log_name}: {data}")
        new_group = self.rest.groups.import_group(data, target_course)
        return SCHEMAS.dump('group', new_group), 201
Loading