From b8f6fb4444d56cf440c55e0275ba63c399d7fd1f Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Thu, 8 Dec 2022 10:58:38 -0500 Subject: [PATCH] Fix #3972: removing the need for parameter processing in Serialization The methods accepting parameters have been deprecated Support for Parameterizable has been removed - it should have been rarely used. --- CHANGELOG.md | 1 + .../kubernetes/client/KubernetesClient.java | 5 +- .../client/KubernetesClientBuilder.java | 4 +- .../NamespacedKubernetesClientAdapter.java | 5 +- .../client/dsl/ParameterMixedOperation.java | 28 --------- ...ServerGetDeleteRecreateWaitApplicable.java | 23 ------- .../client/dsl/Parameterizable.java | 23 ------- .../kubernetes/client/utils/IOHelpers.java | 6 +- .../client/utils/Serialization.java | 62 +++++++++++-------- ...ializationSingleDocumentUnmarshalTest.java | 5 +- .../client/dsl/internal/BaseOperation.java | 2 +- ...hDeleteRecreateWaitApplicableListImpl.java | 13 +--- .../client/dsl/internal/OperationSupport.java | 41 +++--------- .../internal/core/v1/PodOperationsImpl.java | 3 - .../client/impl/KubernetesClientImpl.java | 5 +- .../client/impl/KubernetesClientImplTest.java | 4 +- .../java/io/fabric8/openshift/TemplateIT.java | 3 - .../client/mock/ClusterRoleTest.java | 4 +- .../server/mock/LoadAsTemplateTest.java | 15 ++--- .../client/server/mock/TemplateTest.java | 23 +++---- .../src/test/resources/parameters.yml | 1 + .../resources/template-with-json-params.yml | 3 + .../NamespacedOpenShiftClientAdapter.java | 3 +- .../openshift/client/OpenShiftClient.java | 2 +- .../build/BuildConfigOperationsImpl.java | 2 +- .../internal/core/TemplateOperationsImpl.java | 39 ++++-------- .../client/impl/OpenShiftClientImpl.java | 8 +-- 27 files changed, 99 insertions(+), 234 deletions(-) delete mode 100644 kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterMixedOperation.java delete mode 100644 kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable.java delete mode 100644 kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/Parameterizable.java diff --git a/CHANGELOG.md b/CHANGELOG.md index e5eaf45fa9..6df2a34947 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ * Fix #4515: files located at the root of jars named model.properties, e.g. core.properties, have been removed * Fix #4579: the implicit registration of resource and list types that happens when using the resource(class) methods has been removed. This makes the behavior of the client more predictable as that was an undocumented side-effect. If you expect to see instances of a custom type from an untyped api call - typically KubernetesClient.load, KubernetesClient.resourceList, KubernetesClient.resource(InputStream|String), then you must either create a META-INF/services/io.fabric8.kubernetes.api.model.KubernetesResource file (see above #3923), or make calls to KubernetesDeserializer.registerCustomKind - however since KubernetesDeserializer is an internal class that mechanism is not preferred. * Fix #4597: remove the deprecated support for `javax.validation.constraints.NotNull` in the `crd-generator`, to mark a property as `required` it needs to be annotated with `io.fabric8.generator.annotation.Required` +* Fix #3973: removed support for Parameterizable - that was only needed as a workaround for non-string parameters. You should instead include those parameter values in the map passed to processLocally. ### 6.2.0 (2022-10-20) diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java index 6d2f84ab98..48193484d0 100644 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java +++ b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClient.java @@ -75,7 +75,6 @@ import io.fabric8.kubernetes.client.dsl.NamespaceableResource; import io.fabric8.kubernetes.client.dsl.NetworkAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.PodResource; import io.fabric8.kubernetes.client.dsl.PolicyAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.RbacAPIGroupDSL; @@ -291,7 +290,7 @@ MixedOperation load(InputStream is); + NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load(InputStream is); /** * Load a Kubernetes list object @@ -299,7 +298,7 @@ MixedOperation resourceList(String s); + NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s); /** * KubernetesResourceList operations diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClientBuilder.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClientBuilder.java index d0c952a993..fd34ae75af 100644 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClientBuilder.java +++ b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/KubernetesClientBuilder.java @@ -98,12 +98,12 @@ public KubernetesClientBuilder withConfig(Config config) { } public KubernetesClientBuilder withConfig(String config) { - this.config = Serialization.unmarshal(config); + this.config = Serialization.unmarshal(config, Config.class); return this; } public KubernetesClientBuilder withConfig(InputStream config) { - this.config = Serialization.unmarshal(config); + this.config = Serialization.unmarshal(config, Config.class); return this; } diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/NamespacedKubernetesClientAdapter.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/NamespacedKubernetesClientAdapter.java index 7bd8982778..b2172eff0f 100644 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/NamespacedKubernetesClientAdapter.java +++ b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/NamespacedKubernetesClientAdapter.java @@ -76,7 +76,6 @@ import io.fabric8.kubernetes.client.dsl.NamespaceableResource; import io.fabric8.kubernetes.client.dsl.NetworkAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.PodResource; import io.fabric8.kubernetes.client.dsl.PolicyAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.RbacAPIGroupDSL; @@ -248,12 +247,12 @@ public NonNamespaceOperation load(InputStream is) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load(InputStream is) { return getClient().load(is); } @Override - public ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { return getClient().resourceList(s); } diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterMixedOperation.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterMixedOperation.java deleted file mode 100644 index 3213b4c47b..0000000000 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterMixedOperation.java +++ /dev/null @@ -1,28 +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.kubernetes.client.dsl; - -/** - * A {@link Parameterizable} {@link MixedOperation} - * - * @param The Kubernetes resource type. - * @param The list variant of the Kubernetes resource type. - * @param The resource operations. - */ -public interface ParameterMixedOperation> - extends MixedOperation, Parameterizable> { -} diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable.java deleted file mode 100644 index f8c39a58fb..0000000000 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable.java +++ /dev/null @@ -1,23 +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.kubernetes.client.dsl; - -public interface ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable - extends NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable, - Parameterizable> { - -} diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/Parameterizable.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/Parameterizable.java deleted file mode 100644 index 3dfdd74d08..0000000000 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/dsl/Parameterizable.java +++ /dev/null @@ -1,23 +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.kubernetes.client.dsl; - -import java.util.Map; - -public interface Parameterizable { - - T withParameters(Map parameters); -} diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/IOHelpers.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/IOHelpers.java index e51978245a..a700165c9d 100644 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/IOHelpers.java +++ b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/IOHelpers.java @@ -75,11 +75,7 @@ public static boolean isJSONValid(String json) { } public static String convertYamlToJson(String yaml) throws IOException { - ObjectMapper yamlReader = Serialization.yamlMapper(); - Object obj = yamlReader.readValue(yaml, Object.class); - - ObjectMapper jsonWriter = Serialization.jsonMapper(); - return jsonWriter.writeValueAsString(obj); + return Serialization.asJson(Serialization.unmarshal(yaml)); } public static String convertToJson(String jsonOrYaml) throws IOException { diff --git a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/Serialization.java b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/Serialization.java index a5ffeb936b..d6df351846 100644 --- a/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/Serialization.java +++ b/kubernetes-client-api/src/main/java/io/fabric8/kubernetes/client/utils/Serialization.java @@ -35,7 +35,6 @@ import java.io.BufferedInputStream; import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Type; @@ -180,17 +179,13 @@ public static T unmarshal(InputStream is) { * @param parameters A {@link Map} with parameters for placeholder substitution. * @param The target type. * @return returns returns de-serialized object + * + * @deprecated */ + @Deprecated @SuppressWarnings("unchecked") public static T unmarshal(InputStream is, Map parameters) { - String specFile = readSpecFileFromInputStream(is); - if (containsMultipleDocuments(specFile)) { - return (T) getKubernetesResourceList(parameters, specFile); - } else if (specFile.contains(DOCUMENT_DELIMITER)) { - specFile = specFile.replaceAll("^---([ \\t].*?)?\\r?\\n", ""); - specFile = specFile.replaceAll("\\n---([ \\t].*?)?\\r?\\n?$", "\n"); - } - return unmarshal(new ByteArrayInputStream(specFile.getBytes()), JSON_MAPPER, parameters); + return unmarshal(is, JSON_MAPPER, parameters); } /** @@ -217,9 +212,28 @@ public static T unmarshal(InputStream is, ObjectMapper mapper) { * @param parameters A {@link Map} with parameters for placeholder substitution. * @param The target type. * @return returns de-serialized object + * + * @deprecated */ + @Deprecated public static T unmarshal(InputStream is, ObjectMapper mapper, Map parameters) { - return unmarshal(is, mapper, new TypeReference() { + // TODO: this defeats the purpose of accepting a stream... + // also it's not well documented which Serialization methods are aware of input that can contain + // multiple docs + String specFile; + try { + specFile = IOHelpers.readFully(is); + } catch (IOException e1) { + throw new RuntimeException("Could not read stream"); + } + if (containsMultipleDocuments(specFile)) { + return (T) getKubernetesResourceList(Collections.emptyMap(), specFile); + } else if (specFile.contains(DOCUMENT_DELIMITER)) { + specFile = specFile.replaceAll("^---([ \\t].*?)?\\r?\\n", ""); + specFile = specFile.replaceAll("\\n---([ \\t].*?)?\\r?\\n?$", "\n"); + } + + return unmarshal(new ByteArrayInputStream(specFile.getBytes(StandardCharsets.UTF_8)), mapper, new TypeReference() { @Override public Type getType() { return KubernetesResource.class; @@ -228,9 +242,8 @@ public Type getType() { } private static T unmarshal(InputStream is, ObjectMapper mapper, TypeReference type, Map parameters) { - try ( - InputStream wrapped = parameters != null && !parameters.isEmpty() ? ReplaceValueStream.replaceValues(is, parameters) - : is; + try (InputStream wrapped = parameters != null && !parameters.isEmpty() ? ReplaceValueStream.replaceValues(is, parameters) + : is; BufferedInputStream bis = new BufferedInputStream(wrapped)) { bis.mark(-1); int intch; @@ -296,7 +309,10 @@ public static T unmarshal(String str, final Class type) { * @param parameters A hashmap containing parameters * * @return returns de-serialized object + * + * @deprecated */ + @Deprecated public static T unmarshal(String str, final Class type, Map parameters) { try (InputStream is = new ByteArrayInputStream(str.getBytes(StandardCharsets.UTF_8))) { return unmarshal(is, new TypeReference() { @@ -330,7 +346,10 @@ public static T unmarshal(InputStream is, final Class type) { * @param parameters A {@link Map} with parameters for placeholder substitution. * @param Template argument denoting type * @return returns de-serialized object + * + * @deprecated */ + @Deprecated public static T unmarshal(InputStream is, final Class type, Map parameters) { return unmarshal(is, new TypeReference() { @Override @@ -361,7 +380,10 @@ public static T unmarshal(InputStream is, TypeReference type) { * @param Template argument denoting type * * @return returns de-serialized object + * + * @deprecated */ + @Deprecated public static T unmarshal(InputStream is, TypeReference type, Map parameters) { return unmarshal(is, JSON_MAPPER, type, parameters); } @@ -401,20 +423,6 @@ private static boolean validate(String document) { return !document.isEmpty() && keyValueMatcher.find(); } - private static String readSpecFileFromInputStream(InputStream inputStream) { - ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); - byte[] buffer = new byte[1024]; - int length; - try { - while ((length = inputStream.read(buffer)) != -1) { - outputStream.write(buffer, 0, length); - } - return outputStream.toString(); - } catch (IOException e) { - throw new RuntimeException("Unable to read InputStream." + e); - } - } - /** * Create a copy of the resource via serialization. * diff --git a/kubernetes-client-api/src/test/java/io/fabric8/kubernetes/client/utils/SerializationSingleDocumentUnmarshalTest.java b/kubernetes-client-api/src/test/java/io/fabric8/kubernetes/client/utils/SerializationSingleDocumentUnmarshalTest.java index d8bf77536e..936a85fa64 100644 --- a/kubernetes-client-api/src/test/java/io/fabric8/kubernetes/client/utils/SerializationSingleDocumentUnmarshalTest.java +++ b/kubernetes-client-api/src/test/java/io/fabric8/kubernetes/client/utils/SerializationSingleDocumentUnmarshalTest.java @@ -21,8 +21,6 @@ import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import java.util.Collections; - import static org.assertj.core.api.Assertions.assertThat; class SerializationSingleDocumentUnmarshalTest { @@ -36,8 +34,7 @@ class SerializationSingleDocumentUnmarshalTest { void unmarshalWithSingleDocumentWithDocumentDelimiterShouldReturnKubernetesResource(String arg) { // When final KubernetesResource result = Serialization.unmarshal( - SerializationTest.class.getResourceAsStream(String.format("/serialization/%s", arg)), - Collections.emptyMap()); + SerializationTest.class.getResourceAsStream(String.format("/serialization/%s", arg))); // Then assertThat(result) .asInstanceOf(InstanceOfAssertFactories.type(Service.class)) diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/BaseOperation.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/BaseOperation.java index 1e3d982da6..2778815712 100755 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/BaseOperation.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/BaseOperation.java @@ -402,7 +402,7 @@ public Type getType() { return refinedType; } }; - CompletableFuture futureAnswer = handleResponse(httpClient, requestBuilder, listTypeReference, getParameters()); + CompletableFuture futureAnswer = handleResponse(httpClient, requestBuilder, listTypeReference); return futureAnswer.thenApply(l -> { updateApiVersion(l); return l; diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java index b743b34156..2e42e16a61 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java @@ -33,7 +33,6 @@ import io.fabric8.kubernetes.client.dsl.ListVisitFromServerWritable; import io.fabric8.kubernetes.client.dsl.NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.NamespaceableResource; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.Resource; import io.fabric8.kubernetes.client.dsl.Waitable; import io.fabric8.kubernetes.client.readiness.Readiness; @@ -47,7 +46,6 @@ import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Map; import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; @@ -59,7 +57,7 @@ import java.util.stream.Stream; public class NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl - implements ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable, + implements NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable, Waitable, HasMetadata> { private static final Logger LOGGER = LoggerFactory @@ -86,7 +84,7 @@ List getItems() { Object item = context.getItem(); if (item instanceof InputStream) { - item = Serialization.unmarshal((InputStream) item, Collections.emptyMap()); + item = Serialization.unmarshal((InputStream) item); context = context.withItem(item); // late realization of the inputstream } @@ -174,13 +172,6 @@ private static void logAsNotReady(Throwable t, HasMetadata meta) { LOGGER.debug("The error stack trace:", t); } - @Override - public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable withParameters( - Map parameters) { - Object item = Serialization.unmarshal((InputStream) context.getItem(), parameters); - return newInstance(context.withItem(item)); - } - @Override public ListVisitFromServerWritable dryRun(boolean isDryRun) { return newInstance(this.context.withDryRun(isDryRun)); diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/OperationSupport.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/OperationSupport.java index da11931415..71964f3acf 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/OperationSupport.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/OperationSupport.java @@ -363,7 +363,7 @@ protected T handleUpdate(T updated, Class type, boolean status) throws IO HttpRequest.Builder requestBuilder = httpClient.newHttpRequestBuilder() .put(JSON, JSON_MAPPER.writeValueAsString(updated)) .url(getResourceURLForWriteOperation(getResourceUrl(checkNamespace(updated), checkName(updated), status))); - return handleResponse(requestBuilder, type, getParameters()); + return handleResponse(requestBuilder, type); } /** @@ -477,13 +477,9 @@ protected Status handleDeploymentRollback(String resourceUrl, DeploymentRollback * @throws InterruptedException Interrupted Exception * @throws IOException IOException */ - protected T handleGet(URL resourceUrl, Class type) throws InterruptedException, IOException { + protected T handleGet(URL resourceUrl, Class type) throws IOException { HttpRequest.Builder requestBuilder = httpClient.newHttpRequestBuilder().url(resourceUrl); - return handleResponse(requestBuilder, type, getParameters()); - } - - protected Map getParameters() { - return Collections.emptyMap(); + return handleResponse(requestBuilder, type); } protected T handleApproveOrDeny(T csr, Class type) throws IOException, InterruptedException { @@ -540,39 +536,23 @@ protected T waitForResult(CompletableFuture future) throws IOException { } /** - * Send an http request and handle the response. - * - * @param requestBuilder Request Builder object - * @param type type of resource - * @param template argument provided - * - * @return Returns a de-serialized object as api server response of provided type. - * @throws InterruptedException Interrupted Exception - * @throws IOException IOException - */ - protected T handleResponse(HttpRequest.Builder requestBuilder, Class type) throws InterruptedException, IOException { - return handleResponse(requestBuilder, type, getParameters()); - } - - /** - * Send an http request and handle the response, optionally performing placeholder substitution to the response. + * Send an http request and handle the response * * @param requestBuilder request builder * @param type type of object - * @param parameters a hashmap containing parameters * @param template argument provided * * @return Returns a de-serialized object as api server response of provided type. * @throws IOException IOException */ - private T handleResponse(HttpRequest.Builder requestBuilder, Class type, Map parameters) + protected T handleResponse(HttpRequest.Builder requestBuilder, Class type) throws IOException { return waitForResult(handleResponse(httpClient, requestBuilder, new TypeReference() { @Override public Type getType() { return type; } - }, parameters)); + })); } /** @@ -581,14 +561,12 @@ public Type getType() { * @param client the client * @param requestBuilder Request builder * @param type Type of object provided - * @param parameters A hashmap containing parameters * @param Template argument provided * * @return Returns a de-serialized object as api server response of provided type. */ protected CompletableFuture handleResponse(HttpClient client, HttpRequest.Builder requestBuilder, - TypeReference type, - Map parameters) { + TypeReference type) { VersionUsageUtils.log(this.resourceT, this.apiGroupVersion); HttpRequest request = requestBuilder.build(); CompletableFuture> futureResponse = new CompletableFuture<>(); @@ -600,7 +578,7 @@ protected CompletableFuture handleResponse(HttpClient client, HttpRequest try { assertResponseCode(request, response); if (type != null && type.getType() != null) { - return Serialization.unmarshal(new ByteArrayInputStream(response.body()), type, parameters); + return Serialization.unmarshal(new ByteArrayInputStream(response.body()), type); } else { return null; } @@ -801,9 +779,6 @@ public R1 restCall(Class result, String... path) { throw e; } return null; - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); - throw KubernetesClientException.launderThrowable(ie); } catch (IOException e) { throw KubernetesClientException.launderThrowable(e); } diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/core/v1/PodOperationsImpl.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/core/v1/PodOperationsImpl.java index 0aadd08956..4ad949e709 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/core/v1/PodOperationsImpl.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/dsl/internal/core/v1/PodOperationsImpl.java @@ -263,9 +263,6 @@ private boolean handleEvict(HasMetadata eviction) { return false; } catch (IOException exception) { throw KubernetesClientException.launderThrowable(forOperationType("evict"), exception); - } catch (InterruptedException interruptedException) { - Thread.currentThread().interrupt(); - throw KubernetesClientException.launderThrowable(forOperationType("evict"), interruptedException); } } diff --git a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/impl/KubernetesClientImpl.java b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/impl/KubernetesClientImpl.java index b4ad065511..760b0f5eb1 100644 --- a/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/impl/KubernetesClientImpl.java +++ b/kubernetes-client/src/main/java/io/fabric8/kubernetes/client/impl/KubernetesClientImpl.java @@ -109,7 +109,6 @@ import io.fabric8.kubernetes.client.dsl.NamespaceableResource; import io.fabric8.kubernetes.client.dsl.NetworkAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.PodResource; import io.fabric8.kubernetes.client.dsl.PolicyAPIGroupDSL; import io.fabric8.kubernetes.client.dsl.RbacAPIGroupDSL; @@ -306,7 +305,7 @@ public NonNamespaceOperation load(InputStream is) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load(InputStream is) { return resourceListFor(is); } @@ -343,7 +342,7 @@ public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable * {@inheritDoc} */ @Override - public ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { return resourceListFor(s); } diff --git a/kubernetes-client/src/test/java/io/fabric8/kubernetes/client/impl/KubernetesClientImplTest.java b/kubernetes-client/src/test/java/io/fabric8/kubernetes/client/impl/KubernetesClientImplTest.java index 440ddc6eb3..1068fe893f 100644 --- a/kubernetes-client/src/test/java/io/fabric8/kubernetes/client/impl/KubernetesClientImplTest.java +++ b/kubernetes-client/src/test/java/io/fabric8/kubernetes/client/impl/KubernetesClientImplTest.java @@ -23,7 +23,7 @@ import io.fabric8.kubernetes.client.ConfigBuilder; import io.fabric8.kubernetes.client.KubernetesClient; import io.fabric8.kubernetes.client.KubernetesClientException; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; +import io.fabric8.kubernetes.client.dsl.NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.http.BasicBuilder; import io.fabric8.kubernetes.client.http.HttpHeaders; import io.fabric8.kubernetes.client.utils.HttpClientUtils; @@ -213,7 +213,7 @@ void loadFromInputStreamWithHasMetadata() throws IOException { void loadFromInputStreamWithInvalid() throws IOException { final String podYaml = "NotAPod"; try (InputStream is = new ByteArrayInputStream(podYaml.getBytes(StandardCharsets.UTF_8))) { - final ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load = new KubernetesClientImpl() + final NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load = new KubernetesClientImpl() .load(is); assertThatIllegalArgumentException() .isThrownBy(load::get) diff --git a/kubernetes-itests/src/test/java/io/fabric8/openshift/TemplateIT.java b/kubernetes-itests/src/test/java/io/fabric8/openshift/TemplateIT.java index 73bd2185ab..27ca13e30c 100644 --- a/kubernetes-itests/src/test/java/io/fabric8/openshift/TemplateIT.java +++ b/kubernetes-itests/src/test/java/io/fabric8/openshift/TemplateIT.java @@ -26,7 +26,6 @@ import io.fabric8.openshift.client.OpenShiftClient; import org.junit.jupiter.api.Test; -import java.util.Collections; import java.util.Objects; import java.util.concurrent.TimeUnit; @@ -44,8 +43,6 @@ class TemplateIT { @Test void load() { Template template = client.templates() - .withParameters(Collections.singletonMap("REDIS_PASSWORD", "secret")) - .load(getClass().getResourceAsStream("/test-template.yml")).get(); assertThat(template).isNotNull(); assertEquals(1, template.getObjects().size()); diff --git a/kubernetes-tests/src/test/java/io/fabric8/kubernetes/client/mock/ClusterRoleTest.java b/kubernetes-tests/src/test/java/io/fabric8/kubernetes/client/mock/ClusterRoleTest.java index 0ef9cc3219..cee62b2710 100644 --- a/kubernetes-tests/src/test/java/io/fabric8/kubernetes/client/mock/ClusterRoleTest.java +++ b/kubernetes-tests/src/test/java/io/fabric8/kubernetes/client/mock/ClusterRoleTest.java @@ -19,7 +19,7 @@ import io.fabric8.kubernetes.api.model.HasMetadata; import io.fabric8.kubernetes.api.model.rbac.ClusterRole; import io.fabric8.kubernetes.client.KubernetesClient; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; +import io.fabric8.kubernetes.client.dsl.NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; import org.junit.jupiter.api.Test; @@ -45,7 +45,7 @@ void testLoadFromFile() { @Test void testHandlersLoadFromFile() { - ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load = client + NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load = client .load(getClass().getResourceAsStream("/test-clusterrole.yml")); assertNotNull(load); diff --git a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/LoadAsTemplateTest.java b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/LoadAsTemplateTest.java index 8cf4bec522..a0006cdac0 100644 --- a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/LoadAsTemplateTest.java +++ b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/LoadAsTemplateTest.java @@ -22,15 +22,14 @@ import io.fabric8.kubernetes.api.model.KubernetesListBuilder; import io.fabric8.kubernetes.api.model.Pod; import io.fabric8.kubernetes.client.utils.Utils; -import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; import io.fabric8.openshift.client.OpenShiftConfigBuilder; +import io.fabric8.openshift.client.impl.OpenShiftClientImpl; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.io.File; -import java.util.Collections; import java.util.HashMap; import java.util.Map; import java.util.concurrent.atomic.AtomicBoolean; @@ -84,13 +83,13 @@ void shouldProcessLocallyWithParametersInYaml() { @Test void shouldProcessLocallyDoubleBracedParameters() { // Given - final Map nonStringParamsToBeAbleToLoad = Collections.singletonMap("CONTAINER_PORT", "8080"); final Map localRequiredParameters = new HashMap<>(); localRequiredParameters.put("USERNAME", "notTheOneInYaml"); localRequiredParameters.put("REQUIRED", "requiredValue"); localRequiredParameters.put("REQUIRED_BOOLEAN", "true"); + localRequiredParameters.put("CONTAINER_PORT", "8080"); // When - final KubernetesList result = client.templates().withParameters(nonStringParamsToBeAbleToLoad) + final KubernetesList result = client.templates() .load(getClass().getResourceAsStream("/template-with-json-params.yml")) .processLocally(localRequiredParameters); // Then @@ -104,10 +103,8 @@ void shouldProcessLocallyDoubleBracedParameters() { @Test void shouldProcessLocallyWithDoubleBracedParametersAndParametersInYaml() { - // Given - final Map nonStringParamsToBeAbleToLoad = Collections.singletonMap("CONTAINER_PORT", "8080"); // When - final KubernetesList result = client.templates().withParameters(nonStringParamsToBeAbleToLoad) + final KubernetesList result = client.templates() .load(getClass().getResourceAsStream("/template-with-json-params.yml")) .processLocally(getClass().getResourceAsStream("/parameters.yml")); // Then @@ -117,8 +114,8 @@ void shouldProcessLocallyWithDoubleBracedParametersAndParametersInYaml() { .anyMatch(e -> e.getName().equals("REQUIRED_BOOLEAN") && e.getValue().equals("false"))); } - private static DefaultOpenShiftClient createOpenShiftClientWithNoServer() { - return new DefaultOpenShiftClient(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); + private static OpenShiftClientImpl createOpenShiftClientWithNoServer() { + return new OpenShiftClientImpl(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); } //Check that the processed template is as expected diff --git a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/TemplateTest.java b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/TemplateTest.java index e6bace4ce6..622db82b81 100644 --- a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/TemplateTest.java +++ b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/TemplateTest.java @@ -26,16 +26,18 @@ import io.fabric8.kubernetes.api.model.ServicePort; import io.fabric8.kubernetes.api.model.ServiceSpec; import io.fabric8.kubernetes.api.model.StatusBuilder; +import io.fabric8.kubernetes.client.server.mock.EnableKubernetesMockClient; +import io.fabric8.kubernetes.client.server.mock.KubernetesMockServer; import io.fabric8.kubernetes.client.utils.IOHelpers; import io.fabric8.openshift.api.model.ParameterBuilder; import io.fabric8.openshift.api.model.Template; import io.fabric8.openshift.api.model.TemplateBuilder; import io.fabric8.openshift.api.model.TemplateList; import io.fabric8.openshift.api.model.TemplateListBuilder; -import io.fabric8.openshift.client.DefaultOpenShiftClient; import io.fabric8.openshift.client.OpenShiftClient; import io.fabric8.openshift.client.OpenShiftConfigBuilder; import io.fabric8.openshift.client.ParameterValue; +import io.fabric8.openshift.client.impl.OpenShiftClientImpl; import org.junit.jupiter.api.Test; import java.io.IOException; @@ -52,10 +54,10 @@ import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertTrue; -@EnableOpenShiftMockClient +@EnableKubernetesMockClient class TemplateTest { - OpenShiftMockServer server; + KubernetesMockServer server; OpenShiftClient client; @Test @@ -118,10 +120,7 @@ void testListWithParams() throws IOException { server.expect().withPath("/apis/template.openshift.io/v1/namespaces/test/templates").andReturn(200, json).always(); - Map map = new HashMap<>(); - map.put("PORT", "8080"); - - TemplateList templateList = client.templates().withParameters(map).list(); + TemplateList templateList = client.templates().list(); assertNotNull(templateList); assertEquals(1, templateList.getItems().size()); } @@ -217,11 +216,10 @@ void testProcess() { @Test void shouldLoadTemplateWithNumberParameters() { - OpenShiftClient client = new DefaultOpenShiftClient(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); + OpenShiftClient client = new OpenShiftClientImpl(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); Map map = new HashMap<>(); map.put("PORT", "8080"); KubernetesList list = client.templates() - .withParameters(map) .load(getClass().getResourceAsStream("/template-with-number-params.yml")) .processLocally(map); assertListIsServiceWithPort8080(list); @@ -235,7 +233,7 @@ void shouldLoadTemplateWithNumberParameters() { @Test void shouldGetTemplateWithNumberParameters() { - OpenShiftClient client = new DefaultOpenShiftClient(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); + OpenShiftClient client = new OpenShiftClientImpl(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); Template template = client.templates().load(getClass().getResourceAsStream("/template-with-number-params.yml")).get(); assertThat(template) .extracting(Template::getObjects) @@ -272,7 +270,7 @@ void shouldGetTemplateFromServerWithNumberParameters() { @Test void shouldGetTemplateWithMultipleObjects() { - OpenShiftClient client = new DefaultOpenShiftClient(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); + OpenShiftClient client = new OpenShiftClientImpl(new OpenShiftConfigBuilder().withDisableApiGroupCheck(true).build()); Template template = client.templates().load(getClass().getResourceAsStream("/template-with-multiple-objects.yml")).get(); assertThat(template) .extracting(Template::getObjects) @@ -326,8 +324,7 @@ void testLoadParameterizedNumberTemplate() throws IOException { Map map = new HashMap<>(); map.put("PORT", "8080"); - Template template = client.templates().withParameters(map).withName("tmpl1").get(); - List list = template.getObjects(); + KubernetesList list = client.templates().withName("tmpl1").processLocally(map); assertListIsServiceWithPort8080(list); } diff --git a/kubernetes-tests/src/test/resources/parameters.yml b/kubernetes-tests/src/test/resources/parameters.yml index c796e7c8d1..bc77995943 100644 --- a/kubernetes-tests/src/test/resources/parameters.yml +++ b/kubernetes-tests/src/test/resources/parameters.yml @@ -17,3 +17,4 @@ USERNAME: root REQUIRED: requiredValue REQUIRED_BOOLEAN: false +CONTAINER_PORT: 8080 diff --git a/kubernetes-tests/src/test/resources/template-with-json-params.yml b/kubernetes-tests/src/test/resources/template-with-json-params.yml index 37556c7887..7568eacb05 100644 --- a/kubernetes-tests/src/test/resources/template-with-json-params.yml +++ b/kubernetes-tests/src/test/resources/template-with-json-params.yml @@ -57,3 +57,6 @@ parameters: - description: Required boolean parameter name: REQUIRED_BOOLEAN required: true +- description: container port parameter + name: CONTAINER_PORT + required: true diff --git a/openshift-client-api/src/main/java/io/fabric8/openshift/client/NamespacedOpenShiftClientAdapter.java b/openshift-client-api/src/main/java/io/fabric8/openshift/client/NamespacedOpenShiftClientAdapter.java index a4b26fdde0..5cf4a82185 100644 --- a/openshift-client-api/src/main/java/io/fabric8/openshift/client/NamespacedOpenShiftClientAdapter.java +++ b/openshift-client-api/src/main/java/io/fabric8/openshift/client/NamespacedOpenShiftClientAdapter.java @@ -30,7 +30,6 @@ import io.fabric8.kubernetes.client.dsl.Namespaceable; import io.fabric8.kubernetes.client.dsl.NamespacedInOutCreateable; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.ParameterMixedOperation; import io.fabric8.kubernetes.client.dsl.Resource; import io.fabric8.openshift.api.model.BrokerTemplateInstance; import io.fabric8.openshift.api.model.BrokerTemplateInstanceList; @@ -348,7 +347,7 @@ public MixedOperation> routes() { } @Override - public ParameterMixedOperation> templates() { + public MixedOperation> templates() { return getClient().templates(); } diff --git a/openshift-client-api/src/main/java/io/fabric8/openshift/client/OpenShiftClient.java b/openshift-client-api/src/main/java/io/fabric8/openshift/client/OpenShiftClient.java index d492bcbb32..d8ff1c277f 100644 --- a/openshift-client-api/src/main/java/io/fabric8/openshift/client/OpenShiftClient.java +++ b/openshift-client-api/src/main/java/io/fabric8/openshift/client/OpenShiftClient.java @@ -448,7 +448,7 @@ public interface OpenShiftClient extends KubernetesClient, SupportTestingClient * * @return {@link ParameterMixedOperation} object for Template operations */ - ParameterMixedOperation> templates(); + MixedOperation> templates(); /** * API entrypoint for TemplateInstance(template.openshift.io/v1) diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildConfigOperationsImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildConfigOperationsImpl.java index b3b31b0453..71c36897e2 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildConfigOperationsImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/build/BuildConfigOperationsImpl.java @@ -269,7 +269,7 @@ protected Build submitToApiServer(InputStream inputStream, long contentLength) { public Type getType() { return Build.class; } - }, null)); + })); } catch (Throwable e) { // TODO: better determine which exception this should occur on // otherwise we need to have the httpclient api open up to the notion diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/core/TemplateOperationsImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/core/TemplateOperationsImpl.java index 9830a76f65..745e0e6b1e 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/core/TemplateOperationsImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/core/TemplateOperationsImpl.java @@ -23,7 +23,7 @@ import io.fabric8.kubernetes.api.model.KubernetesResourceList; import io.fabric8.kubernetes.client.Client; import io.fabric8.kubernetes.client.KubernetesClientException; -import io.fabric8.kubernetes.client.dsl.ParameterMixedOperation; +import io.fabric8.kubernetes.client.dsl.MixedOperation; import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation; import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperationsImpl; import io.fabric8.kubernetes.client.dsl.internal.OperationContext; @@ -49,41 +49,34 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; -import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import static io.fabric8.openshift.client.OpenShiftAPIGroups.TEMPLATE; public class TemplateOperationsImpl extends HasMetadataOperation> implements TemplateResource, - ParameterMixedOperation> { + MixedOperation> { private static final Logger logger = LoggerFactory.getLogger(TemplateOperationsImpl.class); private static final String EXPRESSION = "expression"; private static final TypeReference> MAPS_REFERENCE = new TypeReference>() { }; - private final Map parameters; - public TemplateOperationsImpl(Client client) { - this(HasMetadataOperationsImpl.defaultContext(client), null); + this(HasMetadataOperationsImpl.defaultContext(client)); } - public TemplateOperationsImpl(OperationContext context, Map parameters) { + public TemplateOperationsImpl(OperationContext context) { super(context.withApiGroupName(TEMPLATE) .withPlural("templates"), Template.class, TemplateList.class); - this.parameters = parameters; } @Override public TemplateOperationsImpl newInstance(OperationContext context) { - return new TemplateOperationsImpl(context, parameters); - } - - public TemplateOperationsImpl newInstance(OperationContext context, Map parameters) { - return new TemplateOperationsImpl(context, parameters == null ? null : new LinkedHashMap<>(parameters)); + return new TemplateOperationsImpl(context); } @Override @@ -158,14 +151,9 @@ public KubernetesList processLocally(ParameterValue... values) { return processLocally(valuesMap); } - @Override - public TemplateOperationsImpl withParameters(Map parameters) { - return newInstance(context, parameters); - } - @Override public KubernetesList processLocally(Map valuesMap) { - Template t = withParameters(valuesMap).get(); + Template t = get(); List parameters = t != null ? t.getParameters() : null; KubernetesList list = new KubernetesListBuilder() @@ -174,9 +162,11 @@ public KubernetesList processLocally(Map valuesMap) { try { String json = JSON_MAPPER.writeValueAsString(list); + String last = null; + if (parameters != null && !parameters.isEmpty()) { - // lets make a few passes in case there's expressions in values - for (int i = 0; i < 5; i++) { + while (!Objects.equals(last, json)) { + last = json; for (Parameter parameter : parameters) { String parameterName = parameter.getName(); String parameterValue; @@ -216,7 +206,7 @@ private URL getProcessUrl() throws MalformedURLException { public TemplateResource load(InputStream is) { String generatedName = "template-" + Utils.randomString(5); Template template = null; - Object item = Serialization.unmarshal(is, parameters); + Object item = Serialization.unmarshal(is); if (item instanceof Template) { template = (Template) item; } else if (item instanceof HasMetadata) { @@ -257,9 +247,4 @@ public TemplateResource load(InputStream is) { return newInstance(context.withItem(template)); } - @Override - public Map getParameters() { - return parameters; - } - } diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/impl/OpenShiftClientImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/impl/OpenShiftClientImpl.java index 0eb4614621..de5ac80c22 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/impl/OpenShiftClientImpl.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/impl/OpenShiftClientImpl.java @@ -36,8 +36,6 @@ import io.fabric8.kubernetes.client.dsl.Namespaceable; import io.fabric8.kubernetes.client.dsl.NamespacedInOutCreateable; import io.fabric8.kubernetes.client.dsl.NonNamespaceOperation; -import io.fabric8.kubernetes.client.dsl.ParameterMixedOperation; -import io.fabric8.kubernetes.client.dsl.ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable; import io.fabric8.kubernetes.client.dsl.Resource; import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperation; import io.fabric8.kubernetes.client.http.HttpClient; @@ -270,7 +268,7 @@ public OpenShiftOperatorHubAPIGroupDSL operatorHub() { } @Override - public ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load(InputStream is) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable load(InputStream is) { return new OpenShiftNamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl(this, is); } @@ -280,7 +278,7 @@ public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable } @Override - public ParameterNamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { + public NamespaceListVisitFromServerGetDeleteRecreateWaitApplicable resourceList(String s) { return new OpenShiftNamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl(this, s); } @@ -488,7 +486,7 @@ public MixedOperation> routes() { } @Override - public ParameterMixedOperation> templates() { + public MixedOperation> templates() { return new TemplateOperationsImpl(this); }