Skip to content
This repository was archived by the owner on Jun 2, 2026. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions api/pkg/api/handler/infinibandinterface_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@ func TestGetAllInfiniBandInterface_Handle(t *testing.T) {

ibPartitions := []*cdbm.InfiniBandPartition{}
for i := 0; i < 3; i++ {
ibPartition := testBuildIBPartition(t, dbSession, fmt.Sprintf("test-InfiniBandPartition-%d", i), tn1.Org, st1, tn1, nil, cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibPartition := testBuildIBPartition(t, dbSession, fmt.Sprintf("test-InfiniBandPartition-%d", i), tn1.Org, st1, tn1, nil, cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibPartition)
ibPartitions = append(ibPartitions, ibPartition)
}
Expand Down Expand Up @@ -743,7 +743,7 @@ func TestGetAllInstanceInfiniBandInterfaceHandler_Handle(t *testing.T) {

ibps := []*cdbm.InfiniBandPartition{}
for i := 0; i < 25; i++ {
ibp1 := testBuildIBPartition(t, dbSession, "test-infiniband-partition-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-infiniband-partition-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)
ibps = append(ibps, ibp1)
}
Expand Down
51 changes: 8 additions & 43 deletions api/pkg/api/handler/infinibandpartition.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"github.com/NVIDIA/infra-controller-rest/api/internal/config"
"github.com/NVIDIA/infra-controller-rest/api/pkg/api/handler/util/common"
"github.com/NVIDIA/infra-controller-rest/api/pkg/api/model"
"github.com/NVIDIA/infra-controller-rest/api/pkg/api/model/util"
"github.com/NVIDIA/infra-controller-rest/api/pkg/api/pagination"
sc "github.com/NVIDIA/infra-controller-rest/api/pkg/client/site"
auth "github.com/NVIDIA/infra-controller-rest/auth/pkg/authorization"
Expand All @@ -33,7 +32,6 @@ import (
"github.com/NVIDIA/infra-controller-rest/db/pkg/db/paginator"
swe "github.com/NVIDIA/infra-controller-rest/site-workflow/pkg/error"

cwssaws "github.com/NVIDIA/infra-controller-rest/workflow-schema/schema/site-agent/workflows/v1"
"github.com/NVIDIA/infra-controller-rest/workflow/pkg/queue"
)

Expand Down Expand Up @@ -228,7 +226,7 @@ func (cibph CreateInfiniBandPartitionHandler) Handle(c echo.Context) error {
}

// create the status detail record
newSSD, derr := sdDAO.CreateFromParams(ctx, tx, ibp.ID.String(), *cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusPending),
newSSD, derr := sdDAO.CreateFromParams(ctx, tx, ibp.ID.String(), string(cdbm.InfiniBandPartitionStatusPending),
cdb.GetStrPtr("received InfiniBand Partition creation request, pending"))
if derr != nil {
logger.Error().Err(derr).Msg("error creating Status Detail DB entry")
Expand All @@ -247,34 +245,14 @@ func (cibph CreateInfiniBandPartitionHandler) Handle(c echo.Context) error {
return cutil.NewAPIError(http.StatusInternalServerError, "Failed to retrieve client for Site", nil)
}

createIBPRequest := &cwssaws.IBPartitionCreationRequest{
Id: &cwssaws.IBPartitionId{Value: ibp.ID.String()},
Config: &cwssaws.IBPartitionConfig{
Name: ibp.Name,
TenantOrganizationId: orgTenant.Org,
},
}
createIBPRequest := apiRequest.ToProto(ibp)

workflowOptions := temporalClient.StartWorkflowOptions{
ID: "infiniband-partition-create-" + ibp.ID.String(),
TaskQueue: queue.SiteTaskQueue,
WorkflowExecutionTimeout: cutil.WorkflowExecutionTimeout,
}

// InfiniBand Partition metadata info
metadata := &cwssaws.Metadata{
Name: ibp.Name,
Description: "",
}

if ibp.Description != nil {
metadata.Description = *ibp.Description
}

metadata.Labels = util.ProtobufLabelsFromAPILabels(ibp.Labels)

createIBPRequest.Metadata = metadata

logger.Info().Msg("triggering InfiniBand Partition create workflow")

// Add context deadlines
Expand Down Expand Up @@ -464,7 +442,7 @@ func (gaibph GetAllInfiniBandPartitionHandler) Handle(c echo.Context) error {
statusQuery := c.QueryParam("status")
if statusQuery != "" {
gaibph.tracerSpan.SetAttribute(handlerSpan, attribute.String("status", statusQuery), logger)
_, ok := cdbm.InfiniBandPartitionStatusMap[statusQuery]
_, ok := cdbm.InfiniBandPartitionStatusMap[cdbm.InfiniBandPartitionStatus(statusQuery)]
if !ok {
logger.Warn().Msg(fmt.Sprintf("invalid value in status query: %v", statusQuery))
return cutil.NewAPIErrorResponse(c, http.StatusBadRequest, "Invalid Status value in query", nil)
Expand Down Expand Up @@ -847,19 +825,7 @@ func (uibph UpdateInfiniBandPartitionHandler) Handle(c echo.Context) error {
return cutil.NewAPIError(http.StatusInternalServerError, "Failed to retrieve client for Site", nil)
}

updateIBPRequest := &cwssaws.IBPartitionUpdateRequest{
Id: &cwssaws.IBPartitionId{Value: ibp.ID.String()},
Config: &cwssaws.IBPartitionConfig{
Name: uipb.Name,
TenantOrganizationId: orgTenant.Org,
},
}
metadata := &cwssaws.Metadata{Name: uipb.Name}
if uipb.Description != nil {
metadata.Description = *uipb.Description
}
metadata.Labels = util.ProtobufLabelsFromAPILabels(uipb.Labels)
updateIBPRequest.Metadata = metadata
updateIBPRequest := apiRequest.ToProto(uipb)

workflowOptions := temporalClient.StartWorkflowOptions{
ID: "infiniband-partition-update-" + ibp.ID.String(),
Expand Down Expand Up @@ -1065,20 +1031,21 @@ func (dibph DeleteInfiniBandPartitionHandler) Handle(c echo.Context) error {

err = cdb.WithTx(ctx, dibph.dbSession, func(tx *cdb.Tx) error {
// Update InfiniBand Partition and set status to Deleting
deletingStatus := cdbm.InfiniBandPartitionStatusDeleting
if _, derr := ibpDAO.Update(
ctx,
tx,
cdbm.InfiniBandPartitionUpdateInput{
InfiniBandPartitionID: ibp.ID,
Status: cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusDeleting),
Status: &deletingStatus,
},
); derr != nil {
logger.Error().Err(derr).Msg("error updating InfiniBand Partition in DB")
return cutil.NewAPIError(http.StatusInternalServerError, "Failed to delete InfiniBand Partition, DB error", nil)
}

// Create status detail
if _, derr := sdDAO.CreateFromParams(ctx, tx, ibp.ID.String(), *cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusDeleting),
if _, derr := sdDAO.CreateFromParams(ctx, tx, ibp.ID.String(), string(deletingStatus),
cdb.GetStrPtr("Received request for deletion, pending processing")); derr != nil {
logger.Error().Err(derr).Msg("error creating Status Detail DB entry")
return cutil.NewAPIError(http.StatusInternalServerError, "Failed to create Status Detail for InfiniBand Partition deletion", nil)
Expand All @@ -1091,9 +1058,7 @@ func (dibph DeleteInfiniBandPartitionHandler) Handle(c echo.Context) error {
return cutil.NewAPIError(http.StatusInternalServerError, "Failed to retrieve client for Site", nil)
}

deleteIBPRequest := &cwssaws.IBPartitionDeletionRequest{
Id: &cwssaws.IBPartitionId{Value: ibp.ID.String()},
}
deleteIBPRequest := ibp.ToDeletionRequestProto()

workflowOptions := temporalClient.StartWorkflowOptions{
ID: "infiniband-partition-delete-" + ibp.ID.String(),
Expand Down
10 changes: 5 additions & 5 deletions api/pkg/api/handler/infinibandpartition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -58,9 +58,9 @@ func testBuildAllocation(t *testing.T, dbSession *cdb.Session, st *cdbm.Site, tn
return al
}

func testBuildIBPartition(t *testing.T, dbSession *cdb.Session, name string, org string, site *cdbm.Site, tenant *cdbm.Tenant, controllerIBPartionID *uuid.UUID, status *string, isMissingOnSite bool) *cdbm.InfiniBandPartition {
func testBuildIBPartition(t *testing.T, dbSession *cdb.Session, name string, org string, site *cdbm.Site, tenant *cdbm.Tenant, controllerIBPartionID *uuid.UUID, status *cdbm.InfiniBandPartitionStatus, isMissingOnSite bool) *cdbm.InfiniBandPartition {
if status == nil {
status = cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady)
status = cdb.Ptr(cdbm.InfiniBandPartitionStatusReady)
}
ibp := &cdbm.InfiniBandPartition{
ID: uuid.New(),
Expand Down Expand Up @@ -510,8 +510,8 @@ func TestInfiniBandPartitionHandler_GetAll(t *testing.T) {
},
)
assert.Nil(t, err)
common.TestBuildStatusDetail(t, dbSession, ipb.ID.String(), cdbm.InfiniBandPartitionStatusPending, cdb.GetStrPtr("request received, pending processing"))
common.TestBuildStatusDetail(t, dbSession, ipb.ID.String(), cdbm.InfiniBandPartitionStatusReady, cdb.GetStrPtr("InfiniBand Partition is now ready for use"))
common.TestBuildStatusDetail(t, dbSession, ipb.ID.String(), string(cdbm.InfiniBandPartitionStatusPending), cdb.GetStrPtr("request received, pending processing"))
common.TestBuildStatusDetail(t, dbSession, ipb.ID.String(), string(cdbm.InfiniBandPartitionStatusReady), cdb.GetStrPtr("InfiniBand Partition is now ready for use"))
ibps = append(ibps, *ipb)
}

Expand Down Expand Up @@ -706,7 +706,7 @@ func TestInfiniBandPartitionHandler_GetAll(t *testing.T) {
reqOrgName: tnOrg1,
user: tnu1,
querySiteID: cdb.GetStrPtr(site1.ID.String()),
queryStatus: cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusPending),
queryStatus: cdb.GetTypedStrPtr(cdbm.InfiniBandPartitionStatusPending),
expectedErr: false,
expectedStatus: http.StatusOK,
expectedCnt: paginator.DefaultLimit,
Expand Down
18 changes: 9 additions & 9 deletions api/pkg/api/handler/instance_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -686,7 +686,7 @@ func TestCreateInstanceHandler_Handle(t *testing.T) {
assert.NotNil(t, al1)

// InfiniBand Interface Support
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)

ist1 := testInstanceBuildInstanceType(t, dbSession, ip, "test-instance-type-1", st1, cdbm.InstanceStatusReady)
Expand Down Expand Up @@ -4079,7 +4079,7 @@ func TestUpdateInstanceHandler_Handle(t *testing.T) {
assert.NotNil(t, nsgTenant2Site1)

// InfiniBand Interface Support
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)

ibi1 := testInstanceBuildIBInterface(t, dbSession, inst1, st1, ibp1, 0, true, nil, cdb.GetStrPtr(cdbm.InfiniBandInterfaceStatusReady), false)
Expand All @@ -4090,20 +4090,20 @@ func TestUpdateInstanceHandler_Handle(t *testing.T) {
// Add InfiniBand capability to Instance Type
common.TestBuildMachineCapability(t, dbSession, nil, &ist1.ID, cdbm.MachineCapabilityTypeInfiniBand, "MT28908 Family [ConnectX-6]", nil, nil, cdb.GetStrPtr("Mellanox Technologies"), cdb.GetIntPtr(5), cdb.Ptr(cdbm.MachineCapabilityDeviceType("")), nil)

ibp2 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp2 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp2)

ibp3 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp3 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp3)

ibp4 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp4 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp4)

ibp6 := testBuildIBPartition(t, dbSession, "test-ibp-ibdup-4slot", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp6 := testBuildIBPartition(t, dbSession, "test-ibp-ibdup-4slot", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp6)

// Extra InfiniBand Partitions for updating instance with InfiniBand Interfaces
ibp5 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st2, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp5 := testBuildIBPartition(t, dbSession, "test-ibp-2", tnOrg1, st2, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp5)

// Instance with four READY InfiniBand interfaces — distinct (partition ID, device, device instance) per row;
Expand Down Expand Up @@ -6974,7 +6974,7 @@ func TestGetInstanceHandler_Handle(t *testing.T) {
testUpdateInstance(t, dbSession, inst1)

// InfiniBand Interface Support
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)

ibi1 := testInstanceBuildIBInterface(t, dbSession, inst1, st1, ibp1, 0, false, cdb.GetIntPtr(1), cdb.GetStrPtr(cdbm.InfiniBandInterfaceStatusReady), false)
Expand Down Expand Up @@ -7672,7 +7672,7 @@ func TestGetAllInstanceHandler_Handle(t *testing.T) {
testUpdateInstance(t, dbSession, inst1)

// InfiniBand Interface Support
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)

ibi1 := testInstanceBuildIBInterface(t, dbSession, inst1, st1, ibp1, 0, false, cdb.GetIntPtr(1), cdb.GetStrPtr(cdbm.InfiniBandInterfaceStatusReady), false)
Expand Down
2 changes: 1 addition & 1 deletion api/pkg/api/handler/instancebatch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ func TestBatchCreateInstanceHandler_Handle(t *testing.T) {
assert.NotNil(t, vpcPrefixSite2)

// InfiniBand Partition for testing InfiniBand Interfaces
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-ibp-1", tnOrg, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)

// NVLink Logical Partition for testing NVLink Interfaces
Expand Down
2 changes: 1 addition & 1 deletion api/pkg/api/handler/nvlinkinterface_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,7 @@ func TestGetAllInstanceNVLinkInterfaceHandler_Handle(t *testing.T) {

ibps := []*cdbm.InfiniBandPartition{}
for i := 0; i < 25; i++ {
ibp1 := testBuildIBPartition(t, dbSession, "test-infiniband-partition-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.GetStrPtr(cdbm.InfiniBandPartitionStatusReady), false)
ibp1 := testBuildIBPartition(t, dbSession, "test-infiniband-partition-1", tnOrg1, st1, tn1, cdb.GetUUIDPtr(uuid.New()), cdb.Ptr(cdbm.InfiniBandPartitionStatusReady), false)
assert.NotNil(t, ibp1)
ibps = append(ibps, ibp1)
}
Expand Down
Loading
Loading