Skip to content

Commit 7acf5da

Browse files
committed
feat: skip controller registration if CRD is not present on cluster
Fixes #315
1 parent 8d321d4 commit 7acf5da

File tree

1 file changed

+15
-1
lines changed
  • operator-framework-core/src/main/java/io/javaoperatorsdk/operator

1 file changed

+15
-1
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,23 @@ public <R extends CustomResource> void register(
6767
new EventDispatcher(
6868
controller, finalizer, new EventDispatcher.CustomResourceFacade(client));
6969

70+
// check that the custom resource is known by the cluster
71+
final var crdName = configuration.getCRDName();
72+
final var crd =
73+
k8sClient.apiextensions().v1().customResourceDefinitions().withName(crdName).get();
74+
final var controllerName = configuration.getName();
75+
if (crd == null) {
76+
log.warn(
77+
"'{}' CRD was not found on the {} cluster, skipping '{}' controller registration",
78+
crdName,
79+
configurationService.getClientConfiguration().getMasterUrl(),
80+
controllerName);
81+
return;
82+
}
83+
7084
CustomResourceCache customResourceCache = new CustomResourceCache();
7185
DefaultEventHandler defaultEventHandler =
72-
new DefaultEventHandler(customResourceCache, dispatcher, configuration.getName(), retry);
86+
new DefaultEventHandler(customResourceCache, dispatcher, controllerName, retry);
7387
DefaultEventSourceManager eventSourceManager =
7488
new DefaultEventSourceManager(defaultEventHandler, retry != null);
7589
defaultEventHandler.setEventSourceManager(eventSourceManager);

0 commit comments

Comments
 (0)