Skip to content

Conversation

@shekharsorot
Copy link
Contributor

Summary

This PR updates the Azure file share deployment for XFStests to use the Provisioned v2 (PV2) billing model by default, with an optional fallback to PV1 for regional compatibility.

Motivation

The PV2 billing model offers significant cost savings for testing workloads:

Aspect PV1 (Legacy) PV2 (New Default)
SKU Premium_LRS PremiumV2_LRS
Minimum Quota 100 GiB 32 GiB
IOPS/Throughput Computed from storage size Independent provisioning
Estimated Cost ~$17.50/mo per share ~$5-6/mo per share

This change reduces file share costs by 65-75% for XFStests workloads.

Changes

lisa/sut_orchestrator/azure/common.py

  • Added provisioned_iops and provisioned_bandwidth_mibps optional parameters to get_or_create_file_share()
  • Updated docstring with PV2 billing model details
  • Dynamic kwargs building - only includes PV2 params when specified

lisa/sut_orchestrator/azure/features.py

  • Added provisioned_iops and provisioned_bandwidth_mibps parameters to create_file_share() method
  • Passes these parameters to get_or_create_file_share()

lisa/microsoft/testsuites/xfstests/xfstesting.py

  • Changed default storage_account_sku from "Premium_LRS" to "PremiumV2_LRS"
  • Changed default file_share_quota_in_gb from 100 to 32
  • Added provisioned_iops, provisioned_bandwidth_mibps, and use_pv1_model parameters
  • Added PV1 fallback logic when use_pv1_model=True
  • Updated docstring with comprehensive PV2/PV1 documentation

Usage

# Default PV2 (recommended - cost efficient)
_deploy_azure_file_share(node, environment, names, azure_file_share)

# PV2 with explicit IOPS/throughput
_deploy_azure_file_share(node, environment, names, azure_file_share,
                         provisioned_iops=3000,
                         provisioned_bandwidth_mibps=125)

# PV1 fallback for regions without PV2 support
_deploy_azure_file_share(node, environment, names, azure_file_share,
                         use_pv1_model=True)

⚠️ Dependency Requirement

This PR requires azure-storage-file-share SDK version >= 12.20.0
This has been updated in the 'pyproject.toml'

The PV2 parameters (provisioned_iops, provisioned_bandwidth_mibps) were added in SDK version 12.20.0 (released 2024-11-13). Ensure your existing environment is updated:

pip install "azure-storage-file-share>=12.20.0"

Testing

  • verified with 'verify_azure_file_share_generic'
  • verified with 'verify_cifs_basic'
  • verified with use_pv1_model=True

References

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds support for Azure Files Provisioned v2 (PV2) billing model to reduce testing costs by 65-75% for XFStests workloads. The PV2 model allows independent provisioning of storage, IOPS, and throughput with a lower minimum quota (32 GiB vs 100 GiB).

  • Updates SDK dependency from azure-storage-file-share ~= 12.18.0 to ~= 12.20.0 to support PV2 parameters
  • Changes default XFStests file share configuration from PV1 (Premium_LRS, 100 GiB) to PV2 (PremiumV2_LRS, 32 GiB)
  • Adds optional PV2-specific parameters (provisioned_iops, provisioned_bandwidth_mibps) with PV1 fallback support

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
pyproject.toml Updates azure-storage-file-share dependency to version 12.20.0 for PV2 support
lisa/sut_orchestrator/azure/common.py Adds PV2 parameters to get_or_create_file_share with dynamic kwargs building and enhanced documentation
lisa/sut_orchestrator/azure/features.py Passes through PV2 parameters from create_file_share to get_or_create_file_share
lisa/microsoft/testsuites/xfstests/xfstesting.py Changes defaults to PV2 model, adds PV1 fallback logic, and updates test case with explicit IOPS/bandwidth values

Key Test Cases:
verify_azure_file_share

Impacted LISA Features:
AzureFileShare

Tested Azure Marketplace Images:

  • canonical 0001-com-ubuntu-server-jammy 22_04-lts-gen2 latest
  • debian debian-12 12-gen2 latest
  • redhat rhel 95_gen2 latest

Removed commented-out code and global variable declarations in before_case method.
@LiliDeng LiliDeng merged commit 3734c94 into microsoft:main Jan 1, 2026
27 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants