Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[GSoC] Unification of Container Disk and Hotplug Features in KubeVirt #256

Open
acardace opened this issue Feb 6, 2024 · 7 comments
Open
Labels
kind/enhancement lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.

Comments

@acardace
Copy link
Member

acardace commented Feb 6, 2024

Title: Unification of Container Disk and Hotplug Features in KubeVirt

Description

Kubevirt [1] boasts several innovative features, with Container Disk [2] and Hotplug [3] of Persistent Volume Claims (PVC) standing out among them. Both functionalities essentially involve finding a disk on the host, binding it to the running Pod, and subsequently to a Virtual Machine. However, the current implementation of these features lacks code uniformity, posing challenges to project maintainability and increasing the likelihood of similar bugs requiring distinct patches.

Expected Outcome

The primary objective of this project is to streamline and unify the implementation of Container Disk and Hotplug features within Kubevirt. By establishing a common interface for interacting with the underlying filesystem, we aim to significantly reduce and simplify the existing codebase.

Project requirements

Project size: 175 hours (Medium)
Project difficulty: Intermediate
Required skills: Kubernetes knowledge and GoLang programming skills
Desirable skills: KubeVirt
Mentors: Antonio Cardace acardace@redhat.com, Luboslav Pivarc lpivarc@redhat.com

Scope of Work

  1. Create a Common Interface:
    • Develop a shared interface that both Container Disk and Hotplug features will utilize for interacting with the underlying filesystem.
    • Ensure the interface accommodates the specific requirements of each feature, providing a unified and standardized approach.
  2. Code Unification:
    • Refactor the existing codebase of Container Disk and Hotplug features to integrate the newly created common interface.
    • Consolidate redundant or similar code segments to enhance maintainability and reduce the likelihood of future bugs.
    • Use Container Disk implementation to implement KernelBoot
  3. Unit Test Updates:
    • Revise and update unit tests for both features to align with the unified codebase.
    • Eliminate the current mocking mechanism, replacing it with a more user-friendly and maintainable solution.
    • Enable testing without filesystem interaction
    • Conduct thorough testing to ensure the robustness and correctness of the unified implementation.

How and where to search for help

First, try to check KubeVirt documentation [4], we cover many topics and you might already find some of the answers. If there is something unclear, feel free to open an issue and a PR. This is already a great start to getting in touch with the process.
For questions related to KubeVirt and not strictly to the GSoc program, try to use the slack channel [5] and the issues [6] as much as possible. Your question can be useful for other people, and the mentors might have a limited amount of time. It is also important to interact with the community as much as possible.

If something doesn't work, try to document the steps and how to reproduce the issue as clearly as possible. The more information you provide, the easiest is for us to help you. If you open an issue in KubeVirt, this already guides you with a template with the kind of information we generally need.

How to start

  • Install KubeVirt and deploy KubeVirt VMs following the getting started guide [7]
  • [Optional] Look for good-first issues [8] and try to solve one to get familiar with the project (if there isn’t a PR linked to it, feel free to pick it)
  • Understand how ContainerDisks and hotplug work. Try to deploy a pod using ContainerDisks and hotplug additional volumes.

How to submit the proposal

The preferred way is to create a google doc and share it with the mentors (slack or email work). If for any reason, google doc doesn't work for you, please share your proposal by email. Early submissions have higher chances as they will be reviewed on multiple iterations and can be further improved.

Links

[1] https://github.com/kubevirt/kubevirt
[2] https://kubevirt.io/user-guide/virtual_machines/disks_and_volumes/#containerdisk
[3] https://kubevirt.io/user-guide/operations/hotplug_volumes/#hotplug-volumes
[4] https://github.com/kubevirt/kubevirt/tree/main/docs
[5] https://kubernetes.slack.com/archives/C0163DT0R8X
[6] https://github.com/kubevirt/kubevirt/issues
[7] https://github.com/kubevirt/kubevirt/blob/main/docs/getting-started.md

@rahulsurwade08
Copy link

Hey @acardace ,
I want to know more about this issue and the requirements for me to get started as part of GSOC.
Thanks

@acardace
Copy link
Member Author

Hey @acardace , I want to know more about this issue and the requirements for me to get started as part of GSOC. Thanks

@rahulsurwade08 I just updated the issue, feel free to reach me out on Slack or via e-mail if there are any questions.

@acardace acardace changed the title DRAFT: [GSoC] Unification of Container Disk and Hotplug Features in KubeVirt [GSoC] Unification of Container Disk and Hotplug Features in KubeVirt Feb 12, 2024
@rahulsurwade08
Copy link

Sure. Thanks @acardace

@maronuu
Copy link

maronuu commented Mar 15, 2024

Hi @acardace, I'm interested in KubeVirt project and this issue as part of GSoC'24.
Thank you for the detailed guidance to get started, I'm trying to explore the issue.

@xpivarc
Copy link
Member

xpivarc commented Apr 1, 2024

Reminder, don't forget to submit a proposal through GSoC by 2nd April - 18:00 UTC.

@aliamerj
Copy link

aliamerj commented Jun 28, 2024

Hi @acardace, @xpivarc,

I missed the GSoC application but would love to work on this project if it's available. I'm somewhat familiar with the codebase and am still contributing to KubVirt.

I think this would be a great chance for me to get more familiar with the codebase.

Thank you,

@kubevirt-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

/lifecycle stale

@kubevirt-bot kubevirt-bot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Sep 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/enhancement lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale.
Projects
None yet
Development

No branches or pull requests

6 participants