From 9717c751204adca1306573e85b7d7aa17d1dcbef Mon Sep 17 00:00:00 2001 From: Sajid Ali Date: Fri, 26 Sep 2025 14:46:59 -0400 Subject: [PATCH] create ResourceAttributes for default cluster modified: Containerfile.debugpy new file: coldfront/plugins/slurm/management/commands/slurm_attr_create.py --- Containerfile.debugpy | 1 + .../management/commands/slurm_attr_create.py | 59 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 coldfront/plugins/slurm/management/commands/slurm_attr_create.py diff --git a/Containerfile.debugpy b/Containerfile.debugpy index 8a0cc378a2..367ebc5ab9 100644 --- a/Containerfile.debugpy +++ b/Containerfile.debugpy @@ -10,6 +10,7 @@ COPY ../../. . RUN uv sync --extra prod --extra dev RUN echo "yes" | uv run manage.py initial_setup +RUN PLUGIN_SLURM=True uv run coldfront slurm_attr_create RUN uv run manage.py load_test_data ENV DEBUG=True diff --git a/coldfront/plugins/slurm/management/commands/slurm_attr_create.py b/coldfront/plugins/slurm/management/commands/slurm_attr_create.py new file mode 100644 index 0000000000..97fd0ac0be --- /dev/null +++ b/coldfront/plugins/slurm/management/commands/slurm_attr_create.py @@ -0,0 +1,59 @@ +import logging + +from django.core.management.base import BaseCommand +from coldfront.core.resource.models import ( + ResourceAttribute, + ResourceAttributeType, + Resource, +) +from coldfront.plugins.slurm.utils import SLURM_CLUSTER_ATTRIBUTE_NAME +from coldfront.core.utils.common import import_from_settings + +GENERAL_RESOURCE_NAME = import_from_settings("GENERAL_RESOURCE_NAME") + +logger = logging.getLogger(__name__) + + +class Command(BaseCommand): + help = "Create ResourceAttribute for default SLURM cluster resousce" + + def handle(self, *args, **options): + logger.setLevel(logging.INFO) + + clusters = Resource.objects.filter(resource_type__name="Cluster") + if clusters.count() != 1: + logger.warning( + "More than one cluster is present, \ + will not set ResourceAttribute" + ) + return + + cluster = clusters[0] + if cluster.name != GENERAL_RESOURCE_NAME: + logger.warning( + f"Cluster is present, but it is {cluster.name},\ + differernt from {GENERAL_RESOURCE_NAME} \ + will not set ResourceAttribute" + ) + return + + _, created = ResourceAttribute.objects.get_or_create( + resource_attribute_type=ResourceAttributeType.objects.filter( + name=SLURM_CLUSTER_ATTRIBUTE_NAME + )[0], + resource=cluster, + value=GENERAL_RESOURCE_NAME, + ) + + if created: + logger.info( + f"Resource Attribute for {GENERAL_RESOURCE_NAME} \ + HPC cluster resource added." + ) + else: + logger.info( + f"ResourceAttribute for {GENERAL_RESOURCE_NAME}\ + HPC cluster resource already available in DB." + ) + + return