mirror of
https://github.com/k3s-io/kubernetes.git
synced 2026-01-05 15:37:24 +00:00
add conditions for remaining object totals during ns termination
This commit is contained in:
@@ -48,16 +48,22 @@ var (
|
||||
v1.NamespaceDeletionDiscoveryFailure,
|
||||
v1.NamespaceDeletionGVParsingFailure,
|
||||
v1.NamespaceDeletionContentFailure,
|
||||
v1.NamespaceContentRemaining,
|
||||
v1.NamespaceFinalizersRemaining,
|
||||
}
|
||||
okMessages = map[v1.NamespaceConditionType]string{
|
||||
v1.NamespaceDeletionDiscoveryFailure: "All resources successfully discovered",
|
||||
v1.NamespaceDeletionGVParsingFailure: "All legacy kube types successfully parsed",
|
||||
v1.NamespaceDeletionContentFailure: "All content successfully deleted",
|
||||
v1.NamespaceDeletionContentFailure: "All content successfully deleted, may be waiting on finalization",
|
||||
v1.NamespaceContentRemaining: "All content successfully removed",
|
||||
v1.NamespaceFinalizersRemaining: "All content successfully removed",
|
||||
}
|
||||
okReasons = map[v1.NamespaceConditionType]string{
|
||||
v1.NamespaceDeletionDiscoveryFailure: "ResourcesDiscovered",
|
||||
v1.NamespaceDeletionGVParsingFailure: "ParsedGroupVersions",
|
||||
v1.NamespaceDeletionContentFailure: "ContentDeleted",
|
||||
v1.NamespaceContentRemaining: "ContentRemoved",
|
||||
v1.NamespaceFinalizersRemaining: "ContentRemoved",
|
||||
}
|
||||
)
|
||||
|
||||
@@ -92,6 +98,47 @@ func (u *namespaceConditionUpdater) ProcessDiscoverResourcesErr(err error) {
|
||||
|
||||
}
|
||||
|
||||
// ProcessContentTotals may create conditions for NamespaceContentRemaining and NamespaceFinalizersRemaining.
|
||||
func (u *namespaceConditionUpdater) ProcessContentTotals(contentTotals allGVRDeletionMetadata) {
|
||||
if len(contentTotals.gvrToNumRemaining) != 0 {
|
||||
remainingResources := []string{}
|
||||
for gvr, numRemaining := range contentTotals.gvrToNumRemaining {
|
||||
if numRemaining == 0 {
|
||||
continue
|
||||
}
|
||||
remainingResources = append(remainingResources, fmt.Sprintf("%s.%s has %d resource instances", gvr.Resource, gvr.Group, numRemaining))
|
||||
}
|
||||
// sort for stable updates
|
||||
sort.Strings(remainingResources)
|
||||
u.newConditions = append(u.newConditions, v1.NamespaceCondition{
|
||||
Type: v1.NamespaceContentRemaining,
|
||||
Status: v1.ConditionTrue,
|
||||
LastTransitionTime: metav1.Now(),
|
||||
Reason: "SomeResourcesRemain",
|
||||
Message: fmt.Sprintf("Some resources are remaining: %s", strings.Join(remainingResources, ", ")),
|
||||
})
|
||||
}
|
||||
|
||||
if len(contentTotals.finalizersToNumRemaining) != 0 {
|
||||
remainingByFinalizer := []string{}
|
||||
for finalizer, numRemaining := range contentTotals.finalizersToNumRemaining {
|
||||
if numRemaining == 0 {
|
||||
continue
|
||||
}
|
||||
remainingByFinalizer = append(remainingByFinalizer, fmt.Sprintf("%s in %d resource instances", finalizer, numRemaining))
|
||||
}
|
||||
// sort for stable updates
|
||||
sort.Strings(remainingByFinalizer)
|
||||
u.newConditions = append(u.newConditions, v1.NamespaceCondition{
|
||||
Type: v1.NamespaceFinalizersRemaining,
|
||||
Status: v1.ConditionTrue,
|
||||
LastTransitionTime: metav1.Now(),
|
||||
Reason: "SomeFinalizerRemain",
|
||||
Message: fmt.Sprintf("Some finalizers are remaining: %s", strings.Join(remainingByFinalizer, ", ")),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// ProcessDeleteContentErr creates error condition from multiple delete content errors.
|
||||
func (u *namespaceConditionUpdater) ProcessDeleteContentErr(err error) {
|
||||
u.deleteContentErrors = append(u.deleteContentErrors, err)
|
||||
|
||||
Reference in New Issue
Block a user