Skip to content

Commit

Permalink
chore(impl): Extract registration of adapters and handlers into prote…
Browse files Browse the repository at this point in the history
…cted methods

This allows implementations to customize the default adapters and handlers being registered for a specific client
  • Loading branch information
gastaldi authored and manusa committed Jun 21, 2023
1 parent 5d9c41d commit 2c12ea3
Showing 1 changed file with 87 additions and 70 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -194,86 +194,103 @@ public KubernetesClientImpl(HttpClient httpClient, Config config, ExecutorSuppli
KubernetesSerialization kubernetesSerialization) {
super(httpClient, config, executorSupplier, kubernetesSerialization);

this.getAdapters().registerClient(AppsAPIGroupDSL.class, new AppsAPIGroupClient());
this.getAdapters().registerClient(AdmissionRegistrationAPIGroupDSL.class, new AdmissionRegistrationAPIGroupClient());
this.getAdapters().registerClient(V1AdmissionRegistrationAPIGroupDSL.class, new V1AdmissionRegistrationAPIGroupClient());
this.getAdapters().registerClient(V1beta1AdmissionRegistrationAPIGroupDSL.class,
registerDefaultAdapters();
registerDefaultHandlers();
}

protected KubernetesClientImpl(BaseClient client) {
super(client);
}

/**
* Registers the default adapters for this client.
*/
protected void registerDefaultAdapters() {
// Register adapters
Adapters adapters = getAdapters();
adapters.registerClient(AppsAPIGroupDSL.class, new AppsAPIGroupClient());
adapters.registerClient(AdmissionRegistrationAPIGroupDSL.class, new AdmissionRegistrationAPIGroupClient());
adapters.registerClient(V1AdmissionRegistrationAPIGroupDSL.class, new V1AdmissionRegistrationAPIGroupClient());
adapters.registerClient(V1beta1AdmissionRegistrationAPIGroupDSL.class,
new V1beta1AdmissionRegistrationAPIGroupClient());
this.getAdapters().registerClient(V1Alpha1AdmissionRegistrationAPIGroupDSL.class,
adapters.registerClient(V1Alpha1AdmissionRegistrationAPIGroupDSL.class,
new V1Alpha1AdmissionRegistrationAPIGroupClient());
this.getAdapters().registerClient(AutoscalingAPIGroupDSL.class, new AutoscalingAPIGroupClient());
this.getAdapters().registerClient(ApiextensionsAPIGroupDSL.class, new ApiextensionsAPIGroupClient());
this.getAdapters().registerClient(AuthorizationAPIGroupDSL.class, new AuthorizationAPIGroupClient());
this.getAdapters().registerClient(AuthenticationAPIGroupDSL.class, new AuthenticationAPIGroupClient());
this.getAdapters().registerClient(V1AutoscalingAPIGroupDSL.class, new V1AutoscalingAPIGroupClient());
this.getAdapters().registerClient(V2AutoscalingAPIGroupDSL.class, new V2AutoscalingAPIGroupClient());
this.getAdapters().registerClient(V2beta1AutoscalingAPIGroupDSL.class, new V2beta1AutoscalingAPIGroupClient());
this.getAdapters().registerClient(V2beta2AutoscalingAPIGroupDSL.class, new V2beta2AutoscalingAPIGroupClient());
this.getAdapters().registerClient(BatchAPIGroupDSL.class, new BatchAPIGroupClient());
this.getAdapters().registerClient(V1BatchAPIGroupDSL.class, new V1BatchAPIGroupClient());
this.getAdapters().registerClient(V1beta1BatchAPIGroupDSL.class, new V1beta1BatchAPIGroupClient());
this.getAdapters().registerClient(ExtensionsAPIGroupDSL.class, new ExtensionsAPIGroupClient());
this.getAdapters().registerClient(EventingAPIGroupDSL.class, new EventingAPIGroupClient());
this.getAdapters().registerClient(V1EventingAPIGroupDSL.class, new V1EventingAPIGroupClient());
this.getAdapters().registerClient(V1beta1EventingAPIGroupDSL.class, new V1beta1EventingAPIGroupClient());
this.getAdapters().registerClient(FlowControlAPIGroupDSL.class, new FlowControlAPIGroupClient());
this.getAdapters().registerClient(V1beta1FlowControlAPIGroupDSL.class, new V1beta1FlowControlAPIGroupClient());
this.getAdapters().registerClient(V1beta2FlowControlAPIGroupDSL.class, new V1beta2FlowControlAPIGroupClient());
this.getAdapters().registerClient(V1beta3FlowControlAPIGroupDSL.class, new V1beta3FlowControlAPIGroupClient());
this.getAdapters().registerClient(MetricAPIGroupDSL.class, new MetricAPIGroupClient());
this.getAdapters().registerClient(NetworkAPIGroupDSL.class, new NetworkAPIGroupClient());
this.getAdapters().registerClient(PolicyAPIGroupDSL.class, new PolicyAPIGroupClient());
this.getAdapters().registerClient(V1PolicyAPIGroupDSL.class, new V1PolicyAPIGroupClient());
this.getAdapters().registerClient(V1beta1PolicyAPIGroupDSL.class, new V1beta1PolicyAPIGroupClient());
this.getAdapters().registerClient(RbacAPIGroupDSL.class, new RbacAPIGroupClient());
this.getAdapters().registerClient(SchedulingAPIGroupDSL.class, new SchedulingAPIGroupClient());
this.getAdapters().registerClient(V1SchedulingAPIGroupDSL.class, new V1SchedulingAPIGroupClient());
this.getAdapters().registerClient(V1beta1SchedulingAPIGroupDSL.class, new V1beta1SchedulingAPIGroupClient());
this.getAdapters().registerClient(StorageAPIGroupDSL.class, new StorageAPIGroupClient());
this.getAdapters().registerClient(V1StorageAPIGroupClient.class, new V1StorageAPIGroupClient());
this.getAdapters().registerClient(V1beta1StorageAPIGroupClient.class, new V1beta1StorageAPIGroupClient());
this.getAdapters().registerClient(V1APIGroupDSL.class, new V1APIGroupClient());
this.getAdapters().registerClient(V1ApiextensionAPIGroupDSL.class, new V1ApiextensionsAPIGroupClient());
this.getAdapters().registerClient(V1beta1ApiextensionAPIGroupDSL.class, new V1beta1ApiextensionsAPIGroupClient());
this.getAdapters().registerClient(V1AuthorizationAPIGroupDSL.class, new V1AuthorizationAPIGroupClient());
this.getAdapters().registerClient(V1beta1AuthorizationAPIGroupDSL.class, new V1beta1AuthorizationAPIGroupClient());
this.getAdapters().registerClient(V1AuthenticationAPIGroupDSL.class, new V1AuthenticationAPIGroupClient());
this.getAdapters().registerClient(V1Alpha1AuthenticationAPIGroupDSL.class, new V1Alpha1AuthenticationAPIGroupClient());
this.getAdapters().registerClient(V1NetworkAPIGroupDSL.class, new V1NetworkAPIGroupClient());
this.getAdapters().registerClient(V1beta1NetworkAPIGroupDSL.class, new V1beta1NetworkAPIGroupClient());
this.getAdapters().registerClient(DiscoveryAPIGroupDSL.class, new DiscoveryAPIGroupClient());
this.getAdapters().registerClient(V1beta1DiscoveryAPIGroupDSL.class, new V1beta1DiscoveryAPIGroupClient());
this.getAdapters().registerClient(V1DiscoveryAPIGroupDSL.class, new V1DiscoveryAPIGroupClient());
this.getAdapters().registerClient(DynamicResourceAllocationAPIGroupDSL.class,
adapters.registerClient(AutoscalingAPIGroupDSL.class, new AutoscalingAPIGroupClient());
adapters.registerClient(ApiextensionsAPIGroupDSL.class, new ApiextensionsAPIGroupClient());
adapters.registerClient(AuthorizationAPIGroupDSL.class, new AuthorizationAPIGroupClient());
adapters.registerClient(AuthenticationAPIGroupDSL.class, new AuthenticationAPIGroupClient());
adapters.registerClient(V1AutoscalingAPIGroupDSL.class, new V1AutoscalingAPIGroupClient());
adapters.registerClient(V2AutoscalingAPIGroupDSL.class, new V2AutoscalingAPIGroupClient());
adapters.registerClient(V2beta1AutoscalingAPIGroupDSL.class, new V2beta1AutoscalingAPIGroupClient());
adapters.registerClient(V2beta2AutoscalingAPIGroupDSL.class, new V2beta2AutoscalingAPIGroupClient());
adapters.registerClient(BatchAPIGroupDSL.class, new BatchAPIGroupClient());
adapters.registerClient(V1BatchAPIGroupDSL.class, new V1BatchAPIGroupClient());
adapters.registerClient(V1beta1BatchAPIGroupDSL.class, new V1beta1BatchAPIGroupClient());
adapters.registerClient(ExtensionsAPIGroupDSL.class, new ExtensionsAPIGroupClient());
adapters.registerClient(EventingAPIGroupDSL.class, new EventingAPIGroupClient());
adapters.registerClient(V1EventingAPIGroupDSL.class, new V1EventingAPIGroupClient());
adapters.registerClient(V1beta1EventingAPIGroupDSL.class, new V1beta1EventingAPIGroupClient());
adapters.registerClient(FlowControlAPIGroupDSL.class, new FlowControlAPIGroupClient());
adapters.registerClient(V1beta1FlowControlAPIGroupDSL.class, new V1beta1FlowControlAPIGroupClient());
adapters.registerClient(V1beta2FlowControlAPIGroupDSL.class, new V1beta2FlowControlAPIGroupClient());
adapters.registerClient(V1beta3FlowControlAPIGroupDSL.class, new V1beta3FlowControlAPIGroupClient());
adapters.registerClient(MetricAPIGroupDSL.class, new MetricAPIGroupClient());
adapters.registerClient(NetworkAPIGroupDSL.class, new NetworkAPIGroupClient());
adapters.registerClient(PolicyAPIGroupDSL.class, new PolicyAPIGroupClient());
adapters.registerClient(V1PolicyAPIGroupDSL.class, new V1PolicyAPIGroupClient());
adapters.registerClient(V1beta1PolicyAPIGroupDSL.class, new V1beta1PolicyAPIGroupClient());
adapters.registerClient(RbacAPIGroupDSL.class, new RbacAPIGroupClient());
adapters.registerClient(SchedulingAPIGroupDSL.class, new SchedulingAPIGroupClient());
adapters.registerClient(V1SchedulingAPIGroupDSL.class, new V1SchedulingAPIGroupClient());
adapters.registerClient(V1beta1SchedulingAPIGroupDSL.class, new V1beta1SchedulingAPIGroupClient());
adapters.registerClient(StorageAPIGroupDSL.class, new StorageAPIGroupClient());
adapters.registerClient(V1StorageAPIGroupClient.class, new V1StorageAPIGroupClient());
adapters.registerClient(V1beta1StorageAPIGroupClient.class, new V1beta1StorageAPIGroupClient());
adapters.registerClient(V1APIGroupDSL.class, new V1APIGroupClient());
adapters.registerClient(V1ApiextensionAPIGroupDSL.class, new V1ApiextensionsAPIGroupClient());
adapters.registerClient(V1beta1ApiextensionAPIGroupDSL.class, new V1beta1ApiextensionsAPIGroupClient());
adapters.registerClient(V1AuthorizationAPIGroupDSL.class, new V1AuthorizationAPIGroupClient());
adapters.registerClient(V1beta1AuthorizationAPIGroupDSL.class, new V1beta1AuthorizationAPIGroupClient());
adapters.registerClient(V1AuthenticationAPIGroupDSL.class, new V1AuthenticationAPIGroupClient());
adapters.registerClient(V1Alpha1AuthenticationAPIGroupDSL.class, new V1Alpha1AuthenticationAPIGroupClient());
adapters.registerClient(V1NetworkAPIGroupDSL.class, new V1NetworkAPIGroupClient());
adapters.registerClient(V1beta1NetworkAPIGroupDSL.class, new V1beta1NetworkAPIGroupClient());
adapters.registerClient(DiscoveryAPIGroupDSL.class, new DiscoveryAPIGroupClient());
adapters.registerClient(V1beta1DiscoveryAPIGroupDSL.class, new V1beta1DiscoveryAPIGroupClient());
adapters.registerClient(V1DiscoveryAPIGroupDSL.class, new V1DiscoveryAPIGroupClient());
adapters.registerClient(DynamicResourceAllocationAPIGroupDSL.class,
new DynamicResourceAllocationAPIGroupClient());
this.getAdapters().registerClient(V1Alpha1DynamicResourceAllocationAPIGroupDSL.class,
adapters.registerClient(V1Alpha1DynamicResourceAllocationAPIGroupDSL.class,
new V1Alpha1DynamicResourceAllocationAPIGroupClient());
this.getAdapters().registerClient(CertificatesAPIGroupDSL.class, new CertificatesAPIGroupClient());
this.getAdapters().registerClient(V1CertificatesAPIGroupDSL.class, new V1CertificatesAPIGroupClient());
this.getAdapters().registerClient(V1beta1CertificatesAPIGroupDSL.class, new V1beta1CertificatesAPIGroupClient());

this.getHandlers().register(Pod.class, PodOperationsImpl::new);
this.getHandlers().register(ServiceAccount.class, ServiceAccountOperationsImpl::new);
this.getHandlers().register(Job.class, JobOperationsImpl::new);
this.getHandlers().register(Service.class, ServiceOperationsImpl::new);
this.getHandlers().register(Deployment.class, DeploymentOperationsImpl::new);
this.getHandlers().register(io.fabric8.kubernetes.api.model.extensions.Deployment.class,
adapters.registerClient(CertificatesAPIGroupDSL.class, new CertificatesAPIGroupClient());
adapters.registerClient(V1CertificatesAPIGroupDSL.class, new V1CertificatesAPIGroupClient());
adapters.registerClient(V1beta1CertificatesAPIGroupDSL.class, new V1beta1CertificatesAPIGroupClient());
}

/**
* Registers default handlers for Kubernetes resources.
*/
protected void registerDefaultHandlers() {
// Register Handlers
Handlers handlers = getHandlers();
handlers.register(Pod.class, PodOperationsImpl::new);
handlers.register(ServiceAccount.class, ServiceAccountOperationsImpl::new);
handlers.register(Job.class, JobOperationsImpl::new);
handlers.register(Service.class, ServiceOperationsImpl::new);
handlers.register(Deployment.class, DeploymentOperationsImpl::new);
handlers.register(io.fabric8.kubernetes.api.model.extensions.Deployment.class,
io.fabric8.kubernetes.client.dsl.internal.extensions.v1beta1.DeploymentOperationsImpl::new);
this.getHandlers().register(ReplicaSet.class, ReplicaSetOperationsImpl::new);
this.getHandlers().register(io.fabric8.kubernetes.api.model.extensions.ReplicaSet.class,
handlers.register(ReplicaSet.class, ReplicaSetOperationsImpl::new);
handlers.register(io.fabric8.kubernetes.api.model.extensions.ReplicaSet.class,
io.fabric8.kubernetes.client.dsl.internal.extensions.v1beta1.ReplicaSetOperationsImpl::new);
this.getHandlers().register(ReplicationController.class, ReplicationControllerOperationsImpl::new);
this.getHandlers().register(StatefulSet.class, StatefulSetOperationsImpl::new);
this.getHandlers().register(io.fabric8.kubernetes.api.model.certificates.v1.CertificateSigningRequest.class,
handlers.register(ReplicationController.class, ReplicationControllerOperationsImpl::new);
handlers.register(StatefulSet.class, StatefulSetOperationsImpl::new);
handlers.register(io.fabric8.kubernetes.api.model.certificates.v1.CertificateSigningRequest.class,
CertificateSigningRequestOperationsImpl::new);
this.getHandlers().register(io.fabric8.kubernetes.api.model.certificates.v1beta1.CertificateSigningRequest.class,
handlers.register(CertificateSigningRequest.class,
io.fabric8.kubernetes.client.dsl.internal.certificates.v1beta1.CertificateSigningRequestOperationsImpl::new);
}

protected KubernetesClientImpl(BaseClient client) {
super(client);
}

@Override
public NamespacedKubernetesClient inNamespace(String name) {
return newClient(createInNamespaceContext(name, false), NamespacedKubernetesClient.class);
Expand Down

0 comments on commit 2c12ea3

Please sign in to comment.