You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by di...@apache.org on 2026/05/26 00:33:45 UTC
(airavata-custos) 01/02: Adding qos to association
This is an automated email from the ASF dual-hosted git repository.
DImuthuUpe pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/airavata-custos.git
commit a73f07e32ed1e3a88e2068f3d100d3ea3b690055
Author: DImuthuUpe <di...@gmail.com>
AuthorDate: Mon May 25 20:33:12 2026 -0400
Adding qos to association
---
.../SLURM/Association-Mapper/internal/operations/types.go | 6 ++++++
.../internal/subscribers/accountsub_integration_test.go | 6 +++---
.../SLURM/Association-Mapper/internal/subscribers/members.go | 2 ++
.../internal/subscribers/members_integration_test.go | 12 ++++++------
4 files changed, 17 insertions(+), 9 deletions(-)
diff --git a/connectors/SLURM/Association-Mapper/internal/operations/types.go b/connectors/SLURM/Association-Mapper/internal/operations/types.go
index 75aaca6bd..e00e83d3f 100644
--- a/connectors/SLURM/Association-Mapper/internal/operations/types.go
+++ b/connectors/SLURM/Association-Mapper/internal/operations/types.go
@@ -43,6 +43,9 @@ type Association struct {
ParentAccount string `json:"parent_account,omitempty"`
IsDefault *bool `json:"is_default,omitempty"`
ID int64 `json:"id_association,omitempty"`
+ // QoS is the list of QoS names permitted for this association
+ // (e.g. ["normal"]). Marshaled to the top-level `qos` field on the wire.
+ QoS []string `json:"-"`
// Limits is a logical grouping — slurmrestd v0.0.41 actually encodes limits
// in a nested `max` object per-association. We translate between the two
// shapes in Marshal/UnmarshalJSON below.
@@ -108,6 +111,7 @@ type assocWire struct {
ParentAccount string `json:"parent_account,omitempty"`
IsDefault *bool `json:"is_default,omitempty"`
ID int64 `json:"id_association,omitempty"`
+ QoS []string `json:"qos,omitempty"`
Max *assocMax `json:"max,omitempty"`
}
@@ -120,6 +124,7 @@ func (a Association) MarshalJSON() ([]byte, error) {
ParentAccount: a.ParentAccount,
IsDefault: a.IsDefault,
ID: a.ID,
+ QoS: a.QoS,
}
m := &assocMax{}
touched := false
@@ -163,6 +168,7 @@ func (a *Association) UnmarshalJSON(data []byte) error {
a.ParentAccount = w.ParentAccount
a.IsDefault = w.IsDefault
a.ID = w.ID
+ a.QoS = w.QoS
a.Limits = AssocLimits{}
if w.Max != nil {
if w.Max.Jobs != nil && w.Max.Jobs.Per != nil {
diff --git a/connectors/SLURM/Association-Mapper/internal/subscribers/accountsub_integration_test.go b/connectors/SLURM/Association-Mapper/internal/subscribers/accountsub_integration_test.go
index 613d778bc..867f5ff29 100644
--- a/connectors/SLURM/Association-Mapper/internal/subscribers/accountsub_integration_test.go
+++ b/connectors/SLURM/Association-Mapper/internal/subscribers/accountsub_integration_test.go
@@ -219,7 +219,7 @@ func TestSubscribeToComputeAllocationResourceMappingCreation(t *testing.T) {
clusterName := "artisan"
projectID := "project-001"
computeAllocationID := "compute-allocation-001"
- computeAllocationName := "MD Allocation"
+ computeAllocationName := "md-allocation"
partitionName := "compute"
allocationResourceId := "allocation-resource-001"
allocationMappingId := "allocation-mapping-001"
@@ -289,7 +289,7 @@ func TestSubscribeToComputeAllocationResourceMappingWrongClusterCreation(t *test
clusterName := "wrong_cluster_name" // this is intentionally wrong to simulate the error case
projectID := "project-001"
computeAllocationID := "compute-allocation-001"
- computeAllocationName := "MD Allocation"
+ computeAllocationName := "md-allocation"
partitionName := "compute"
allocationResourceId := "allocation-resource-001"
allocationMappingId := "allocation-mapping-001"
@@ -363,7 +363,7 @@ func TestSubscribeToComputeAllocationResourceMappingWrongResourceTypeCreation(t
clusterName := "artisan"
projectID := "project-001"
computeAllocationID := "compute-allocation-001"
- computeAllocationName := "MD Allocation"
+ computeAllocationName := "md-allocation"
partitionName := "compute"
allocationResourceId := "allocation-resource-001"
allocationMappingId := "allocation-mapping-001"
diff --git a/connectors/SLURM/Association-Mapper/internal/subscribers/members.go b/connectors/SLURM/Association-Mapper/internal/subscribers/members.go
index c36cfc453..1d8b294fd 100644
--- a/connectors/SLURM/Association-Mapper/internal/subscribers/members.go
+++ b/connectors/SLURM/Association-Mapper/internal/subscribers/members.go
@@ -62,6 +62,7 @@ func (a *AssociationSubscriber) SubscribeToComputeAllocationMembershipCreation(
Cluster: cluster.Name,
User: csu.LocalUsername,
Partition: resources[0].Name, // TODO: do for each resource
+ QoS: []string{"normal"},
}
err = a.slurmClient.UpsertAssociation(association)
@@ -155,6 +156,7 @@ func (a *AssociationSubscriber) SubscribeToComputeAllocationMembershipResourceOv
Cluster: cluster.Name,
User: csu.LocalUsername,
Partition: allocationResource.Name,
+ QoS: []string{"normal"},
Limits: limits,
}
diff --git a/connectors/SLURM/Association-Mapper/internal/subscribers/members_integration_test.go b/connectors/SLURM/Association-Mapper/internal/subscribers/members_integration_test.go
index 7eae76ea0..3bd90837d 100644
--- a/connectors/SLURM/Association-Mapper/internal/subscribers/members_integration_test.go
+++ b/connectors/SLURM/Association-Mapper/internal/subscribers/members_integration_test.go
@@ -24,7 +24,7 @@ func TestSubscribeToComputeAllocationMembershipCreation(t *testing.T) {
clusterID := "cluster-001"
clusterName := "artisan"
computeAllocationID := "compute-allocation-001"
- computeAllocationName := "MD Allocation"
+ computeAllocationName := "md-allocation"
partitionName := "compute"
allocationResourceId := "allocation-resource-001"
//allocationMappingId := "allocation-mapping-001"
@@ -131,7 +131,7 @@ func TestSubscribeToComputeAllocationMembershipResourceOverrideCreation(t *testi
clusterID := "cluster-001"
clusterName := "artisan"
computeAllocationID := "compute-allocation-001"
- computeAllocationName := "MD Allocation"
+ computeAllocationName := "md-allocation"
partitionName := "compute"
allocationResourceId := "allocation-resource-001"
//allocationMappingId := "allocation-mapping-001"
@@ -152,13 +152,13 @@ func TestSubscribeToComputeAllocationMembershipResourceOverrideCreation(t *testi
GrpTRES: []operations.TRES{
{
Type: "cpu",
- Count: 100,
+ Count: 10,
},
},
GrpTRESMins: []operations.TRES{
{
Type: "cpu",
- Count: 1000,
+ Count: 2,
},
},
},
@@ -227,8 +227,8 @@ func TestSubscribeToComputeAllocationMembershipResourceOverrideCreation(t *testi
ID: "override-001",
ComputeAllocationMembershipID: "membership-001",
ComputeAllocationResourceID: allocationResourceId,
- OverrideResourceAmount: 50,
- OverrideResourceTime: 500,
+ OverrideResourceAmount: 1,
+ OverrideResourceTime: 1,
}
associationSubscriber := NewAssociationSubscriber(client, nil, mockCoreService)