From dd02ff78e73118ff260cffafadb2a517e3b315e0 Mon Sep 17 00:00:00 2001 From: edwardsp Date: Tue, 3 Feb 2026 16:50:25 +0000 Subject: [PATCH 1/5] Fix newline at end of enroot.conf.template (#473) enroot fix: add trailing newline to enroot.conf.template The template file was missing a trailing newline after the last line `MELLANOX_VISIBLE_DEVICES all`. This caused the line to not be parsed by enroot, resulting in /dev/infiniband not being mounted in pyxis containers. --- azure-slurm-install/templates/enroot.conf.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azure-slurm-install/templates/enroot.conf.template b/azure-slurm-install/templates/enroot.conf.template index 8a104283..a6a5b284 100644 --- a/azure-slurm-install/templates/enroot.conf.template +++ b/azure-slurm-install/templates/enroot.conf.template @@ -6,4 +6,4 @@ ENROOT_SQUASH_OPTIONS -noI -noD -noF -noX -no-duplicates ENROOT_MOUNT_HOME y ENROOT_RESTRICT_DEV y ENROOT_ROOTFS_WRITABLE y -MELLANOX_VISIBLE_DEVICES all \ No newline at end of file +MELLANOX_VISIBLE_DEVICES all From 445fcef72ebfcaf9d2f00817b0f43cae43bea647 Mon Sep 17 00:00:00 2001 From: ryanhamel Date: Wed, 4 Feb 2026 15:06:13 -0500 Subject: [PATCH 2/5] Fix: ensure enroot.conf ends in a newline (#474) --- azure-slurm-install/templates/enroot.conf.template | 2 ++ 1 file changed, 2 insertions(+) diff --git a/azure-slurm-install/templates/enroot.conf.template b/azure-slurm-install/templates/enroot.conf.template index a6a5b284..a4bf1cfc 100644 --- a/azure-slurm-install/templates/enroot.conf.template +++ b/azure-slurm-install/templates/enroot.conf.template @@ -7,3 +7,5 @@ ENROOT_MOUNT_HOME y ENROOT_RESTRICT_DEV y ENROOT_ROOTFS_WRITABLE y MELLANOX_VISIBLE_DEVICES all +# Trailing comment - this file requires at least one trailing newline after the above + From 265adeb1ac85b6d00891611470f6f8ac99fb4831 Mon Sep 17 00:00:00 2001 From: Azreen Zaman Date: Thu, 5 Feb 2026 18:19:33 -0500 Subject: [PATCH 3/5] no op if enroot.conf does not exist (#475) --- azure-slurm-install/start-services.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/azure-slurm-install/start-services.sh b/azure-slurm-install/start-services.sh index 67bd3459..7d8626b7 100644 --- a/azure-slurm-install/start-services.sh +++ b/azure-slurm-install/start-services.sh @@ -217,6 +217,11 @@ ensure_enroot_dir() { # CONF=/etc/enroot/enroot.conf + # no-op if enroot.conf does not exist + if [ ! -f "$CONF" ]; then + return 0 + fi + # extract ENROOT_TEMP_PATH value ENROOT_TEMP_PATH=$(awk '$1=="ENROOT_TEMP_PATH"{print $2}' "$CONF") From f2ed58d23f87b6fc0ecee15099f5053d7e95b70d Mon Sep 17 00:00:00 2001 From: ryanhamel Date: Thu, 5 Feb 2026 18:20:27 -0500 Subject: [PATCH 4/5] Ignore python3.11+ installations that are missing required packages (#476) Co-authored-by: Aditi Gaur <116667879+aditigaur4@users.noreply.github.com> --- .../scheduler/cluster-init/scripts/00-install.sh | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/specs/scheduler/cluster-init/scripts/00-install.sh b/specs/scheduler/cluster-init/scripts/00-install.sh index ace6cc19..a661d713 100644 --- a/specs/scheduler/cluster-init/scripts/00-install.sh +++ b/specs/scheduler/cluster-init/scripts/00-install.sh @@ -13,13 +13,20 @@ find_python3() { return 0 fi for version in $( seq 11 20 ); do - which python3.$version + which python3.$version > /dev/null 2>/dev/null if [ $? == 0 ]; then - return 0 + python3.$version -m "import yaml, venv" + if [ $? == 0 ]; then + # write to stdout the validated path + which python3.$version + return 0 + else + echo Warning: Found python3.$version but venv and/or yaml are not installed. 1>&2 + fi fi done - echo Could not find python3 version 3.11 >&2 - return 1 + # Quietly return nothing + return 0 } install_python3() { @@ -29,6 +36,7 @@ install_python3() { export PYTHON_BIN return 0 fi + echo "No suitable python3 installation found, beginning installation." >&2 # NOTE: based off of healthagent 00-install.sh, but we have different needs - we don't need the devel/systemd paths. # most likely if healthagent is already installed, this won't be an issue. if [ -f /etc/os-release ]; then From a20581bf06237da3a0b74258f0f00c9b7f939f07 Mon Sep 17 00:00:00 2001 From: ryanhamel Date: Fri, 6 Feb 2026 13:51:34 -0500 Subject: [PATCH 5/5] Bump to version 4.0.6 (#477) --- README.md | 4 ++-- azure-slurm-install/setup.py | 2 +- azure-slurm/setup.py | 2 +- azure-slurm/slurmcc/cli.py | 2 +- project.ini | 4 ++-- specs/default/chef/site-cookbooks/slurm/attributes/default.rb | 2 +- specs/default/chef/site-cookbooks/slurm/metadata.rb | 2 +- 7 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 00d5b25a..bb4b11e7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ CycleCloud Slurm Clusters in Azure This project sets up an auto-scaling Slurm cluster Slurm is a highly configurable open source workload manager. See the [Slurm project site](https://www.schedmd.com/) for an overview. # Table of Contents: -1. [Managing Slurm Clusters in 4.0.5](#managing-slurm-clusters) +1. [Managing Slurm Clusters in 4.0.6](#managing-slurm-clusters) 1. [Making Cluster Changes](#making-cluster-changes) 2. [No longer pre-creating execute nodes](#no-longer-pre-creating-execute-nodes) 3. [Creating additional partitions](#creating-additional-partitions) @@ -36,7 +36,7 @@ Slurm is a highly configurable open source workload manager. See the [Slurm proj 8. [Capturing logs and configuration for troubleshooting](#capturing-logs-and-configuration-data-for-troubleshooting) 6. [Contributing](#contributing) --- -## Managing Slurm Clusters in 4.0.5 +## Managing Slurm Clusters in 4.0.6 ### Making Cluster Changes In CycleCloud, cluster changes can be made using the "Edit" dialog from the cluster page in the GUI or from the CycleCloud CLI. Cluster topology changes, such as new partitions, generally require editing and re-importing the cluster template. This can be applied to live, running clusters as well as terminated clusters. It is also possible to import changes as a new Template for future cluster creation via the GUI. diff --git a/azure-slurm-install/setup.py b/azure-slurm-install/setup.py index e79d61d7..f89adea6 100644 --- a/azure-slurm-install/setup.py +++ b/azure-slurm-install/setup.py @@ -7,7 +7,7 @@ from setuptools.command.test import Command from setuptools.command.test import test as TestCommand # noqa: N812 -__version__ = "4.0.5" +__version__ = "4.0.6" CWD = os.path.dirname(os.path.abspath(__file__)) diff --git a/azure-slurm/setup.py b/azure-slurm/setup.py index b45d1644..6a025df5 100644 --- a/azure-slurm/setup.py +++ b/azure-slurm/setup.py @@ -7,7 +7,7 @@ from setuptools.command.test import Command from setuptools.command.test import test as TestCommand # noqa: N812 -__version__ = "4.0.5" +__version__ = "4.0.6" CWD = os.path.dirname(os.path.abspath(__file__)) diff --git a/azure-slurm/slurmcc/cli.py b/azure-slurm/slurmcc/cli.py index 343e8777..61a8b8e5 100644 --- a/azure-slurm/slurmcc/cli.py +++ b/azure-slurm/slurmcc/cli.py @@ -39,7 +39,7 @@ from . import topology -VERSION = "4.0.5" +VERSION = "4.0.6" def csv_list(x: str) -> List[str]: diff --git a/project.ini b/project.ini index b36f33f0..656ae380 100644 --- a/project.ini +++ b/project.ini @@ -1,11 +1,11 @@ [project] name = slurm label = Slurm -version = 4.0.5 +version = 4.0.6 type = scheduler [blobs] -Files = azure-slurm-pkg-4.0.5.tar.gz, azure-slurm-install-pkg-4.0.5.tar.gz +Files = azure-slurm-pkg-4.0.6.tar.gz, azure-slurm-install-pkg-4.0.6.tar.gz [spec scheduler] run_list = role[slurm_scheduler_role] diff --git a/specs/default/chef/site-cookbooks/slurm/attributes/default.rb b/specs/default/chef/site-cookbooks/slurm/attributes/default.rb index 928cd441..a8b7a74c 100644 --- a/specs/default/chef/site-cookbooks/slurm/attributes/default.rb +++ b/specs/default/chef/site-cookbooks/slurm/attributes/default.rb @@ -1,6 +1,6 @@ # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. -default[:slurm][:autoscale_version] = "4.0.5" +default[:slurm][:autoscale_version] = "4.0.6" default[:slurm][:version] = "23.11.9-1" default[:slurm][:user][:name] = 'slurm' default[:slurm][:cyclecloud_api] = "cyclecloud_api-8.4.1-py2.py3-none-any.whl" diff --git a/specs/default/chef/site-cookbooks/slurm/metadata.rb b/specs/default/chef/site-cookbooks/slurm/metadata.rb index 29132aad..e8642150 100644 --- a/specs/default/chef/site-cookbooks/slurm/metadata.rb +++ b/specs/default/chef/site-cookbooks/slurm/metadata.rb @@ -4,7 +4,7 @@ license 'All Rights Reserved' description 'Installs/Configures slurm' long_description 'Installs/Configures slurm' -version '4.0.5' +version '4.0.6' chef_version '>= 12.1' if respond_to?(:chef_version) %w{ cuser cshared }.each {|c| depends c}