Skip to content

Commit

Permalink
Skip inventory configmap if namespace is under deletion (#88)
Browse files Browse the repository at this point in the history
  • Loading branch information
pepov committed Nov 24, 2021
1 parent 04dbff6 commit 477741c
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 10 deletions.
10 changes: 6 additions & 4 deletions pkg/helm/templatereconciler/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -289,11 +289,13 @@ func (rec *HelmReconciler) GetResourceBuilders(parent reconciler.ResourceOwner,

resourceBuilders = append(resourceBuilders, chartResourceBuilders...)
if doInventory {
resourceBuilders = rec.inventory.Append(releaseData.Namespace, releaseData.ReleaseName, parent, resourceBuilders)
if resourceBuilders, err = rec.inventory.Append(releaseData.Namespace, releaseData.ReleaseName, parent, resourceBuilders); err != nil {
return nil, err
}
}
} else {
if doInventory {
resourceBuilders = rec.inventory.Append(releaseData.Namespace, releaseData.ReleaseName, parent, resourceBuilders)
} else if doInventory {
if resourceBuilders, err = rec.inventory.Append(releaseData.Namespace, releaseData.ReleaseName, parent, resourceBuilders); err != nil {
return nil, err
}
}

Expand Down
24 changes: 18 additions & 6 deletions pkg/inventory/inventory.go
Original file line number Diff line number Diff line change
Expand Up @@ -371,12 +371,24 @@ func (c *Inventory) ensureNamespace(namespace string, objects []runtime.Object)
return nil
}

func (i *Inventory) Append(namespace, component string, parent reconciler.ResourceOwner, resourceBuilders []reconciler.ResourceBuilder) []reconciler.ResourceBuilder {
func (i *Inventory) Append(namespace, component string, parent reconciler.ResourceOwner, resourceBuilders []reconciler.ResourceBuilder) ([]reconciler.ResourceBuilder, error) {
ns := &core.Namespace{}
var err error
// get the namespace so that we can see if it's under deletion
// we don't care if the namespace does not exist, we might be preparing to run this for the first time
if err := i.genericClient.Get(context.TODO(), client.ObjectKey{Name: namespace}, ns); client.IgnoreNotFound(err) != nil {
return resourceBuilders, err
}
if objectInventory, err := i.PrepareDesiredObjects(namespace, component, parent, resourceBuilders); err == nil {
err := i.PrepareDeletableObjects()
resourceBuilders = append(resourceBuilders, func() (runtime.Object, reconciler.DesiredState, error) {
return objectInventory, reconciler.StatePresent, err
})
if err := i.PrepareDeletableObjects(); err != nil {
return resourceBuilders, err
}
// do not try to create the inventory when the namespace is being deleted
if ns.GetDeletionTimestamp().IsZero() {
resourceBuilders = append(resourceBuilders, func() (runtime.Object, reconciler.DesiredState, error) {
return objectInventory, reconciler.StatePresent, err
})
}
}
return resourceBuilders
return resourceBuilders, err
}

0 comments on commit 477741c

Please sign in to comment.