Initial version of kerneltest ARC investigation

This is an initial version of the ARC investigation document for kerneltest
initiative.

It contains:
* index document with info, requirements for the project and what this
initiative needs to address
* repository enhancement investigation - what is missing in the repository
itself
* Complete rewrite stub - needs to be updated
* V2 reuse investigation - thorough investigation what is available in current
codebase, which wasn't released

Signed-off-by: Michal Konečný <mkonecny@redhat.com>
This commit is contained in:
Michal Konečný 2022-08-29 17:05:01 +02:00
parent 59d2375847
commit ed89fe6173
5 changed files with 171 additions and 0 deletions

View file

@ -11,6 +11,7 @@ Drafts
fmn/index
badges/index
kerneltest/index
Completed review
----------------

View file

@ -0,0 +1,59 @@
.. _continue_from_v2:
Use v2 Code Of kerneltest Application
=====================================
There is already a work in progress rewrite of kerneltest application started by Jeremy Cline,
which was never finished. This document is investigating if this option is feasible
and we should continue on the code already written.
From meeting with Justin Forbes this code is not 100% ready, which is the reason it was never
been released.
What is in v2
-------------
* Some unit tests in `kerneltest/tests` (not covering everything,
but at least part of the code is covered) using tox
* API calls for `/api/v1/results`
* GET method to retrieve tests information
* POST method to add new test run to db
(authentication scopes doesn't seem to be set correctly)
* Sending Fedora message when adding a new test run
* Basic OIDC implementation using `flask_oidc` library
* Configuration file loading and defaults
* Forms for updating/creating release and submitting logs are in place
* Web routes implemented
* `/index`
* `/login`
* `/logout`
* `/release/<release>` - information about specific fedora release
* `/kernel/<kernel>` - information about specific kernel version
* `/results/<test_run_id>` - information about specific test
* `/upload` - test result uploading
* `/stats`
* `/admin/new` - add new release (does emit fedora message)
* `/admin/<release>/edit` - edit existing release (does emit fedora message)
* DB models for Test, TestRun and Release
What is missing in v2
---------------------
* Documentation
* No support for uploading logs yet
* Web interface revitalization
* Code itself more than 3 years old, there could be some issue with newer libraries
The Good Points
---------------
1. Not starting from scratch = less work
The Bad points
--------------
1. Make familiar with existing code = more time needed

View file

@ -0,0 +1,18 @@
.. _enhancement_of_repository:
Enhancement of dev env for kerneltest
=====================================
There is plenty of tech debt regarding the kerneltest repository. This document
will try to address all the current tech debt tied to kerneltest repository.
Investigation
-------------
* CI - Currently using Travis CI, which is no longer working. Recommending to switch
to either GitHub action or use Zuul CI
* Development environment - There is a vagrant using F25, needs to be updated (
issues encountered with ansible when trying to just use newer Fedora version)
* Automatic dependency updater - recommending renovate
* When moving to OpenShift we can consolidate adding automatic deployment with
GitHub webhooks

70
docs/kerneltest/index.rst Normal file
View file

@ -0,0 +1,70 @@
kerneltest
==========
Purpose
-------
This investigation's goal is to address tech debt of kerneltest application.
kerneltest applications is used by Fedora QA for submitting test logs for
kernel builds in Fedora. It also provides web interface for users to access
and upload logs.
Currently there is a partial rewrite v2 in repository, which is not functionality
complete and was never released.
Resources
---------
* kerneltest repo: https://github.com/jmflinuxtx/kerneltest-harness
* kerneltest web: https://apps.fedoraproject.org/kerneltest/
* kerneltest ansible: https://pagure.io/fedora-infra/ansible/blob/main/f/roles/kerneltest
* kerneltest wiki: http://fedoraproject.org/wiki/KernelTestingInitiative
Requirements
------------
* Be able to upload logs anonymously, authenticated, super user
* Be able to view logs on front page showing super user ones
* When clicking on the release it should show all logs for a release
* Stats: https://apps.fedoraproject.org/kerneltest/stats (currently stored in postgres)
* Logs needs to be saved in persistent volume
* Send Fedora Messages for badges
* Size limitation on the uploaded logs (currently hardcoded in code)
What Needs To Be Addressed?
---------------------------
* Update authentication library
* Switch CI
* fedmsg -> fedora messaging (some v2 parts could be used)
* python2 -> python3
* migration to OpenShift
* Documentation - Fedora QA has some
* Users don't receive any badges
* Update development environment
* Web interface (should be revitalized)
Investigation
-------------
Here is the list of ideas/things we discussed/looked at:
.. toctree::
:maxdepth: 1
rewrite_of_kerneltest_app
continue_from_v2
enhancement_of_repository
Conclusions
-----------
Proposed Roadmap
----------------
* Step 1 - Address tech debt in kerneltest application
* Step 2 - ???
* Step 3 - Profit!

View file

@ -0,0 +1,23 @@
.. _rewrite_of_kerneltest_app:
Complete Rewrite Of kerneltest Application
==========================================
One of the options is to completely rewrite the current solution and start from scratch.
This will allow us to address all the requirements and get rid of all the existing tech debt.
We can also reuse some code from v2 rewrite.
The Good Points
---------------
1. Good knowledge of the codebase = easier to do any future changes
2. More freedom in implementation
3. It will be easier to write documentation
The Bad points
--------------
1. More work for us
2. Existing code will be thrown away