Skip to content

Commit

Permalink
Fix fabric8io#2418: CertificateSigningRequest doesn't implement Names…
Browse files Browse the repository at this point in the history
…paced

+ Add new resources in Cluster scope block in kubernetes model generator
+ Fix previous tests which were wrongly asserting Cluster Scoped resources as Namespaced resources
+ Add dsl entrypoint client.certificateSigningRequests() for dealing with CertificateSigningRequests
  • Loading branch information
rohanKanojia committed Aug 21, 2020
1 parent b3b6517 commit c4d9630
Show file tree
Hide file tree
Showing 16 changed files with 187 additions and 48 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -8,6 +8,7 @@
* Fix #2354: Fix NullPointerException in ResourceCompare when no resource is returned from fromServer.get()
* Fix #2389: KubernetesServer does not use value from https in crud mode
* Fix #2306: Make KubernetesServer CRUD mode work with informers
* Fix #2418: CertificateSigningRequest doesn't implement Namespaced

#### Improvements
* Fix #2331: Fixed documentation for namespaced informer for all custom types implementing `Namespaced` interface
Expand Down
Expand Up @@ -73,6 +73,9 @@
import io.fabric8.kubernetes.api.model.ServiceAccount;
import io.fabric8.kubernetes.api.model.ServiceAccountList;
import io.fabric8.kubernetes.api.model.DoneableServiceAccount;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequest;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequestList;
import io.fabric8.kubernetes.api.model.certificates.DoneableCertificateSigningRequest;
import io.fabric8.kubernetes.api.model.coordination.v1.DoneableLease;
import io.fabric8.kubernetes.api.model.coordination.v1.Lease;
import io.fabric8.kubernetes.api.model.coordination.v1.LeaseList;
Expand All @@ -83,6 +86,7 @@
import io.fabric8.kubernetes.client.dsl.internal.CustomResourceOperationContext;
import io.fabric8.kubernetes.client.dsl.internal.CustomResourceOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.KubernetesListOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.certificates.v1beta1.CertificateSigningRequestOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.core.v1.APIServiceOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.core.v1.ComponentStatusOperationsImpl;
import io.fabric8.kubernetes.client.dsl.internal.core.v1.NamespaceOperationsImpl;
Expand Down Expand Up @@ -293,6 +297,11 @@ public ApiextensionsAPIGroupDSL apiextensions() {
return adapt(ApiextensionsAPIGroupClient.class);
}

@Override
public NonNamespaceOperation<CertificateSigningRequest, CertificateSigningRequestList, DoneableCertificateSigningRequest, Resource<CertificateSigningRequest, DoneableCertificateSigningRequest>> certificateSigningRequests() {
return new CertificateSigningRequestOperationsImpl(httpClient, getConfiguration());
}

