Replies: 10 comments 44 replies
-
Common principles
|
Beta Was this translation helpful? Give feedback.
-
RequirementsUsabilityA number of usability requirements apply to the tool in general through all its features:
FeaturesThe
Each feature is fully described with an individual section in this discussion. Additional high-level features may also be implemented as a follow-up since these aren't strictly needed for the first production release candidate:
|
Beta Was this translation helpful? Give feedback.
-
User accountsEach user of the API has their own dedicated account. As such, the tool needs to provide ways to perform all the related house-keeping tasks: generating API tokens, updating profile details, changing passowrds, joining / leaving groups (with admin rights or pending admin moderation).
|
Beta Was this translation helpful? Give feedback.
-
User groupsUsers can belong to groups in order to share permissions for updating node data. The permissions scheme is not entirely finalised yet, only the main features are well understood. Users can be admins in which case they can generate an API token with admin scope.
|
Beta Was this translation helpful? Give feedback.
-
JobsA "job" is anything that runs, performs some actual task which generates some data and submits it to the API. Typical tasks performed by jobs are building kernels, running tests and post-processing existing data from other jobs. The The
|
Beta Was this translation helpful? Give feedback.
-
ConfigThe KernelCI YAML configuration is used to define what an automated pipeline should do. Some base YAML files are provided alongside with the Python package to define common things such as Linux kernel upstream Git repositories and standard API instances. This config data is also required when using the command line tools by hand, for example to load the API instance URL and version, storage and runtime details etc.
In this context, |
Beta Was this translation helpful? Give feedback.
-
Nodes
Commands such as |
Beta Was this translation helpful? Give feedback.
-
EventsThere are two main event-driven use-cases: broadcast publisher/subscriber event channels for general purpose communication and unicast event queues which are typically used for load balancing. The same events can be sent to both types of subscribers. The majority of them gets generated automatically by the API whenever a node gets created or updated. The name of the channel matches the type of data for API-generated events: Queues are effectively a way to group event listeners which all share a common purpose. Only one random listener in that group will receive each message. Queues have arbitrary names and belong to one by design to avoid collisions between users (this may be revisited in the future if load balancing needs to happen across multiple users). Queues need to be opened and closed by the user. Then listeners don't need to subscribe to queues, they can just push or pop events as they're guaranteed to be delivered unlike pub/sub ones. A typical use-case is load balancing, for example when running multiple identical scheduler services but only of them should process the event to schedule jobs.
Here's an example for pub/sub:
And one for an event queue:
To check the status of things:
An alternative would be to have separate commands e.g. |
Beta Was this translation helpful? Give feedback.
-
StorageStorage services are hosted separately from the API. They can be of any kind as long as an implementation is available in
|
Beta Was this translation helpful? Give feedback.
-
As per the Requirements section, a number of things will need to be done as follow-ups:
However, the initial goal of establishing the basis for the |
Beta Was this translation helpful? Give feedback.
-
The new
kci
command line tool was initially put togher as a quick way to bootstrap development of the new API & Pipeline without relying on raw URLs and hacky scripts. As part of preparing a first release candidate for the new API wich includes thekernelci
Python package, we should revisit its syntax and list the features we want it to provide.As identified with the 2020 Community Survey, 70% of users want to have a web dashboard as part of their daily workflow. This basically means that about a third of the users would rather just use a command line tool or an API library. It's also extremely useful to have such tools when developing test workloads before automating them with deployed services. So it is a key part of the whole KernelCI user experience.
Moving away from the legacy
kci_build
,kci_test
etc. collection of tools to a single entry pointkci
is already a clear improvement. It does however add one layer of subcommands, whichargparse
wasn't really designed to deal with. This is where the #258 discussion comes from. In this new discussion, we'll try to ignore the implications of any particular framework initially and just focus on the syntax purely from a user point of view.Roadmap issue: kernelci/kernelci-core#2125
Beta Was this translation helpful? Give feedback.
All reactions