-
Notifications
You must be signed in to change notification settings - Fork 23
Description
This is a large task but we need to start somewhere so I am trying to document here what needs to happen.
See #1097 for some background.
The overarching goal is to simplify how we run tests in the bare metal lab (BML) by getting rid of the metal3-dev-env "middle-man".
Metal3-dev-env does three high-level things, and we need at most two of them:
- Setup bootstrap environment, including Ironic, BMO, CAPM3 and IPAM. We need this.
- Create up an emulation environment with VMs to simulate a BML. We do not need this, we have an actual BML!
- Test the components by trying to create a basic cluster and optionally move to it. We need to do more advanced things than this so it is of quite little value here.
What we need to replace is then the bootstrap environment. Metal3-dev-env does a very complicated bootstrap (including optional building of all components from source and matching different versions with each other) that we should not try to replicate here. Instead we should try to do the bare minimum. We need to create a bootstrap cluster, e.g. minikube, and deploy BMO, Ironic, CAPM3 and IPAM. The focus should be on using upstream release artifacts and stable releases as much as possible.
We will eventually need to test "latest main" of some components. They should then be pre-built and handed to the bootstrap system in the same way as stable releases.
Once the bootstrap is done, we need to run tests. These could be BMO or CAPM3 end-to-end tests or something else, e.g. scale tests. If we build the tests configurable enough, it should be possible to point them to the bootstrap environment and provide details about the servers that can be used as BareMetalHosts.
- Implement BML bootstrap - a tool or script for creating a bootstrap cluster with access to the BML. To keep things similar to what we have today, I think we can start by using the BML Jenkins agent and setup minikube there.
- Implement a "quick-start" test. This should just create a cluster, wait for it to become ready and then delete it again. The main thing here is to figure out how and what information should be passed to the test. I.e. BMC details, image to use, etc.