Skip to content

Commit e898d14

Browse files
authored
Merge pull request #3572 from callingmahendra/master
Added support for passing delete options when using kubectlDelete.#3463
2 parents 904df30 + fb3a822 commit e898d14

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

extended/src/main/java/io/kubernetes/client/extended/kubectl/KubectlDelete.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,37 @@
1616
import io.kubernetes.client.extended.kubectl.exception.KubectlException;
1717
import io.kubernetes.client.openapi.ApiException;
1818
import io.kubernetes.client.util.ModelMapper;
19+
import io.kubernetes.client.util.generic.options.DeleteOptions;
1920
import org.apache.commons.lang3.StringUtils;
2021

2122
public class KubectlDelete<ApiType extends KubernetesObject>
2223
extends Kubectl.ResourceBuilder<ApiType, KubectlDelete<ApiType>>
2324
implements Kubectl.Executable<ApiType> {
2425

2526
private boolean ignoreNotFound = false;
27+
private DeleteOptions deleteOptions;
2628

2729
KubectlDelete(Class<ApiType> apiTypeClass) {
2830
super(apiTypeClass);
31+
this.deleteOptions = new DeleteOptions();
2932
}
3033

3134
public KubectlDelete<ApiType> ignoreNotFound(boolean ignore) {
3235
this.ignoreNotFound = ignore;
3336
return this;
3437
}
35-
38+
public KubectlDelete<ApiType> deleteOptions(DeleteOptions deleteOptions) {
39+
this.deleteOptions = deleteOptions;
40+
return this;
41+
}
3642
@Override
3743
public ApiType execute() throws KubectlException {
3844
verifyArguments();
3945
refreshDiscovery();
4046

4147
if (isNamespaced(apiTypeClass)) {
4248
try {
43-
return getGenericApi().delete(namespace, name).throwsApiException().getObject();
49+
return getGenericApi().delete(namespace, name,deleteOptions).throwsApiException().getObject();
4450
} catch (ApiException e) {
4551
if (ignoreNotFound && e.getCode() == 404) {
4652
return null;
@@ -50,7 +56,7 @@ public ApiType execute() throws KubectlException {
5056
}
5157
} else {
5258
try {
53-
return getGenericApi().delete(name).throwsApiException().getObject();
59+
return getGenericApi().delete(name,deleteOptions).throwsApiException().getObject();
5460
} catch (ApiException e) {
5561
if (ignoreNotFound && e.getCode() == 404) {
5662
return null;
@@ -74,5 +80,6 @@ private void verifyArguments() throws KubectlException {
7480
if (null == name) {
7581
throw new KubectlException("missing name argument");
7682
}
83+
7784
}
7885
}

extended/src/test/java/io/kubernetes/client/extended/kubectl/KubectlDeleteTest.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
import io.kubernetes.client.openapi.models.*;
2626
import io.kubernetes.client.util.ClientBuilder;
2727
import io.kubernetes.client.util.ModelMapper;
28+
import io.kubernetes.client.util.generic.options.DeleteOptions;
29+
2830
import java.io.IOException;
2931
import java.util.Objects;
3032

@@ -207,8 +209,14 @@ void kubectlDelete() throws KubectlException, ApiException {
207209
KubectlDelete<V1Job> kubectlDelete = Kubectl.delete(V1Job.class);
208210
kubectlDelete.apiClient(apiClient);
209211
kubectlDelete.namespace("foo").name("bar");
212+
DeleteOptions deleteOptions = new DeleteOptions();
213+
deleteOptions.setPropagationPolicy("Foreground");
214+
kubectlDelete.deleteOptions(deleteOptions);
210215
kubectlDelete.execute();
211-
216+
apiServer.verify(
217+
1,
218+
deleteRequestedFor(urlPathEqualTo("/apis/batch%2Fv1/batch%2Fv1/namespaces/foo/jobs/bar"))
219+
.withRequestBody(equalToJson("{\"propagationPolicy\" : \"Foreground\"}")));
212220
assertThatThrownBy(() -> {
213221
KubectlDelete<V1Job> kubectlDelete2 = Kubectl.delete(V1Job.class);
214222
kubectlDelete2.apiClient(apiClient);

util/src/main/java/io/kubernetes/client/util/generic/GenericKubernetesApi.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1159,7 +1159,7 @@ private CallBuilder makeNamespacedDeleteCallBuilder(
11591159
namespace,
11601160
this.resourcePlural,
11611161
name)
1162-
// TODO: fill/convert the option
1162+
.body(deleteOptions)
11631163
.buildCall(null);
11641164
}
11651165

0 commit comments

Comments
 (0)