![JAR search and dependency download from the Maven repository](/logo.png)
com.alogic.kube.controller.ControllerManager Maven / Gradle / Ivy
package com.alogic.kube.controller;
import com.alogic.kube.informer.SharedInformerFactory;
import io.kubernetes.client.extended.controller.Controller;
import io.kubernetes.client.extended.controller.DefaultController;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ControllerManager implements Controller {
private static final Logger log = LoggerFactory.getLogger(DefaultController.class);
private Controller[] controllers;
private ExecutorService controllerThreadPool;
private SharedInformerFactory informerFactory;
public ControllerManager(SharedInformerFactory factory, Controller... controllers) {
this.controllers = controllers;
this.informerFactory = factory;
}
@Override
public void shutdown() {
Controller[] ctrls = this.controllers;
int length = ctrls.length;
for(int i = 0; i < length; ++i) {
Controller controller = ctrls[i];
controller.shutdown();
}
if (this.controllerThreadPool != null) {
this.controllerThreadPool.shutdown();
}
this.informerFactory.stopAllRegisteredInformers();
}
@Override
public void run() {
if (this.controllers.length == 0) {
throw new RuntimeException("no controller registered in the manager..");
} else {
this.informerFactory.startAllRegisteredInformers();
CountDownLatch latch = new CountDownLatch(this.controllers.length);
this.controllerThreadPool = Executors.newFixedThreadPool(this.controllers.length);
Controller[] ctrls = this.controllers;
int length = ctrls.length;
for(int i = 0; i < length; ++i) {
Controller controller = ctrls[i];
this.controllerThreadPool.submit(() -> {
try {
log.debug("Starting controller manager");
controller.run();
} catch (Throwable var6) {
log.error("Unexpected controller termination", var6);
} finally {
latch.countDown();
log.debug("Exiting controller manager");
}
});
}
try {
log.debug("Controller-Manager bootstrapping.");
latch.await();
} catch (InterruptedException var9) {
log.error("Aborting controller-manager.", var9);
} finally {
log.info("Controller-Manager exited");
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy