When spec.RestoreStatus is empty, don't restore status
Signed-off-by: Scott Seago <sseago@redhat.com>pull/5015/head
parent
8c2a75eea5
commit
5dbc98e679
|
@ -0,0 +1 @@
|
||||||
|
When spec.RestoreStatus is empty, don't restore status
|
|
@ -207,11 +207,8 @@ func (kr *kubernetesRestorer) RestoreWithResolvers(
|
||||||
)
|
)
|
||||||
|
|
||||||
// Get resource status includes-excludes. Defaults to excluding all resources
|
// Get resource status includes-excludes. Defaults to excluding all resources
|
||||||
restoreStatusIncludesExcludes := collections.GetResourceIncludesExcludes(
|
var restoreStatusIncludesExcludes *collections.IncludesExcludes
|
||||||
kr.discoveryHelper,
|
|
||||||
[]string{},
|
|
||||||
[]string{"*"},
|
|
||||||
)
|
|
||||||
if req.Restore.Spec.RestoreStatus != nil {
|
if req.Restore.Spec.RestoreStatus != nil {
|
||||||
restoreStatusIncludesExcludes = collections.GetResourceIncludesExcludes(
|
restoreStatusIncludesExcludes = collections.GetResourceIncludesExcludes(
|
||||||
kr.discoveryHelper,
|
kr.discoveryHelper,
|
||||||
|
@ -1362,13 +1359,14 @@ func (ctx *restoreContext) restoreItem(obj *unstructured.Unstructured, groupReso
|
||||||
return warnings, errs
|
return warnings, errs
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldRestoreStatus := ctx.resourceStatusIncludesExcludes.ShouldInclude(groupResource.String())
|
shouldRestoreStatus := ctx.resourceStatusIncludesExcludes != nil && ctx.resourceStatusIncludesExcludes.ShouldInclude(groupResource.String())
|
||||||
if shouldRestoreStatus && statusFieldErr != nil {
|
if shouldRestoreStatus && statusFieldErr != nil {
|
||||||
err := fmt.Errorf("could not get status to be restored %s: %v", kube.NamespaceAndName(obj), statusFieldErr)
|
err := fmt.Errorf("could not get status to be restored %s: %v", kube.NamespaceAndName(obj), statusFieldErr)
|
||||||
ctx.log.Errorf(err.Error())
|
ctx.log.Errorf(err.Error())
|
||||||
errs.Add(namespace, err)
|
errs.Add(namespace, err)
|
||||||
return warnings, errs
|
return warnings, errs
|
||||||
}
|
}
|
||||||
|
ctx.log.Debugf("status field for %s: exists: %v, should restore: %v", groupResource, statusFieldExists, shouldRestoreStatus)
|
||||||
// if it should restore status, run a UpdateStatus
|
// if it should restore status, run a UpdateStatus
|
||||||
if statusFieldExists && shouldRestoreStatus {
|
if statusFieldExists && shouldRestoreStatus {
|
||||||
if err := unstructured.SetNestedField(obj.Object, objStatus, "status"); err != nil {
|
if err := unstructured.SetNestedField(obj.Object, objStatus, "status"); err != nil {
|
||||||
|
@ -1379,6 +1377,7 @@ func (ctx *restoreContext) restoreItem(obj *unstructured.Unstructured, groupReso
|
||||||
obj.SetResourceVersion(createdObj.GetResourceVersion())
|
obj.SetResourceVersion(createdObj.GetResourceVersion())
|
||||||
updated, err := resourceClient.UpdateStatus(obj, metav1.UpdateOptions{})
|
updated, err := resourceClient.UpdateStatus(obj, metav1.UpdateOptions{})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
ctx.log.Infof("status field update failed %s: %v", kube.NamespaceAndName(obj), err)
|
||||||
warnings.Add(namespace, err)
|
warnings.Add(namespace, err)
|
||||||
} else {
|
} else {
|
||||||
createdObj = updated
|
createdObj = updated
|
||||||
|
|
Loading…
Reference in New Issue