 So I've already been introduced so I'm not going to say much else. Yeah, but I should I guess clearly say I'm a cupra check I'm software engineer with red hat and this is my presentation. So The idea is this to talk why I've made up to I've written it. What it is. What is its purpose? What it actually is and the the main part that we want to get to you is How can I leverage this for myself my organization my project, you know, the idea behind the presentation is that I guess it's mostly red headers in the in the in the room and Obviously, this is a way to share what I've been working on and hopefully get to that, you know How can someone else use it? Is there something that's that is useful to me that? That I can benefit from So why that's a bit big thought disclaimer I'm part of continuous kernel integration team and we provide a service to test kernels for kernel maintainers and developers Uh, so how does this project began? Well, we wanted to scale to target different providers different clouds like AVS beaker Perhaps others and To to run kernel kernel testing in there and to basically know one project will do that all for you also the idea is to Target some some labs with specific hardware to To SSH. So we also needed to run kernel testing and yes up has like a part of it is a test runner Mostly for kernel testing, but you can you can run like generic Workflows or commands shell commands Whatever you want Also, we needed to generate results and have CI compatible output or something called KCIDB That's a big separate topic, but You know, there are different kernel CI systems in the world and KCIDB is something that provides The the standardizes the output and there are multiple people multiple companies multiple projects Contributing that data to it for kernel testing for a lot of dimension scaling we kind of wanted to handle a lot transitioning and legacy a little bit because well, we use beaker quite a lot still and You know that legacy workflow that people have it's not going to Disappear at the wave of magic hand people have their scripts ways You know the way they work and obviously the idea was to kind of offer something helping hand in there Also, the idea was to kind of try to avoid creating new standards more in that later and the idea was to be reliable and with kernel testing because you're doing something Non-standard with the machine in hopes of breaking it then you want to be able to get the results out reliable like to that end Test runner uses restraint, which has been quite reliable So what is up? What it actually is the project? Well, it's a github recall and that's actually the only link I have in the Presentation, so if you want to down you if you want to note it down Please do this is also like for me at least let them the maintain their primary Primary way to interact, you know to an issue or like a command on the PR or something so up this it's a bit of Python 3 code and it has parts for provisioning to provision machines in beaker in ABS to some limited capacity and With one minute tip Which is very fast. It's a tool that Can get you a VM in about a minute and you can run some some simple workloads or One-shot kernel tests on there Hopefully more coming soon and the provisioning gets mostly synchronous Some harness this kind of comes down from that requirement for kernel testing where well if you have a one piece of Very specific hardware that you want to get then there are some chances that you will not be able to get it For example, something breaks down physically then, you know, that's an issue and You know, you wait for that results. You might not get it. It's not AVS. It's not the end if you're targeting some very specific hardware then Then there might be some some issues so The second part of opt is a test runner that I mentioned for kernel that can run tests on any of the above So what is provisioning? Well in up? It's all it looks like this you run a Very simple command. That's the actual command that the idea I was supposed to keep it really simple and well, it's the print out some outputs that it's in a provisioning resources and That it was able to provision that successfully So you run the command command you wait for a bit You get the resource now you have a resource you can SSH into that's the Important part for restraint and running kernel tests in there or you know running some other workflow workloads in there So but what does update, you know the command it's There could be couple of more like Command line options, but it's yeah It's actually like supposed to be like this the simple to get that repeatable workflow. So but how do I tell it? What to provision and what to do? Well, there's an XML file That's mostly for be care for legacy workflow, but it supports that like fully and there's a YAML file for Well either be care or other provisioners and you can both Both can be sort of edited by hand. It's Not a hundred percent user friendly. It's easier with the YAML But it can be done and I'm actually going to do Demo just after I show you what the YAML file looks like So it you know latches onto some bigger concepts So we don't create that extra standard you organize your resources to Recypes that some hosts hosts for example here. I have one minute tip Provisioner, which I mentioned I will get a single host with some rel 8 distro and That's basically it in this case. I I already have that resource. I have its host name or its IP I have its recipe ID. So I can target it. I can run Test of workloads in there using restraint If you're not going to run tests or workloads, then this price is going to be empty, but here you can see the ID and Distribution command which is Again for restraint to run exit one command in the in this in this VM that I got from one minute So this is for the YAML file. This is roughly how it looks like For the XML for be care. Well, it's a little bit more complicated But since this is legacy, I will not go into too much detail. But again, you have some ways of Describing what you want this case. I want to disturb. That's for your asserted 33 and that's x86 architecture So Let's try to play it as I said. You can mostly edit it by hand. This is what you Provide to opt as an input so we can provision and do other stuff. So a demo I Said I can get a VM in one minute using this nice provisioner someone. I'll see someone else made So I wore on this command as I said, it's pretty simple. Hopefully you can see it up here and Yeah, it will take about a minute. So I will just move on my slide the presentation Meanwhile, I can talk about how the wrappers for the provisioning could like well, there's a interface in Python that all the provisioners need to Implement it's couple of abstract methods. If you implement those then you have this this wrapper for your provisioner And you can you know repeatedly do the same things to get that resource on some tests Right, so Yeah, it's still waiting on this but Let's say it won't take more than a minute Meanwhile, I can talk about What is a test runner well with up it looks like this you again run a simple command and It will tell you well that it started that the results for the machine will Land in specific directory and it will show you as it's running restrained with parameters are passing to that below you can actually see the commands running and failing in this case on our specific host and it will say you know It will It will say what the result is will give you kind of a high level of human readable summary Again disclaimer This is kind of meant for for us to you for cannot this thing to have a simple And to express it like a description what what happened Also, as I mentioned it creates KCA DB Oh them files and I Can show them really quickly in the in the meantime They look something like this As I said, this is this is for kernel testing so Yeah, it took two minutes two minutes and now I can that is I said I can run tests on that Didn't specify like The idea is this that there as I said there are a couple of parameters depending on what you're doing Though it's the same as I showed in my presentation. It's just have some some more colors using the resource running tests Right back to presentation. So what is the summary of what up this? Well, it's a couple of provisioners wrappers for beaker ADS one-minute tip It has a test runner that uses restraint for kernel testing or other workflow workloads It has the capacity to do incremental test results It is CI compatible with True-true KCA DB It has a pretty well codified Rules for evaluating results. It can rerun tests on specific conditions. For example When there's an infrastructure issue like network not being assessor accessible the machine broken somehow and Yeah fast prototyping with the one minute tape 100 is unit test coverage for the project Okay, so so it's a little rough. Maybe a little alpha in some ways, but You know, it's not one of those projects that simply break down at the drop of the hat So the main part of this how can I leverage this? Well, if you're here and you're listening then Hopefully or someone who can who would want you, you know that target different Provisioners different providers to this wrapper to be really nice to you Have one way to say I want this resource, you know, I want the machine with this many You get by it so from from you know from AVS from Azure from matter it can also be useful to you if You want to target target resources to run some tests or workload workloads It can be very useful to you if you want to get or sent with the results from from a lab You have some kind of special piece of hardware that is somehow isolated perhaps only Accessible to network SSH or something and can be useful to you if you want a simple repeatable workflow Also, it's useful for kernel testing So how will continue while what's going to happen with the project? Well, we have something called data warehouse that's going to soon be populated with this For our kernel develop the developers and maintainers to have easier access to those test results through you like a very nice Ui interface that's the case ID be part where we standardize on KC IDP and then people can you know create their own dashboards Or reports, whatever they want to use So there's some chance of like the missing part that is in This missing in apt is translating hardware requirements into provision or specific trends, you know saying in a simpler way, I Want, you know this this kind of resource I want this many gigabytes of RAM this kind of storage this kind of hardware it is possible to do as I showed you in the XML and demo file, but it's not very user-friendly and there's you obviously like ways to make it better There might be you know some attempts like a transition layers because We've seen this this kind of problem in the world where Certain group of people uses for example something like beaker for you know Provisioning for for running tests for for hardware For hardware inventory and someone else uses like lava and you cannot like you know sent your beaker Your beaker workload to lava or vice versa, right? But there through to this there might be some some ways to do that actually so Other than that, I hope to have like better Documentation better community traction and maybe some improvements to what happens when you want to rerun a test like on a different box or Under different conditions So now it's all the part of this is the end of my presentation here is some space for questions and answers and You know you can ask any question whether to something Related to this or you know if you just just want to For me to clear up something I said because I'm speaking quite quite fast and there was anything you didn't understand And want to clear out then you can ask Thank you. Yeah, actually. I think I would be the one who will ask questions in since I provision Machines on AWS quite regularly and I haven't able to play books for it And I try to catch if I should go instead with your provisioner but I'm not sure Like What is the benefit for go if there is any benefit for me there if I have Which I can as you said I can run it many many times Alright, I I don't think that there's a benefit for you in this specific case because with AVS you set up everything first, you know through those playbooks or God Hope not a manual in the interface and then you do something with it. Well with beaker It's kind of wise versa, but we still kind of needed to unify like both So I don't think there would be too big of a benefit for you there Okay, I just you mentioned AWS case and yes Currently like it has a very simple set up so so you get it can get a couple of AVS machines that are Easily accessible it's it's like for Someone I'd say it would be for some currently it would be for someone who doesn't know AVS wants to try it out somehow to be able to access that so there's a like It's a set up code that prepares something basic for you can can get you any amount of machines with with With Parameters you provide you basically specify an instance, but obviously it cannot know how we want to set up Network between your machines and etc. That's why you have Playbooks and such I Don't see any Questions. I know actually there is one from my peters Split hall. Do you see any opportunities to integrate up to be said to me? I Do I definitely do to answer this very explicitly I You know since it's quite quite a long time I saw that as an opportunity but Basically, I haven't gotten to that. Maybe that's was because I'm Lazy or focused on something else, but yes, I do see some potential there either to Use TMT in some way or provide provide that test runner For a strength to TMT Because it's quite a bit of work to to Handle like restraint if you want some some extra features like the incremental test results, etc. So Yes, I do