/**
* Starts any kublets from the profiles which are not already running
*/
protected void startKubletPodsReplicationControllersServices(FabricService service, CreateKubernetesContainerOptions options, List<String> kubeletFileNames, CreateKubernetesContainerMetadata metadata) {
Kubernetes kubernetes = getKubernetes();
Objects.notNull(kubernetes, "kubernetes");
Map<String, PodSchema> podMap = null;
Map<String, ReplicationControllerSchema> replicationControllerMap = null;
Map<String, ServiceSchema> serviceMap = null;
Map<String, Object> kubelets = loadKubelets(service, options, kubeletFileNames, metadata);
Set<Map.Entry<String, Object>> entries = kubelets.entrySet();
for (Map.Entry<String, Object> entry : entries) {
String definition = entry.getKey();
Object kubelet = entry.getValue();
if (kubelet instanceof PodSchema) {
PodSchema podSchema = (PodSchema) kubelet;
if (podMap == null) {
podMap = getPodMap(kubernetes);
}
String id = podSchema.getId();
PodSchema old = podMap.get(id);
if (isRunning(old)) {
LOG.info("Not creating pod for " + id + " from definition " + definition + " as its already running");
} else {
LOG.info("Creating a pod from " + definition);
try {
Object answer = kubernetes.createPod(podSchema);
LOG.info("Created pod result: " + answer);
} catch (Exception e) {
LOG.error("Failed to create pod from " + definition + ". " + e + ". " + podSchema, e);
}
}
} else if (kubelet instanceof ReplicationControllerSchema) {
ReplicationControllerSchema replicationControllerSchema = (ReplicationControllerSchema) kubelet;
if (replicationControllerMap == null) {
replicationControllerMap = getReplicationControllerMap(kubernetes);
}
String id = replicationControllerSchema.getId();
ReplicationControllerSchema old = replicationControllerMap.get(id);
if (isRunning(old)) {
LOG.info("Not creating replicationController for " + id + " from definition " + definition + " as its already running");
} else {
LOG.info("Creating a replicationController from " + definition);
try {
Object answer = kubernetes.createReplicationController(replicationControllerSchema);
LOG.info("Created replicationController: " + answer);
} catch (Exception e) {
LOG.error("Failed to create controller from " + definition + ". " + e + ". " + replicationControllerSchema, e);
}
}
} else if (kubelet instanceof ServiceSchema) {
ServiceSchema serviceSchema = (ServiceSchema) kubelet;
if (serviceMap == null) {
serviceMap = getServiceMap(kubernetes);
}
String id = serviceSchema.getId();
ServiceSchema old = serviceMap.get(id);
if (isRunning(old)) {
LOG.info("Not creating pod for " + id + " from defintion " + definition + " as its already running");
} else {
LOG.info("Creating a service from " + definition);
try {
Object answer = kubernetes.createService(serviceSchema);
LOG.info("Created service: " + answer);
} catch (Exception e) {
LOG.error("Failed to create controller from " + definition + ". " + e + ". " + serviceSchema, e);
}
}