From 9eaf8c20dcf71e85913e9300551c4a796aa336a0 Mon Sep 17 00:00:00 2001 From: Steve Hawkins Date: Thu, 28 Apr 2022 09:10:24 -0400 Subject: [PATCH] fix #4106: removing listing from projectrequests this allows for the removal of projectrequestsoperationimpl --- CHANGELOG.md | 1 + .../openshift/api/model/ProjectRequest.java | 3 +- .../main/resources/schema/kube-schema.json | 3 +- .../resources/schema/validation-schema.json | 3 +- .../pkg/schemagen/generate.go | 1 + .../server/mock/ProjectRequestTest.java | 28 ++-- .../client/dsl/ProjectRequestOperation.java | 5 +- .../client/DefaultOpenShiftClient.java | 7 +- .../ProjectRequestsOperationImpl.java | 143 ------------------ 9 files changed, 21 insertions(+), 173 deletions(-) delete mode 100644 openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 00e157b6d42..4a0512650c5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ #### Bugs * Fix #3832 #1883: simplifying the isHttpsAvailable check * Fix #3745: the client will throw better exceptions when a namespace is not discernible for an operation +* Fix #4106: removed listing from projectrequests * Fix #4081: moving Versionable.withResourceVersion to a method on WatchAndWaitable and removing Waitable from the return type #### Improvements diff --git a/kubernetes-model-generator/openshift-model/src/generated/java/io/fabric8/openshift/api/model/ProjectRequest.java b/kubernetes-model-generator/openshift-model/src/generated/java/io/fabric8/openshift/api/model/ProjectRequest.java index 865c42f26ea..29be42551ac 100644 --- a/kubernetes-model-generator/openshift-model/src/generated/java/io/fabric8/openshift/api/model/ProjectRequest.java +++ b/kubernetes-model-generator/openshift-model/src/generated/java/io/fabric8/openshift/api/model/ProjectRequest.java @@ -15,7 +15,6 @@ import io.fabric8.kubernetes.api.model.IntOrString; import io.fabric8.kubernetes.api.model.LabelSelector; import io.fabric8.kubernetes.api.model.LocalObjectReference; -import io.fabric8.kubernetes.api.model.Namespaced; import io.fabric8.kubernetes.api.model.ObjectReference; import io.fabric8.kubernetes.api.model.PersistentVolumeClaim; import io.fabric8.kubernetes.api.model.PodTemplateSpec; @@ -58,7 +57,7 @@ }) @Version("v1") @Group("project.openshift.io") -public class ProjectRequest implements HasMetadata, Namespaced +public class ProjectRequest implements HasMetadata { /** diff --git a/kubernetes-model-generator/openshift-model/src/main/resources/schema/kube-schema.json b/kubernetes-model-generator/openshift-model/src/main/resources/schema/kube-schema.json index 0c9a50618aa..c7f8bec19a5 100644 --- a/kubernetes-model-generator/openshift-model/src/main/resources/schema/kube-schema.json +++ b/kubernetes-model-generator/openshift-model/src/main/resources/schema/kube-schema.json @@ -12600,8 +12600,7 @@ "additionalProperties": true, "javaType": "io.fabric8.openshift.api.model.ProjectRequest", "javaInterfaces": [ - "io.fabric8.kubernetes.api.model.HasMetadata", - "io.fabric8.kubernetes.api.model.Namespaced" + "io.fabric8.kubernetes.api.model.HasMetadata" ] }, "os_project_ProjectSpec": { diff --git a/kubernetes-model-generator/openshift-model/src/main/resources/schema/validation-schema.json b/kubernetes-model-generator/openshift-model/src/main/resources/schema/validation-schema.json index 5e551e23887..0890b93eac4 100644 --- a/kubernetes-model-generator/openshift-model/src/main/resources/schema/validation-schema.json +++ b/kubernetes-model-generator/openshift-model/src/main/resources/schema/validation-schema.json @@ -12600,8 +12600,7 @@ "additionalProperties": true, "javaType": "io.fabric8.openshift.api.model.ProjectRequest", "javaInterfaces": [ - "io.fabric8.kubernetes.api.model.HasMetadata", - "io.fabric8.kubernetes.api.model.Namespaced" + "io.fabric8.kubernetes.api.model.HasMetadata" ] }, "os_project_ProjectSpec": { diff --git a/kubernetes-model-generator/pkg/schemagen/generate.go b/kubernetes-model-generator/pkg/schemagen/generate.go index bd447dbdfdd..713d761ae24 100644 --- a/kubernetes-model-generator/pkg/schemagen/generate.go +++ b/kubernetes-model-generator/pkg/schemagen/generate.go @@ -710,6 +710,7 @@ func (g *schemaGenerator) isClusterScopedResource(t reflect.Type) bool { "github.com/openshift/api/user/v1/Identity", "github.com/openshift/api/apiserver/v1/APIRequestCount", "github.com/openshift/api/project/v1/Project", + "github.com/openshift/api/project/v1/ProjectRequest", "github.com/openshift/api/user/v1/Group", "github.com/openshift/api/user/v1/User", "github.com/openshift/api/oauth/v1/OAuthAccessToken", diff --git a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/ProjectRequestTest.java b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/ProjectRequestTest.java index 8e5ef7f3254..bde8fb768b5 100644 --- a/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/ProjectRequestTest.java +++ b/kubernetes-tests/src/test/java/io/fabric8/openshift/client/server/mock/ProjectRequestTest.java @@ -16,8 +16,8 @@ package io.fabric8.openshift.client.server.mock; -import io.fabric8.kubernetes.api.model.Status; -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.openshift.api.model.ProjectRequest; import io.fabric8.openshift.api.model.ProjectRequestBuilder; import io.fabric8.openshift.client.OpenShiftClient; @@ -26,29 +26,21 @@ import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -@EnableOpenShiftMockClient +@EnableKubernetesMockClient class ProjectRequestTest { - OpenShiftMockServer server; + KubernetesMockServer server; OpenShiftClient client; - @Test - void testList() { - server.expect().withPath("/apis/project.openshift.io/v1/projectrequests").andReturn(200, new StatusBuilder().withMessage("success").build()).once(); - - Status status = client.projectrequests().list(); - assertNotNull(status); - assertEquals("success", status.getMessage()); - } - - - @Test void testCreate() { - ProjectRequest req1 = new ProjectRequestBuilder().withApiVersion("v1").withNewMetadata().withName("req1").and().build(); - - server.expect().withPath("/apis/project.openshift.io/v1/projectrequests").andReturn(201, req1).once(); + ProjectRequest req1 = new ProjectRequestBuilder().withApiVersion("project.openshift.io/v1") + .withNewMetadata() + .withName("req1") + .and() + .build(); + server.expect().withPath("/apis/project.openshift.io/v1/projectrequests").andReturn(201, req1).once(); ProjectRequest result = client.projectrequests().create(req1); assertNotNull(result); diff --git a/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/ProjectRequestOperation.java b/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/ProjectRequestOperation.java index 85ba68a17b6..133017a711f 100644 --- a/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/ProjectRequestOperation.java +++ b/openshift-client-api/src/main/java/io/fabric8/openshift/client/dsl/ProjectRequestOperation.java @@ -15,12 +15,9 @@ */ package io.fabric8.openshift.client.dsl; -import io.fabric8.kubernetes.api.model.Status; import io.fabric8.kubernetes.client.dsl.InOutCreateable; -import io.fabric8.kubernetes.client.dsl.Listable; import io.fabric8.openshift.api.model.ProjectRequest; public interface ProjectRequestOperation extends - InOutCreateable, - Listable { + InOutCreateable { } diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/DefaultOpenShiftClient.java b/openshift-client/src/main/java/io/fabric8/openshift/client/DefaultOpenShiftClient.java index d303ee87a12..c44c20f29b4 100644 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/DefaultOpenShiftClient.java +++ b/openshift-client/src/main/java/io/fabric8/openshift/client/DefaultOpenShiftClient.java @@ -101,6 +101,7 @@ import io.fabric8.openshift.api.model.PodSecurityPolicyReview; import io.fabric8.openshift.api.model.PodSecurityPolicySelfSubjectReview; import io.fabric8.openshift.api.model.PodSecurityPolicySubjectReview; +import io.fabric8.openshift.api.model.ProjectRequest; import io.fabric8.openshift.api.model.RangeAllocation; import io.fabric8.openshift.api.model.RangeAllocationList; import io.fabric8.openshift.api.model.ResourceAccessReview; @@ -161,7 +162,6 @@ import io.fabric8.openshift.client.dsl.ProjectOperation; import io.fabric8.openshift.client.dsl.ProjectRequestOperation; import io.fabric8.openshift.client.dsl.TemplateResource; -import io.fabric8.openshift.client.dsl.internal.ProjectRequestsOperationImpl; import io.fabric8.openshift.client.dsl.internal.apps.DeploymentConfigOperationsImpl; import io.fabric8.openshift.client.dsl.internal.authorization.RoleBindingOperationsImpl; import io.fabric8.openshift.client.dsl.internal.build.BuildConfigOperationsImpl; @@ -468,7 +468,10 @@ public NonNamespaceOperation, Resource> op = resources( + ProjectRequest.class, null); + + return item -> op.resource(item).create(); } @Override diff --git a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java b/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java deleted file mode 100644 index 796d97a3383..00000000000 --- a/openshift-client/src/main/java/io/fabric8/openshift/client/dsl/internal/ProjectRequestsOperationImpl.java +++ /dev/null @@ -1,143 +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.api.model.ListOptions; -import io.fabric8.kubernetes.api.model.ListOptionsBuilder; -import io.fabric8.kubernetes.api.model.Status; -import io.fabric8.kubernetes.client.Client; -import io.fabric8.kubernetes.client.KubernetesClientException; -import io.fabric8.kubernetes.client.dsl.internal.HasMetadataOperationsImpl; -import io.fabric8.kubernetes.client.dsl.internal.OperationContext; -import io.fabric8.kubernetes.client.dsl.internal.OperationSupport; -import io.fabric8.kubernetes.client.utils.URLUtils.URLBuilder; -import io.fabric8.kubernetes.client.utils.Utils; -import io.fabric8.openshift.api.model.ProjectRequest; -import io.fabric8.openshift.client.OpenShiftConfig; -import io.fabric8.openshift.client.dsl.ProjectRequestOperation; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; - -import static io.fabric8.openshift.client.OpenShiftAPIGroups.PROJECT; - -// TODO: Check why this class does not extend OpenshiftOperation, then the getRoot method can be removed -public class ProjectRequestsOperationImpl extends OperationSupport implements ProjectRequestOperation { - - public ProjectRequestsOperationImpl(Client client) { - this(HasMetadataOperationsImpl.defaultContext(client)); - } - - public ProjectRequestsOperationImpl(OperationContext context) { - super(context.withApiGroupName(PROJECT) - .withPlural("projectrequests")); - } - - @Override - public boolean isResourceNamespaced() { - return false; - } - - @Override - public URL getRootUrl() { - // This is an OpenShift resource. If no API Group Name is specified, use /oapi endpoint - if (Utils.isNullOrEmpty(context.getApiGroupName())) { - try { - return new URL(OpenShiftConfig.wrap(getConfig()).getOpenShiftUrl()); - } catch (MalformedURLException e) { - throw KubernetesClientException.launderThrowable(e); - } - } else { - return super.getRootUrl(); - } - } - - private ProjectRequest updateApiVersion(ProjectRequest p) { - if (p.getApiVersion() == null) { - p.setApiVersion(this.apiGroupVersion); - } - return p; - } - - @Override - public ProjectRequest create(ProjectRequest resource) { - if (resource == null) { - throw new IllegalArgumentException("Nothing to create."); - } - try { - return handleCreate(updateApiVersion(resource), ProjectRequest.class); - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); - throw KubernetesClientException.launderThrowable(ie); - } catch (IOException e) { - throw KubernetesClientException.launderThrowable(e); - } - } - - @Override - public Status list() { - return list(new ListOptions()); - } - - @Override - public Status list(Integer limitVal, String continueVal) { - return list(new ListOptionsBuilder().withLimit(Long.parseLong(limitVal.toString())).withContinue(continueVal).build()); - } - - @Override - public Status list(ListOptions listOptions) { - try { - URLBuilder urlBuilder = new URLBuilder(getNamespacedUrl().toString()); - if (listOptions.getLimit() != null) { - urlBuilder.addQueryParameter("limit", listOptions.getLimit().toString()); - } - if (listOptions.getContinue() != null) { - urlBuilder.addQueryParameter("continue", listOptions.getContinue()); - } - - if (listOptions.getResourceVersion() != null) { - urlBuilder.addQueryParameter("resourceVersion", listOptions.getResourceVersion()); - } - - if (listOptions.getFieldSelector() != null) { - urlBuilder.addQueryParameter("fieldSelector", listOptions.getFieldSelector()); - } - - if (listOptions.getLabelSelector() != null) { - urlBuilder.addQueryParameter("labelSelector", listOptions.getLabelSelector()); - } - - if (listOptions.getTimeoutSeconds() != null) { - urlBuilder.addQueryParameter("timeoutSeconds", listOptions.getTimeoutSeconds().toString()); - } - - if (listOptions.getAllowWatchBookmarks() != null) { - urlBuilder.addQueryParameter("allowWatchBookmarks", listOptions.getAllowWatchBookmarks().toString()); - } - return handleGet(urlBuilder.build(), Status.class); - } catch (InterruptedException ie) { - Thread.currentThread().interrupt(); - throw KubernetesClientException.launderThrowable(ie); - } catch (IOException e) { - throw KubernetesClientException.launderThrowable(e); - } - } - - public ProjectRequest getItem() { - return (ProjectRequest) context.getItem(); - } -}