Skip to content

Commit d03bb46

Browse files
committed
DeleteGraceful method for deployment added
1 parent ed1e3ff commit d03bb46

File tree

2 files changed

+68
-0
lines changed

2 files changed

+68
-0
lines changed

pkg/deployment/deployment.go

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -484,6 +484,45 @@ func (builder *Builder) Delete() error {
484484
return nil
485485
}
486486

487+
// DeleteGraceful removes a deployment while waiting for specified duration(in seconds)
488+
// the object should be deleted.
489+
func (builder *Builder) DeleteGraceful(gracePeriod *int64) error {
490+
if valid, err := builder.validate(); !valid {
491+
return err
492+
}
493+
494+
if *gracePeriod < int64(0) {
495+
glog.V(100).Infof("gracePeriod(%v) must be non-negative integer", gracePeriod)
496+
497+
return fmt.Errorf("gracePeriod must be non-negative integer")
498+
}
499+
500+
glog.V(100).Infof("Requested DeleteGracePeriod %v seconds", gracePeriod)
501+
502+
glog.V(100).Infof("Deleting deployment %s in namespace %s with %v seconds grace period",
503+
builder.Definition.Name, builder.Definition.Namespace, *gracePeriod)
504+
505+
if !builder.Exists() {
506+
glog.V(100).Infof("Deployment %s in namespace %s does not exist",
507+
builder.Definition.Name, builder.Definition.Namespace)
508+
509+
builder.Object = nil
510+
511+
return nil
512+
}
513+
514+
err := builder.apiClient.Deployments(builder.Definition.Namespace).Delete(
515+
context.TODO(), builder.Definition.Name, metav1.DeleteOptions{GracePeriodSeconds: gracePeriod})
516+
517+
if err != nil {
518+
return err
519+
}
520+
521+
builder.Object = nil
522+
523+
return nil
524+
}
525+
487526
// CreateAndWaitUntilReady creates a deployment in the cluster and waits until the deployment is available.
488527
func (builder *Builder) CreateAndWaitUntilReady(timeout time.Duration) (*Builder, error) {
489528
if valid, err := builder.validate(); !valid {

pkg/deployment/deployment_test.go

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,35 @@ func TestDelete(t *testing.T) {
655655
}
656656
}
657657

658+
func TestDeleteGraceful(t *testing.T) {
659+
generateTestDeployment := func() *appsv1.Deployment {
660+
return &appsv1.Deployment{
661+
ObjectMeta: metav1.ObjectMeta{
662+
Name: "test-name",
663+
Namespace: "test-namespace",
664+
},
665+
Status: appsv1.DeploymentStatus{
666+
Replicas: 1,
667+
ReadyReplicas: 1,
668+
},
669+
}
670+
}
671+
672+
var runtimeObjects []runtime.Object
673+
674+
runtimeObjects = append(runtimeObjects, generateTestDeployment())
675+
676+
testBuilder := buildTestBuilderWithFakeObjects(runtimeObjects)
677+
678+
gracePeriod := new(int64)
679+
680+
*gracePeriod = 3
681+
682+
err := testBuilder.DeleteGraceful(gracePeriod)
683+
684+
assert.Nil(t, err)
685+
}
686+
658687
func TestCreateAndWaitUntilReady(t *testing.T) {
659688
generateTestDeployment := func() *appsv1.Deployment {
660689
return &appsv1.Deployment{

0 commit comments

Comments
 (0)