From 60fd6c701cc9489ea11ce27fc50f68409ded7cfb Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Mon, 28 Nov 2022 10:04:49 -0500 Subject: [PATCH] fix #4014: adding support for build version, and removing the context --- CHANGELOG.md | 1 + .../client/server/mock/BuildTest.java | 14 ++- .../openshift/client/dsl/BuildResource.java | 2 + .../dsl/internal/BuildOperationContext.java | 98 ------------------- .../internal/build/BuildOperationsImpl.java | 92 ++++++----------- 5 files changed, 47 insertions(+), 160 deletions(-) delete mode 100644 openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/BuildOperationContext.java diff --git a/CHANGELOG.md b/CHANGELOG.md index b3ef5f46c11..5c0bce34355 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ #### Improvements * Fix #4355: for exec, attach, upload, and copy operations the container id/name will be validated or chosen prior to the remote call. You may also use the kubectl.kubernetes.io/default-container annotation to specify the default container. * Fix #4530: generalizing the Serialization logic to allow for primitive values and clarifying the type expectations. +* Fix #4014: added support for OpenShift Build log version. #### Dependency Upgrade diff --git a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/BuildTest.java b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/BuildTest.java index 951556a4d96..ac73414c249 100644 --- a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/BuildTest.java +++ b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/BuildTest.java @@ -15,14 +15,16 @@ */ package io.fabric8.openshift.client.server.mock; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.fabric8.openshift.client.OpenShiftClient; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; -@EnableOpenShiftMockClient +@EnableKubernetesMockClient class BuildTest { - OpenShiftMockServer server; + KubernetesMockServer server; OpenShiftClient openShiftClient; @Test @@ -40,4 +42,12 @@ void testLogWithTimestamps() { String log = openShiftClient.builds().inNamespace("ns1").withName("test-build").usingTimestamps().getLog(); assertEquals("test build output", log); } + + @Test + void testLogWithVersion() { + server.expect().withPath("/apis/build.openshift.io/v1/namespaces/ns1/builds/test-build/log?pretty=false&version=2").andReturn(200, "test build output").times(2); + + String log = openShiftClient.builds().inNamespace("ns1").withName("test-build").withVersion(2).getLog(); + assertEquals("test build output", log); + } } diff --git a/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/BuildResource.java b/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/BuildResource.java index 225c64db33a..be5283689a6 100644 --- a/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/BuildResource.java +++ b/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/BuildResource.java @@ -22,4 +22,6 @@ public interface BuildResource extends Resource, TimestampBytesLimitTerminateTimeTailPrettyLoggable { + + TimestampBytesLimitTerminateTimeTailPrettyLoggable withVersion(Integer version); } diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/BuildOperationContext.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/BuildOperationContext.java deleted file mode 100644 index 3a898a63b9a..00000000000 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/BuildOperationContext.java +++ /dev/null @@ -1,98 +0,0 @@ -/** - * Copyright (C) 2015 Red Hat, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package io.fabric8.openshift.client.dsl.internal; - -import io.fabric8.kubernetes.client.dsl.internal.PodOperationContext; - -public class BuildOperationContext { - - private final PodOperationContext podOperationContext; - private String version; - - public BuildOperationContext() { - this.podOperationContext = new PodOperationContext(); - } - - public BuildOperationContext(PodOperationContext podOperationContext, String version) { - this.podOperationContext = podOperationContext; - this.version = version; - } - - public PodOperationContext getPodOperationContext() { - return podOperationContext; - } - - public String getVersion() { - return version; - } - - public boolean isTerminatedStatus() { - return this.podOperationContext.isTerminatedStatus(); - } - - public boolean isTimestamps() { - return this.podOperationContext.isTimestamps(); - } - - public String getSinceTimestamp() { - return this.podOperationContext.getSinceTimestamp(); - } - - public Integer getSinceSeconds() { - return this.podOperationContext.getSinceSeconds(); - } - - public Integer getTailingLines() { - return this.podOperationContext.getTailingLines(); - } - - public boolean isPrettyOutput() { - return this.podOperationContext.isPrettyOutput(); - } - - public Integer getLimitBytes() { - return this.podOperationContext.getLimitBytes(); - } - - public BuildOperationContext withTerminatedStatus(boolean terminatedStatus) { - return new BuildOperationContext(podOperationContext.withTerminatedStatus(terminatedStatus), version); - } - - public BuildOperationContext withTimestamps(boolean timestamps) { - return new BuildOperationContext(podOperationContext.withTimestamps(timestamps), version); - } - - public BuildOperationContext withSinceTimestamp(String sinceTimestamp) { - return new BuildOperationContext(podOperationContext.withSinceTimestamp(sinceTimestamp), version); - } - - public BuildOperationContext withSinceSeconds(Integer sinceSeconds) { - return new BuildOperationContext(podOperationContext.withSinceSeconds(sinceSeconds), version); - } - - public BuildOperationContext withTailingLines(Integer tailingLines) { - return new BuildOperationContext(podOperationContext.withTailingLines(tailingLines), version); - } - - public BuildOperationContext withPrettyOutput(boolean prettyOutput) { - return new BuildOperationContext(podOperationContext.withPrettyOutput(prettyOutput), version); - } - - public BuildOperationContext withLimitBytes(Integer limitBytes) { - return new BuildOperationContext(podOperationContext.withLimitBytes(limitBytes), version); - } - -} diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildOperationsImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildOperationsImpl.java index af0be9b3e5c..30871d9ebaa 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildOperationsImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildOperationsImpl.java @@ -24,16 +24,17 @@ import io.fabric8.kubernetes.client.dsl.PrettyLoggable; import io.fabric8.kubernetes.client.dsl.TailPrettyLoggable; import io.fabric8.kubernetes.client.dsl.TimeTailPrettyLoggable; +import io.fabric8.kubernetes.client.dsl.TimestampBytesLimitTerminateTimeTailPrettyLoggable; import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation; import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperationsImpl; import io.fabric8.kubernetes.client.dsl.internal.LogWatchCallback; import io.fabric8.kubernetes.client.dsl.internal.OperationContext; +import io.fabric8.kubernetes.client.dsl.internal.PodOperationContext; import io.fabric8.kubernetes.client.utils.URLUtils; import io.fabric8.kubernetes.client.utils.internal.PodOperationUtil; import io.fabric8.openshift.api.model.Build; import io.fabric8.openshift.api.model.BuildList; import io.fabric8.openshift.client.dsl.BuildResource; -import io.fabric8.openshift.client.dsl.internal.BuildOperationContext; import java.io.IOException; import java.io.InputStream; @@ -50,69 +51,37 @@ public class BuildOperationsImpl extends HasMetadataOperation T doGetLog(Class type) { @@ -131,7 +100,7 @@ public String getLog() { @Override public String getLog(boolean isPretty) { - return new BuildOperationsImpl(getContext().withPrettyOutput(isPretty), context).getLog(); + return new BuildOperationsImpl(getContext().withPrettyOutput(isPretty), context, version).getLog(); } /** @@ -174,52 +143,55 @@ public LogWatch watchLog(OutputStream out) { @Override public Loggable withLogWaitTimeout(Integer logWaitTimeout) { - BuildOperationsImpl result = newInstance(context); - result.podLogWaitTimeout = logWaitTimeout; - return result; + return new BuildOperationsImpl(getContext().withLogWaitTimeout(logWaitTimeout), context, version); } @Override public Loggable withPrettyOutput() { - return new BuildOperationsImpl(getContext().withPrettyOutput(true), context); + return new BuildOperationsImpl(getContext().withPrettyOutput(true), context, version); } @Override public PrettyLoggable tailingLines(int tailingLines) { - return new BuildOperationsImpl(getContext().withTailingLines(tailingLines), context); + return new BuildOperationsImpl(getContext().withTailingLines(tailingLines), context, version); } @Override public TimeTailPrettyLoggable terminated() { - return new BuildOperationsImpl(getContext().withTerminatedStatus(true), context); + return new BuildOperationsImpl(getContext().withTerminatedStatus(true), context, version); } @Override public TailPrettyLoggable sinceTime(String sinceTimestamp) { - return new BuildOperationsImpl(getContext().withSinceTimestamp(sinceTimestamp), context); + return new BuildOperationsImpl(getContext().withSinceTimestamp(sinceTimestamp), context, version); } @Override public TailPrettyLoggable sinceSeconds(int sinceSeconds) { - return new BuildOperationsImpl(getContext().withSinceSeconds(sinceSeconds), context); + return new BuildOperationsImpl(getContext().withSinceSeconds(sinceSeconds), context, version); } @Override public BytesLimitTerminateTimeTailPrettyLoggable limitBytes(int limitBytes) { - return new BuildOperationsImpl(getContext().withLimitBytes(limitBytes), context); + return new BuildOperationsImpl(getContext().withLimitBytes(limitBytes), context, version); + } + + @Override + public TimestampBytesLimitTerminateTimeTailPrettyLoggable withVersion(Integer version) { + return new BuildOperationsImpl(getContext(), context, version); } @Override public BytesLimitTerminateTimeTailPrettyLoggable usingTimestamps() { - return new BuildOperationsImpl(getContext().withTimestamps(true), context); + return new BuildOperationsImpl(getContext().withTimestamps(true), context, version); } private void waitUntilBuildPodBecomesReady(Build build) { List podOps = PodOperationUtil.getPodOperationsForController(context, - buildOperationContext.getPodOperationContext(), build.getMetadata().getUid(), + operationContext, build.getMetadata().getUid(), getBuildPodLabels(build)); - waitForBuildPodToBecomeReady(podOps, podLogWaitTimeout != null ? podLogWaitTimeout : DEFAULT_POD_LOG_WAIT_TIMEOUT); + waitForBuildPodToBecomeReady(podOps, operationContext.getLogWaitTimeout() != null ? operationContext.getLogWaitTimeout() : DEFAULT_POD_LOG_WAIT_TIMEOUT); } private static void waitForBuildPodToBecomeReady(List podOps, Integer podLogWaitTimeout) {