Skip to content

Commit e78f053

Browse files
authored
NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl extends ServerSideApplicable (#5073)
* NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl extends ServerSideApplicable * merge into PatchTest * style
1 parent ee38b09 commit e78f053

File tree

5 files changed

+52
-3
lines changed

5 files changed

+52
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
* Fix #5022: adding additional buffering to ExecWatchInputStream
3333
* Fix #5052: add Quantity.fromNumericalAmount, the inverse of getNumericalAmount
3434
* Fix #5080: minimizing debug logs related to the backoff interval
35+
* Fix #5073: `NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl` extends `ServerSideApplicable`
3536

3637
#### Dependency Upgrade
3738
* Fix #5006: Bump BouncyCastle to 1.72

kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ListVisitFromServerWritable.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717

1818
import java.util.List;
1919

20-
public interface ListVisitFromServerWritable<T> extends
21-
DeletableWithOptions, CreateOrReplaceable<List<T>>, FieldValidateable<CreateOrReplaceable<List<T>>> {
20+
public interface ListVisitFromServerWritable<T>
21+
extends DeletableWithOptions,
22+
CreateOrReplaceable<List<T>>,
23+
ServerSideApplicable<List<T>>,
24+
FieldValidateable<CreateOrReplaceable<List<T>>> {
2225

2326
}

kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,4 +332,18 @@ public List<HasMetadata> update() {
332332
return performOperation(Resource::update);
333333
}
334334

335+
@Override
336+
public List<HasMetadata> serverSideApply() {
337+
return performOperation(Resource::serverSideApply);
338+
}
339+
340+
@Override
341+
public ListVisitFromServerGetDeleteRecreateWaitApplicable<HasMetadata> fieldManager(String manager) {
342+
return newInstance(context.withFieldManager(manager));
343+
}
344+
345+
@Override
346+
public ListVisitFromServerGetDeleteRecreateWaitApplicable<HasMetadata> forceConflicts() {
347+
return newInstance(context.withForceConflicts());
348+
}
335349
}

kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/OperationContext.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,11 @@ public <C extends Client> C clientInWriteContext(Class<C> clazz) {
508508
// operationcontext
509509
OperationContext newContext = HasMetadataOperationsImpl.defaultContext(client).withDryRun(getDryRun())
510510
.withGracePeriodSeconds(getGracePeriodSeconds()).withPropagationPolicy(getPropagationPolicy())
511-
.withFieldValidation(this.fieldValidation);
511+
.withFieldValidation(this.fieldValidation).withFieldManager(this.fieldManager);
512+
513+
if (Boolean.TRUE.equals(this.forceConflicts)) {
514+
newContext = newContext.withForceConflicts();
515+
}
512516

513517
// check before setting to prevent flipping the default flag
514518
if (!Objects.equals(getNamespace(), newContext.getNamespace())

kubernetes-client/src/test/java/io/fabric8/kubernetes/client/impl/PatchTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
*/
1616
package io.fabric8.kubernetes.client.impl;
1717

18+
import io.fabric8.kubernetes.api.model.Pod;
1819
import io.fabric8.kubernetes.api.model.PodBuilder;
20+
import io.fabric8.kubernetes.api.model.Service;
21+
import io.fabric8.kubernetes.api.model.ServiceBuilder;
1922
import io.fabric8.kubernetes.client.Config;
2023
import io.fabric8.kubernetes.client.ConfigBuilder;
2124
import io.fabric8.kubernetes.client.KubernetesClient;
@@ -29,6 +32,7 @@
2932
import io.fabric8.kubernetes.client.http.HttpRequest.Builder;
3033
import io.fabric8.kubernetes.client.http.StandardHttpRequest;
3134
import io.fabric8.kubernetes.client.http.TestHttpResponse;
35+
import org.junit.jupiter.api.AfterEach;
3236
import org.junit.jupiter.api.BeforeEach;
3337
import org.junit.jupiter.api.Test;
3438
import org.mockito.ArgumentCaptor;
@@ -71,6 +75,12 @@ public void setUp() throws IOException {
7175
});
7276
}
7377

78+
@AfterEach
79+
public void tearDown() {
80+
kubernetesClient.close();
81+
kubernetesClient = null;
82+
}
83+
7484
@Test
7585
void testJsonPatch() {
7686
// Given
@@ -183,6 +193,23 @@ void testServerSideApplyWithPatchOptions() {
183193
PatchType.SERVER_SIDE_APPLY.getContentType());
184194
}
185195

196+
@Test
197+
void testResourceListServerSideApply() {
198+
// Given
199+
Pod pod = new PodBuilder().withNewMetadata().withName("pod1").withNamespace("default").endMetadata().build();
200+
Service svc = new ServiceBuilder().withNewMetadata().withName("svc1").endMetadata().build();
201+
// When
202+
kubernetesClient.resourceList(pod, svc).inNamespace("ns1").fieldManager("x")
203+
.forceConflicts().serverSideApply();
204+
205+
// Then
206+
verify(mockClient, times(2)).sendAsync(any(), any());
207+
assertRequest(0, "PATCH", "/api/v1/namespaces/ns1/pods/pod1", "fieldManager=x&force=true",
208+
PatchType.SERVER_SIDE_APPLY.getContentType());
209+
assertRequest(1, "PATCH", "/api/v1/namespaces/ns1/services/svc1", "fieldManager=x&force=true",
210+
PatchType.SERVER_SIDE_APPLY.getContentType());
211+
}
212+
186213
private void assertRequest(String method, String url, String queryParam) {
187214
assertRequest(0, method, url, queryParam, null);
188215
}

0 commit comments

Comments
 (0)