11package io .javaoperatorsdk .operator ;
22
3- import static io .javaoperatorsdk .operator .ControllerUtils .getCrdName ;
4- import static io .javaoperatorsdk .operator .ControllerUtils .getCustomResourceClass ;
5-
63import io .fabric8 .kubernetes .api .model .apiextensions .v1beta1 .CustomResourceDefinition ;
74import io .fabric8 .kubernetes .client .CustomResource ;
85import io .fabric8 .kubernetes .client .CustomResourceDoneable ;
1310import io .fabric8 .kubernetes .client .dsl .internal .CustomResourceOperationsImpl ;
1411import io .fabric8 .kubernetes .internal .KubernetesDeserializer ;
1512import io .javaoperatorsdk .operator .api .ResourceController ;
13+ import io .javaoperatorsdk .operator .api .config .ConfigurationService ;
1614import io .javaoperatorsdk .operator .processing .CustomResourceCache ;
1715import io .javaoperatorsdk .operator .processing .DefaultEventHandler ;
1816import io .javaoperatorsdk .operator .processing .EventDispatcher ;
1917import io .javaoperatorsdk .operator .processing .event .DefaultEventSourceManager ;
2018import io .javaoperatorsdk .operator .processing .event .internal .CustomResourceEventSource ;
19+ import io .javaoperatorsdk .operator .processing .retry .GenericRetry ;
2120import io .javaoperatorsdk .operator .processing .retry .Retry ;
2221import java .util .Arrays ;
2322import java .util .HashMap ;
@@ -30,11 +29,21 @@ public class Operator {
3029
3130 private static final Logger log = LoggerFactory .getLogger (Operator .class );
3231 private final KubernetesClient k8sClient ;
32+ private final ConfigurationService configurationService ;
3333 private Map <Class <? extends CustomResource >, CustomResourceOperationsImpl > customResourceClients =
3434 new HashMap <>();
3535
36- public Operator (KubernetesClient k8sClient ) {
36+ public Operator (KubernetesClient k8sClient , ConfigurationService configurationService ) {
3737 this .k8sClient = k8sClient ;
38+ this .configurationService = configurationService ;
39+ }
40+
41+ public <R extends CustomResource > void register (ResourceController <R > controller )
42+ throws OperatorException {
43+ final var configuration = configurationService .getConfigurationFor (controller );
44+ final var retry = GenericRetry .fromConfiguration (configuration .getRetryConfiguration ());
45+ final var targetNamespaces = configuration .getNamespaces ().toArray (new String [] {});
46+ registerController (controller , configuration .watchAllNamespaces (), retry , targetNamespaces );
3847 }
3948
4049 public <R extends CustomResource > void registerControllerForAllNamespaces (
@@ -65,16 +74,14 @@ private <R extends CustomResource> void registerController(
6574 Retry retry ,
6675 String ... targetNamespaces )
6776 throws OperatorException {
68- Class <R > resClass = getCustomResourceClass (controller );
77+ final var configuration = configurationService .getConfigurationFor (controller );
78+ Class <R > resClass = configuration .getCustomResourceClass ();
6979 CustomResourceDefinitionContext crd = getCustomResourceDefinitionForController (controller );
7080 KubernetesDeserializer .registerCustomKind (crd .getVersion (), crd .getKind (), resClass );
71- String finalizer = ControllerUtils .getFinalizer (controller );
81+ String finalizer = configuration .getFinalizer ();
7282 MixedOperation client =
7383 k8sClient .customResources (
74- crd ,
75- resClass ,
76- CustomResourceList .class ,
77- ControllerUtils .getCustomResourceDoneableClass (controller ));
84+ crd , resClass , CustomResourceList .class , configuration .getDoneableClass ());
7885 EventDispatcher eventDispatcher =
7986 new EventDispatcher (
8087 controller , finalizer , new EventDispatcher .CustomResourceFacade (client ));
@@ -98,7 +105,7 @@ private <R extends CustomResource> void registerController(
98105 watchAllNamespaces ,
99106 targetNamespaces ,
100107 defaultEventHandler ,
101- ControllerUtils . getGenerationEventProcessing ( controller ),
108+ configuration . isGenerationAware ( ),
102109 finalizer );
103110 eventSourceManager .registerCustomResourceEventSource (customResourceEventSource );
104111
@@ -133,7 +140,7 @@ private CustomResourceEventSource createCustomResourceEventSource(
133140
134141 private CustomResourceDefinitionContext getCustomResourceDefinitionForController (
135142 ResourceController controller ) {
136- String crdName = getCrdName (controller );
143+ final var crdName = configurationService . getConfigurationFor (controller ). getCRDName ( );
137144 CustomResourceDefinition customResourceDefinition =
138145 k8sClient .customResourceDefinitions ().withName (crdName ).get ();
139146 if (customResourceDefinition == null ) {
0 commit comments