diff --git a/go.mod b/go.mod index 26714bd91..74688a8b6 100644 --- a/go.mod +++ b/go.mod @@ -42,9 +42,9 @@ require ( google.golang.org/grpc v1.38.0 gopkg.in/natefinch/lumberjack.v2 v2.0.0 gopkg.in/square/go-jose.v2 v2.2.2 - k8s.io/api v0.0.0-20210707054401-2c49f10e0b15 + k8s.io/api v0.0.0-20210707174547-c7120651ba6c k8s.io/apimachinery v0.0.0-20210701054147-830375057167 - k8s.io/client-go v0.0.0-20210706214629-68cb2ddef93f + k8s.io/client-go v0.0.0-20210707174930-b2678640329d k8s.io/component-base v0.0.0-20210702054709-fddd92849e34 k8s.io/klog/v2 v2.9.0 k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e @@ -55,8 +55,8 @@ require ( ) replace ( - k8s.io/api => k8s.io/api v0.0.0-20210707054401-2c49f10e0b15 + k8s.io/api => k8s.io/api v0.0.0-20210707174547-c7120651ba6c k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20210701054147-830375057167 - k8s.io/client-go => k8s.io/client-go v0.0.0-20210706214629-68cb2ddef93f + k8s.io/client-go => k8s.io/client-go v0.0.0-20210707174930-b2678640329d k8s.io/component-base => k8s.io/component-base v0.0.0-20210702054709-fddd92849e34 ) diff --git a/go.sum b/go.sum index a93e8876d..4389adc2b 100644 --- a/go.sum +++ b/go.sum @@ -779,12 +779,12 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.0.0-20210707054401-2c49f10e0b15 h1:KDL/0Eab3o5BswoTN53Hp0H1QFN8RGD/x2ItzJN9l4g= -k8s.io/api v0.0.0-20210707054401-2c49f10e0b15/go.mod h1:zoURDvOPW5UMFZr2YUU/sStjYnWSPt+x+MM4R94ATgQ= +k8s.io/api v0.0.0-20210707174547-c7120651ba6c h1:fSuqMc1G40Cl6BY7TuYWLdo+wcWUfaWijwWPMGm3hrE= +k8s.io/api v0.0.0-20210707174547-c7120651ba6c/go.mod h1:zoURDvOPW5UMFZr2YUU/sStjYnWSPt+x+MM4R94ATgQ= k8s.io/apimachinery v0.0.0-20210701054147-830375057167 h1:fob/j8+uMBIVvyo+9bG7GvjFSj0LX3RNuSXW+RcUrwo= k8s.io/apimachinery v0.0.0-20210701054147-830375057167/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/client-go v0.0.0-20210706214629-68cb2ddef93f h1:seULy+bqIY8G2Q98h/e3WaQdkgNIIQUqy8MSUP2TReY= -k8s.io/client-go v0.0.0-20210706214629-68cb2ddef93f/go.mod h1:sbkKCOXetW3FaqcSYCG3ghdfOCSOKTGwitXlliklRrc= +k8s.io/client-go v0.0.0-20210707174930-b2678640329d h1:JZpwpZ5mK716hQiKLwGnoABxEbWhFSaM36csnj4mw3M= +k8s.io/client-go v0.0.0-20210707174930-b2678640329d/go.mod h1:sHAZo8Y/PMppsKX6llqj9HPjDT8PM/PYRxWZCCt1zlc= k8s.io/component-base v0.0.0-20210702054709-fddd92849e34 h1:L7kJX0+rX5SJ2ZUaFy8zarcUMW0+2AHkd3gyuIp0ZLM= k8s.io/component-base v0.0.0-20210702054709-fddd92849e34/go.mod h1:KuldLgSPMxWtcVmPn3hcUoWNJqm7HEdVcSID+ZdAB24= k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= diff --git a/pkg/registry/rest/delete.go b/pkg/registry/rest/delete.go index dcb78e4e2..34102690e 100644 --- a/pkg/registry/rest/delete.go +++ b/pkg/registry/rest/delete.go @@ -58,6 +58,8 @@ type GarbageCollectionDeleteStrategy interface { type RESTGracefulDeleteStrategy interface { // CheckGracefulDelete should return true if the object can be gracefully deleted and set // any default values on the DeleteOptions. + // NOTE: if return true, `options.GracePeriodSeconds` must be non-nil (nil will fail), + // that's what tells the deletion how "graceful" to be. CheckGracefulDelete(ctx context.Context, obj runtime.Object, options *metav1.DeleteOptions) bool } @@ -136,9 +138,15 @@ func BeforeDelete(strategy RESTDeleteStrategy, ctx context.Context, obj runtime. return false, true, nil } + // `CheckGracefulDelete` will be implemented by specific strategy if !gracefulStrategy.CheckGracefulDelete(ctx, obj, options) { return false, false, nil } + + if options.GracePeriodSeconds == nil { + return false, false, errors.NewInternalError(fmt.Errorf("options.GracePeriodSeconds should not be nil")) + } + now := metav1.NewTime(metav1.Now().Add(time.Second * time.Duration(*options.GracePeriodSeconds))) objectMeta.SetDeletionTimestamp(&now) objectMeta.SetDeletionGracePeriodSeconds(options.GracePeriodSeconds) @@ -149,6 +157,7 @@ func BeforeDelete(strategy RESTDeleteStrategy, ctx context.Context, obj runtime. if objectMeta.GetGeneration() > 0 { objectMeta.SetGeneration(objectMeta.GetGeneration() + 1) } + return true, false, nil }