Skip to content

Add LVMS support for Windows VM bootstorm workload - #1275

Draft
arpsharm wants to merge 2 commits into
mainfrom
lvms-support
Draft

arpsharm wants to merge 2 commits into
mainfrom
lvms-support

Conversation

@arpsharm

Copy link
Copy Markdown
Member

Summary

  • Add VM_ACCESS_MODE, EVICTION_STRATEGY, PER_NODE_DV env vars for LVMS storage
  • Per-node source DVs with selected-node annotation for WaitForFirstConsumer
  • Auto-create snapshot-clone StorageClass for fast cloning on LVMS
  • Parameterize eviction strategy and access mode in templates
  • Add CreateLVMS class for automated LVMS operator installation

@openshift-ci

openshift-ci Bot commented Aug 19, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: ec3b1cb3-486c-4723-80e8-70cc47fa5cb6

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@openshift-ci

openshift-ci Bot commented Aug 19, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: arpsharm
Once this PR has been reviewed and has the lgtm label, please assign ebattat for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci

openshift-ci Bot commented Aug 21, 2026

Copy link
Copy Markdown

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@ebattat ebattat left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will it support also ODF ?

self._environment_variables_dict['cdi_source_s3_cred'] = EnvironmentVariables.get_env('CDI_SOURCE_S3_CRED', '')
# Storage class for all VM workloads PVCs (override for clusters with different ODF config)
self._environment_variables_dict['vm_storage_class'] = EnvironmentVariables.get_env('VM_STORAGE_CLASS', 'ocs-storagecluster-ceph-rbd-virtualization')
self._environment_variables_dict['vm_access_mode'] = EnvironmentVariables.get_env('VM_ACCESS_MODE', 'ReadWriteMany')

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need to add it for all the workloads ?

if 'win' in self.__workload_name:
answer['windows_dv.yaml'] = render_yaml_file(dir_path=os.path.join(workload_dir_path, 'internal_data'), yaml_file='windows_dv_template.yaml', environment_variable_dict=render_data)
dv_filename = f'windows_dv_{scale_node}.yaml' if render_data.get('per_node_dv') and scale_node else 'windows_dv.yaml'
answer[dv_filename] = render_yaml_file(dir_path=os.path.join(workload_dir_path, 'internal_data'), yaml_file='windows_dv_template.yaml', environment_variable_dict=render_data)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did u check that other windows workloads work properly ?

create_infra.migrate_infra()
elif 'lvms' == resource:
lvms_version = self.__environment_variables_dict.get('lvms_version', '')
lvms_devices = ast.literal_eval(self.__environment_variables_dict.get('lvms_devices', "['/dev/nvme0n1', '/dev/nvme1n1']"))

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think ilvms_devices should be in environment variables and not hard coded

# odf version
self._environment_variables_dict['odf_version'] = EnvironmentVariables.get_env('ODF_VERSION', '')
# lvms version
self._environment_variables_dict['lvms_version'] = EnvironmentVariables.get_env('LVMS_VERSION', '4.22')

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why u put hard coded lvm 4.22 ?

self._created_sc_name = ''

def _create_snapshot_clone_sc(self):
"""Create a StorageClass with snapshot clone strategy for fast LVMS cloning"""

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will it support LVM and ODF or just LVM ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In progress

Development

Successfully merging this pull request may close these issues.

2 participants