@Override
public <T extends HasMetadata, L extends KubernetesResourceList<T>, D extends Doneable<T>> MixedOperation<T, L, D, Resource<T, D>> customResources(CustomResourceDefinitionContext crdContext, Class<T> resourceType, Class<L> listClass, Class<D> doneClass) {
return new CustomResourceOperationsImpl<>(new CustomResourceOperationContext().withOkhttpClient(httpClient).withConfig(getConfiguration())
Expand Down
Expand Up @@ -69,6 +69,9 @@
import io.fabric8.kubernetes.api.model.ServiceAccount;
import io.fabric8.kubernetes.api.model.ServiceAccountList;
import io.fabric8.kubernetes.api.model.DoneableServiceAccount;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequest;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequestList;
import io.fabric8.kubernetes.api.model.certificates.DoneableCertificateSigningRequest;
import io.fabric8.kubernetes.api.model.coordination.v1.DoneableLease;
import io.fabric8.kubernetes.api.model.coordination.v1.Lease;
import io.fabric8.kubernetes.api.model.coordination.v1.LeaseList;
Expand Down Expand Up @@ -106,6 +109,13 @@ public interface KubernetesClient extends Client {
*/
ApiextensionsAPIGroupDSL apiextensions();

/**
* API entrypoint for using CertificateSigningRequest(certificates.k8s.io/v1beta1)
*
* @return {@link NonNamespaceOperation} for CertificateSigningRequest class
*/
NonNamespaceOperation<CertificateSigningRequest, CertificateSigningRequestList, DoneableCertificateSigningRequest, Resource<CertificateSigningRequest, DoneableCertificateSigningRequest>> certificateSigningRequests();

/**
* Typed API for managing CustomResources. You would need to provide POJOs for
* CustomResource into this and with it you would be able to instantiate a client
Expand Down
Expand Up @@ -72,6 +72,9 @@
import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinition;
import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.CustomResourceDefinitionList;
import io.fabric8.kubernetes.api.model.apiextensions.v1beta1.DoneableCustomResourceDefinition;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequest;
import io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequestList;
import io.fabric8.kubernetes.api.model.certificates.DoneableCertificateSigningRequest;
import io.fabric8.kubernetes.api.model.coordination.v1.DoneableLease;
import io.fabric8.kubernetes.api.model.coordination.v1.Lease;
import io.fabric8.kubernetes.api.model.coordination.v1.LeaseList;
Expand Down Expand Up @@ -431,6 +434,11 @@ public ApiextensionsAPIGroupDSL apiextensions() {
return delegate.apiextensions();
}

@Override
public NonNamespaceOperation<CertificateSigningRequest, CertificateSigningRequestList, DoneableCertificateSigningRequest, Resource<CertificateSigningRequest, DoneableCertificateSigningRequest>> certificateSigningRequests() {
return delegate.certificateSigningRequests();
}

@Override
public <T extends HasMetadata, L extends KubernetesResourceList<T>, D extends Doneable<T>> MixedOperation<T, L, D, Resource<T, D>> customResources(CustomResourceDefinitionContext crdContext, Class<T> resourceType, Class<L> listClass, Class<D> doneClass) {
return delegate.customResources(crdContext, resourceType, listClass, doneClass);
Expand Down
Expand Up @@ -254,15 +254,15 @@ void testWhetherNamespacedOrNot() {
assertTrue(Utils.isResourceNamespaced(Deployment.class));
assertTrue(Utils.isResourceNamespaced(ReplicaSet.class));
assertTrue(Utils.isResourceNamespaced(StatefulSet.class));
assertTrue(Utils.isResourceNamespaced(TokenReview.class));
assertFalse(Utils.isResourceNamespaced(TokenReview.class));
assertTrue(Utils.isResourceNamespaced(LocalSubjectAccessReview.class));
assertTrue(Utils.isResourceNamespaced(SelfSubjectAccessReview.class));
assertTrue(Utils.isResourceNamespaced(SelfSubjectRulesReview.class));
assertTrue(Utils.isResourceNamespaced(SubjectAccessReview.class));
assertFalse(Utils.isResourceNamespaced(SelfSubjectAccessReview.class));
assertFalse(Utils.isResourceNamespaced(SelfSubjectRulesReview.class));
assertFalse(Utils.isResourceNamespaced(SubjectAccessReview.class));
assertTrue(Utils.isResourceNamespaced(HorizontalPodAutoscaler.class));
assertTrue(Utils.isResourceNamespaced(CronJob.class));
assertTrue(Utils.isResourceNamespaced(Job.class));
assertTrue(Utils.isResourceNamespaced(CertificateSigningRequest.class));
assertFalse(Utils.isResourceNamespaced(CertificateSigningRequest.class));
assertTrue(Utils.isResourceNamespaced(Lease.class));
assertTrue(Utils.isResourceNamespaced(EndpointSlice.class));
assertTrue(Utils.isResourceNamespaced(Ingress.class));
Expand All @@ -274,8 +274,8 @@ void testWhetherNamespacedOrNot() {
assertTrue(Utils.isResourceNamespaced(RoleBinding.class));
assertTrue(Utils.isResourceNamespaced(Role.class));
assertFalse(Utils.isResourceNamespaced(PriorityClass.class));
assertTrue(Utils.isResourceNamespaced(CSIDriver.class));
assertTrue(Utils.isResourceNamespaced(CSINode.class));
assertFalse(Utils.isResourceNamespaced(CSIDriver.class));
assertFalse(Utils.isResourceNamespaced(CSINode.class));
assertFalse(Utils.isResourceNamespaced(StorageClass.class));
assertTrue(Utils.isResourceNamespaced(VolumeAttachment.class));
}
Expand Down
Expand Up @@ -1984,8 +1984,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authentication.TokenReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authentication_TokenReviewSpec": {
Expand Down Expand Up @@ -2285,8 +2284,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SelfSubjectAccessReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SelfSubjectAccessReviewSpec": {
Expand Down Expand Up @@ -2340,8 +2338,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SelfSubjectRulesReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SelfSubjectRulesReviewSpec": {
Expand Down Expand Up @@ -2391,8 +2388,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SubjectAccessReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SubjectAccessReviewSpec": {
Expand Down
Expand Up @@ -1984,8 +1984,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authentication.TokenReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authentication_TokenReviewSpec": {
Expand Down Expand Up @@ -2285,8 +2284,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SelfSubjectAccessReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SelfSubjectAccessReviewSpec": {
Expand Down Expand Up @@ -2340,8 +2338,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SelfSubjectRulesReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SelfSubjectRulesReviewSpec": {
Expand Down Expand Up @@ -2391,8 +2388,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.authorization.SubjectAccessReview",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_authorization_SubjectAccessReviewSpec": {
Expand Down Expand Up @@ -3323,7 +3319,7 @@
"apiVersion": {
"type": "string",
"description": "",
"default": "admissionregistration.k8s.io/v1",
"default": "admissionregistration.k8s.io/v1beta1",
"required": true
},
"kind": {
Expand All @@ -3341,8 +3337,8 @@
"description": "",
"javaOmitEmpty": true,
"items": {
"$ref": "#/definitions/kubernetes_admissionregistration_v1_MutatingWebhook",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1.MutatingWebhook"
"$ref": "#/definitions/kubernetes_admissionregistration_v1beta1_MutatingWebhook",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1beta1.MutatingWebhook"
}
}
},
Expand All @@ -3353,15 +3349,15 @@
"apiVersion": {
"type": "string",
"description": "",
"default": "admissionregistration.k8s.io/v1",
"default": "admissionregistration.k8s.io/v1beta1",
"required": true
},
"items": {
"type": "array",
"description": "",
"items": {
"$ref": "#/definitions/kubernetes_admissionregistration_v1_MutatingWebhookConfiguration",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1.MutatingWebhookConfiguration"
"$ref": "#/definitions/kubernetes_admissionregistration_v1beta1_MutatingWebhookConfiguration",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1beta1.MutatingWebhookConfiguration"
}
},
"kind": {
Expand Down Expand Up @@ -4261,14 +4257,15 @@
"admissionReviewVersions": {
"type": "array",
"description": "",
"javaOmitEmpty": true,
"items": {
"type": "string",
"description": ""
}
},
"clientConfig": {
"$ref": "#/definitions/kubernetes_admissionregistration_v1_WebhookClientConfig",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1.WebhookClientConfig"
"$ref": "#/definitions/kubernetes_admissionregistration_v1beta1_WebhookClientConfig",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1beta1.WebhookClientConfig"
},
"failurePolicy": {
"type": "string",
Expand All @@ -4295,8 +4292,8 @@
"description": "",
"javaOmitEmpty": true,
"items": {
"$ref": "#/definitions/kubernetes_admissionregistration_v1_RuleWithOperations",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1.RuleWithOperations"
"$ref": "#/definitions/kubernetes_admissionregistration_v1beta1_RuleWithOperations",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1beta1.RuleWithOperations"
}
},
"sideEffects": {
Expand All @@ -4315,7 +4312,7 @@
"apiVersion": {
"type": "string",
"description": "",
"default": "admissionregistration.k8s.io/v1beta1",
"default": "admissionregistration.k8s.io/v1",
"required": true
},
"kind": {
Expand All @@ -4333,8 +4330,8 @@
"description": "",
"javaOmitEmpty": true,
"items": {
"$ref": "#/definitions/kubernetes_admissionregistration_v1beta1_ValidatingWebhook",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1beta1.ValidatingWebhook"
"$ref": "#/definitions/kubernetes_admissionregistration_v1_ValidatingWebhook",
"javaType": "io.fabric8.kubernetes.api.model.admissionregistration.v1.ValidatingWebhook"
}
}
},
Expand Down
Expand Up @@ -915,8 +915,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequest",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_certificates_CertificateSigningRequestCondition": {
Expand Down
Expand Up @@ -915,8 +915,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.certificates.CertificateSigningRequest",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_certificates_CertificateSigningRequestCondition": {
Expand Down
Expand Up @@ -2330,8 +2330,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.storage.v1beta1.CSIDriver",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_storageclass_v1beta1_CSIDriverList": {
Expand Down Expand Up @@ -2426,8 +2425,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.storage.v1beta1.CSINode",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_storageclass_v1beta1_CSINodeDriver": {
Expand Down
Expand Up @@ -2330,8 +2330,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.storage.v1beta1.CSIDriver",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_storageclass_v1beta1_CSIDriverList": {
Expand Down Expand Up @@ -2426,8 +2425,7 @@
"additionalProperties": true,
"javaType": "io.fabric8.kubernetes.api.model.storage.v1beta1.CSINode",
"javaInterfaces": [
"io.fabric8.kubernetes.api.model.HasMetadata",
"io.fabric8.kubernetes.api.model.Namespaced"
"io.fabric8.kubernetes.api.model.HasMetadata"
]
},
"kubernetes_storageclass_v1beta1_CSINodeDriver": {
Expand Down
7 changes: 7 additions & 0 deletions kubernetes-model-generator/pkg/schemagen/generate.go
Expand Up @@ -574,6 +574,13 @@ func (g *schemaGenerator) crdScope(t reflect.Type) CrdScope {
"ClusterRole",
"PriorityClass",
"StorageClass",
"TokenReview",
"SelfSubjectAccessReview",
"SelfSubjectRulesReview",
"SubjectAccessReview",
"CertificateSigningRequest",
"CSIDriver",
"CSINode",
"APIService":
return Cluster
default:
Expand Down

0 comments on commit c4d9630

Please sign in to comment.