Repository navigation
Add AMLFS update preview command - #10383
Wolfgang De Salvador (wolfgang-desalvador) wants to merge 4 commits into
Conversation
|
Hi Wolfgang De Salvador (@wolfgang-desalvador), |
|
Azure Pipelines: There may be pipelines that require an authorized user to comment /azp run to run. |
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Fix the missing test import and the create-flow early return that can skip Managed Lustre installation.
Get a fresh assessment by requesting another Copilot review.
Review effort: Lite
Findings: 1
What changed in this PR
Adds Azure Managed Lustre lifecycle support to AKS create and update commands.
Changes:
- Adds enable/disable flags, validation, helpers, and lifecycle operations.
- Documents the feature and adds unit coverage.
- Integrates extension installation and removal into AKS workflows.
| File | Summary |
|---|---|
src/aks-preview/README.rst |
Documents Managed Lustre usage. |
src/aks-preview/HISTORY.rst |
Adds release notes. |
src/aks-preview/azext_aks_preview/tests/latest/test_azure_managed_lustre.py |
Adds unit coverage. Critical: call is not imported, causing a NameError. |
src/aks-preview/azext_aks_preview/managed_cluster_decorator.py |
Integrates lifecycle operations. Moderate: an earlier return can skip installation when combined with Azure Container Storage. |
src/aks-preview/azext_aks_preview/custom.py |
Adds command parameters. |
src/aks-preview/azext_aks_preview/azuremanagedlustre/aml_ops.py |
Implements extension installation and removal. |
src/aks-preview/azext_aks_preview/azuremanagedlustre/_validators.py |
Validates feature flags. |
src/aks-preview/azext_aks_preview/azuremanagedlustre/_helpers.py |
Provides extension discovery helpers. |
src/aks-preview/azext_aks_preview/azuremanagedlustre/_consts.py |
Defines extension settings. |
src/aks-preview/azext_aks_preview/azuremanagedlustre/__init__.py |
Initializes the package. |
src/aks-preview/azext_aks_preview/_params.py |
Registers CLI arguments. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| import inspect | ||
| import unittest | ||
| from types import SimpleNamespace | ||
| from unittest.mock import Mock, patch |
|
Please fix CI issues |
|
|
||
| def perform_enable_azure_managed_lustre(cmd, resource_group, cluster_name): | ||
| client, custom_module = get_azure_managed_lustre_extension_client(cmd) | ||
| result = custom_module.create_k8s_extension( |
There was a problem hiding this comment.
[P2] Preserve configuration when re-enabling. An already-installed extension still receives a PUT with empty configuration dictionaries. This can erase custom node tolerations and break driver scheduling. Please skip/reject already-enabled installations, or preserve their settings when updating.
There was a problem hiding this comment.
Follow-up on e7e9763: skipping existing installations now preserves their configuration, addressing the original overwrite concern. However, the new skip-existing branch introduces a related recovery issue: the lookup checks only name/type, so an extension in Failed or Canceled provisioning state is also treated as already enabled. Retrying az aks update --enable-azure-managed-lustre then clears the enable request and skips installation instead of recovering or reporting the failure.
Please only treat a successfully provisioned extension as an already-enabled no-op; otherwise retry while preserving configuration or return an actionable error. Offline regression tests reproduced the skipped installation for both states. Keeping this distinct failure mode here as follow-up to the configuration-preservation fix rather than in a separate thread.
|
|
||
| def set_up_azure_managed_lustre(self, mc: ManagedCluster) -> ManagedCluster: | ||
| self._ensure_mc(mc) | ||
| if self.context.raw_param.get("enable_azure_managed_lustre"): |
There was a problem hiding this comment.
[P2] Validate node compatibility before enabling. Both create and update accept Flatcar, Ubuntu2604, and AzureLinux3 ARM64, but chart 0.6.0 has no matching node DaemonSet for these profiles. Installation can succeed without a usable node driver. Please fail clearly when no pool supports the pinned driver.
There was a problem hiding this comment.
Follow-up on e7e9763: the added validation addresses the original cases above, but two unsupported profiles still pass the compatibility check:
Ubuntu2204onStandard_D2ps_v5: the published 0.6.0 chart's Ubuntu 22.04 node driver is amd64-only.AzureLinuxon ARM64 with AKS 1.32+: this resolves to Azure Linux 3 but bypasses the architecture check because only the explicitAzureLinux3SKU is checked.
Installation can therefore still proceed without a usable CSI node driver. Please resolve OS aliases and validate the supported OS/architecture combinations before accepting a pool. Both remaining cases were reproduced with offline regression tests and verified against the published 0.6.0 chart. Consolidating this follow-up here rather than keeping a separate thread.
There was a problem hiding this comment.
Solved with last push theoretically
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
5f612f5 to
8776fc5
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
835a024 to
4436a69
Compare
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
/azp run |
|
Azure Pipelines: Successfully started running 2 pipeline(s). |

🤖 PR Validation —⚠️ Review suggested
Related command
az aks create --enable-azure-managed-lustreaz aks update --enable-azure-managed-lustreaz aks update --disable-azure-managed-lustreGeneral Guidelines
azdev style aks-previewlocally?python scripts/ci/test_index.py -qlocally?22.0.0b8, with preview metadata enabled.For new extensions:
aks-previewextension.Validation
Live testing completed exclusively using the
devrelease train:--enable-azure-managed-lustresucceeded.az aks updateremoved the extension and driver resources.az aks updatesucceeded.0.6.0, cluster scope, and automatic upgrades disabled.1.35.7.stable.Filesystem mounting and I/O were not tested.
About Extension Publish
src/index.jsonwas not modified.PendinginHISTORY.rst.