---
# System prepended metadata

title: Mantle to start KubeVirt VMs

---

# Mantle to start KubeVirt VMs

## Summary: Support something like kola run -p kubevirt --kubevirt-kubeconfig /path/to/kubeconfig --container=quay.io/fedora/fedora-coreos-kubevirt:stable --build=XYZ 

- Copied in from https://github.com/coreos/fedora-coreos-tracker/issues/1432#issuecomment-1538355053
    - Add support to mantle/kola to start/test kubevirt VMs
    - Add a `kola-kubevirt` pipeline job that will upload the container to the registry in cluster and then run kola tests.
        - this includes figuring out what credentials we can use to push the container and start the VMs
        
---

## TODO list

- Adding a KubeVirt API to /home/gursewak/work/code/coreos-assembler/mantle/platform/api
    - adding the kubevirt platform
        - start an instance with an Ignition config that we created
        - delete an instance
        - networking (this one might be tricky)
            - we use SSH to talk with machines to run the tests
            - we usually assume IP addresses are public
            - for kubevirt I'm not sure how to reach the instances using a "public" IP
            - there might be some code we need to add to expose a public SSHable interface
    - might be able to reference the gangplank code to see what libraries to use for talking to kubernetes/OpenShift and also examples of how to interact with them.
        - https://github.com/coreos/coreos-assembler/blob/main/gangplank/internal/ocp/cosa-pod.go
- Add cmd/ore support for KubeVirt
    - `cmd/ore/kubevirt.go` and `cmd/ore/kubevirt/kubevirt.go`
- Add KubeVirt support in mantle/cmd/kola/kola.go
    - add things like --kubevirt-kubeconfig here
- Add needed options for KubeVirt in mantle/cmd/kola/options.go

---

- In the pipeline job:
    - We will mirror what we do for some other tests (look at kola-openstack.Jenkinsfile) where we grab the image, upload it, test, then delete the image.
        - Image uploading
            - can we use the same credential for image uploading as we do for testing?
            - skopeo cp /path/to/file.ociarchve example.com/fcos:38.20230101.0.1
        - Run the test
        - Delete the image from the registry
    - Do we use the same `fedora-coreos-pipeline` namespace or do we create a new project specifically for kubevirt testing?
        - pros
            - less setup (less credentials to manage)
            - don't have to ask someone for a new namespace (both upstream and downstream)
        - cons
            - pollutes the namespace a bit (we need to make sure VMs don't get left running)