Skip to content

Commit

Permalink
Pull RemoveFinalizer() out of Delete() and call it conditionally
Browse files Browse the repository at this point in the history
For now we are conditioning it on the hardcoded value of 'true', but in
the future we want to condition it on the absenece of workloads running
in the compute domain neing deleted.

Signed-off-by: Kevin Klues <[email protected]>
  • Loading branch information
klueska committed Jan 28, 2025
1 parent b7c3182 commit 89e085f
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 22 deletions.
30 changes: 24 additions & 6 deletions cmd/nvidia-dra-imex-controller/computedomain.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,10 @@ func (m *ComputeDomainManager) RemoveFinalizer(ctx context.Context, uid string)
return fmt.Errorf("error retrieving ComputeDomain: %w", err)
}

if cd.GetDeletionTimestamp() == nil {
return fmt.Errorf("attempting to remove finalizer before ComputeDomain marked for deletion")
}

newCD := cd.DeepCopy()
newCD.Finalizers = []string{}
for _, f := range cd.Finalizers {
Expand Down Expand Up @@ -210,20 +214,34 @@ func (m *ComputeDomainManager) onAddOrUpdate(ctx context.Context, obj any) error
klog.Infof("Processing added or updated ComputeDomain: %s/%s", cd.Namespace, cd.Name)

if cd.GetDeletionTimestamp() != nil {
if err := m.deploymentManager.Delete(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting Deployment: %w", err)
if err := m.resourceClaimManager.Delete(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting ResourceClaim: %w", err)
}

if err := m.deviceClassManager.Delete(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting DeviceClass: %w", err)
}

if err := m.resourceClaimManager.Delete(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting ResourceClaim: %w", err)
if err := m.deploymentManager.Delete(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting Deployment: %w", err)
}

if err := m.RemoveFinalizer(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error removing finalizer: %w", err)
if true {
if err := m.resourceClaimManager.RemoveFinalizer(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting ResourceClaim: %w", err)
}

if err := m.deviceClassManager.RemoveFinalizer(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting DeviceClass: %w", err)
}

if err := m.deploymentManager.RemoveFinalizer(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error deleting Deployment: %w", err)
}

if err := m.RemoveFinalizer(ctx, string(cd.UID)); err != nil {
return fmt.Errorf("error removing finalizer: %w", err)
}
}

return nil
Expand Down
18 changes: 14 additions & 4 deletions cmd/nvidia-dra-imex-controller/deployment.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,10 +249,6 @@ func (m *DeploymentManager) Delete(ctx context.Context, cdUID string) error {
return fmt.Errorf("error deleting IMEX channel pool: %w", err)
}

if err := m.RemoveFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on Deployment: %w", err)
}

if d.GetDeletionTimestamp() != nil {
return nil
}
Expand All @@ -266,6 +262,16 @@ func (m *DeploymentManager) Delete(ctx context.Context, cdUID string) error {
}

func (m *DeploymentManager) RemoveFinalizer(ctx context.Context, cdUID string) error {
if err := m.resourceClaimTemplateManager.RemoveFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on ResourceClaimTemplate: %w", err)
}
if err := m.removeFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on Deployment: %w", err)
}
return nil
}

func (m *DeploymentManager) removeFinalizer(ctx context.Context, cdUID string) error {
ds, err := getByComputeDomainUID[*appsv1.Deployment](ctx, m.informer, cdUID)
if err != nil {
return fmt.Errorf("error retrieving Deployment: %w", err)
Expand All @@ -279,6 +285,10 @@ func (m *DeploymentManager) RemoveFinalizer(ctx context.Context, cdUID string) e

d := ds[0]

if d.GetDeletionTimestamp() == nil {
return fmt.Errorf("attempting to remove finalizer before Deployment marked for deletion")
}

newD := d.DeepCopy()
newD.Finalizers = []string{}
for _, f := range d.Finalizers {
Expand Down
8 changes: 4 additions & 4 deletions cmd/nvidia-dra-imex-controller/deviceclass.go
Original file line number Diff line number Diff line change
Expand Up @@ -172,10 +172,6 @@ func (m *DeviceClassManager) Delete(ctx context.Context, cdUID string) error {

dc := dcs[0]

if err := m.RemoveFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on DeviceClass '%s': %w", dc.Name, err)
}

if dc.GetDeletionTimestamp() != nil {
return nil
}
Expand All @@ -202,6 +198,10 @@ func (m *DeviceClassManager) RemoveFinalizer(ctx context.Context, cdUID string)

dc := dcs[0]

if dc.GetDeletionTimestamp() == nil {
return fmt.Errorf("attempting to remove finalizer before DeviceClass marked for deletion")
}

newDC := dc.DeepCopy()
newDC.Finalizers = []string{}
for _, f := range dc.Finalizers {
Expand Down
8 changes: 4 additions & 4 deletions cmd/nvidia-dra-imex-controller/resourceclaim.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,10 +151,6 @@ func (m *ResourceClaimManager) Delete(ctx context.Context, cdUID string) error {
return nil
}

if err := m.RemoveFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on ResourceClaims': %w", err)
}

for _, rc := range rcs {
if rc.GetDeletionTimestamp() != nil {
continue
Expand All @@ -179,6 +175,10 @@ func (m *ResourceClaimManager) RemoveFinalizer(ctx context.Context, cdUID string
}

for _, rc := range rcs {
if rc.GetDeletionTimestamp() == nil {
return fmt.Errorf("attempting to remove finalizer before ResoureClaim marked for deletion")
}

newRC := rc.DeepCopy()
newRC.Finalizers = []string{}
for _, f := range rc.Finalizers {
Expand Down
8 changes: 4 additions & 4 deletions cmd/nvidia-dra-imex-controller/resourceclaimtemplate.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,10 +197,6 @@ func (m *ResourceClaimTemplateManager) Delete(ctx context.Context, cdUID string)

rct := rcts[0]

if err := m.RemoveFinalizer(ctx, cdUID); err != nil {
return fmt.Errorf("error removing finalizer on ResourceClaimTemplate '%s/%s': %w", rct.Namespace, rct.Name, err)
}

if rct.GetDeletionTimestamp() != nil {
return nil
}
Expand All @@ -227,6 +223,10 @@ func (m *ResourceClaimTemplateManager) RemoveFinalizer(ctx context.Context, cdUI

rct := rcts[0]

if rct.GetDeletionTimestamp() == nil {
return fmt.Errorf("attempting to remove finalizer before ResourceClaimTemplate marked for deletion")
}

newRCT := rct.DeepCopy()
newRCT.Finalizers = []string{}
for _, f := range rct.Finalizers {
Expand Down

0 comments on commit 89e085f

Please sign in to comment.