kubevirt / community

Community content
https://kubevirt.io
49 stars 103 forks source link

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

Open acardace opened 7 months ago

acardace commented 7 months ago

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

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 commented 7 months ago

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

acardace commented 7 months ago

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.

rahulsurwade08 commented 7 months ago

Sure. Thanks @acardace

maronuu commented 6 months ago

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 commented 6 months ago

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

aliamerj commented 3 months ago

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 commented 3 days ago

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