private void validateContainer(Container container) { if (container.getImage() == null) { throw new IllegalArgumentException("Container " + container.getName() + " has no Docker image configured. " + "Please check your Docker image configuration (including the generators which are supposed to run)"); } } }
public ContainerBuilder( ContainerFluent<?> fluent , Container instance ){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); } public ContainerBuilder( Container instance ){
public ContainerBuilder( Container instance ){ this.fluent = this; this.withArgs(instance.getArgs()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
public ContainerBuilder( ContainerFluent<?> fluent , Container instance ){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCapabilities(instance.getCapabilities()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withPrivileged(instance.getPrivileged()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); } public ContainerBuilder( Container instance ){
public ContainerBuilder( Container instance ){ this.fluent = this; this.withArgs(instance.getArgs()); this.withCapabilities(instance.getCapabilities()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withPrivileged(instance.getPrivileged()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
private static boolean isLocalCustomisation(PodSpec podSpec) { List<Container> containers = podSpec.getContainers() != null ? podSpec.getContainers() : Collections.<Container>emptyList(); for (Container container : containers) { if (StringUtils.isNotBlank(container.getImage())) { return false; } } return true; } }
public ContainerFluentImpl(Container instance){ this.withArgs(instance.getArgs()); this.withCommand(instance.getCommand()); this.withEnv(instance.getEnv()); this.withImage(instance.getImage()); this.withImagePullPolicy(instance.getImagePullPolicy()); this.withLifecycle(instance.getLifecycle()); this.withLivenessProbe(instance.getLivenessProbe()); this.withName(instance.getName()); this.withPorts(instance.getPorts()); this.withReadinessProbe(instance.getReadinessProbe()); this.withResources(instance.getResources()); this.withSecurityContext(instance.getSecurityContext()); this.withStdin(instance.getStdin()); this.withStdinOnce(instance.getStdinOnce()); this.withTerminationMessagePath(instance.getTerminationMessagePath()); this.withTty(instance.getTty()); this.withVolumeMounts(instance.getVolumeMounts()); this.withWorkingDir(instance.getWorkingDir()); }
public static boolean podHasContainerImage(Pod pod, String imageName) { if (pod != null) { PodSpec spec = pod.getSpec(); if (spec != null) { List<Container> containers = spec.getContainers(); if (containers != null) { for (Container container : containers) { if (Objects.equals(imageName, container.getImage())) { return true; } } } } } return false; }
public ContainerBuilder(ContainerFluent<?> fluent,Container instance,Boolean validationEnabled){ this.fluent = fluent; fluent.withArgs(instance.getArgs()); fluent.withCommand(instance.getCommand()); fluent.withEnv(instance.getEnv()); fluent.withImage(instance.getImage()); fluent.withImagePullPolicy(instance.getImagePullPolicy()); fluent.withLifecycle(instance.getLifecycle()); fluent.withLivenessProbe(instance.getLivenessProbe()); fluent.withName(instance.getName()); fluent.withPorts(instance.getPorts()); fluent.withReadinessProbe(instance.getReadinessProbe()); fluent.withResources(instance.getResources()); fluent.withSecurityContext(instance.getSecurityContext()); fluent.withStdin(instance.getStdin()); fluent.withStdinOnce(instance.getStdinOnce()); fluent.withTerminationMessagePath(instance.getTerminationMessagePath()); fluent.withTty(instance.getTty()); fluent.withVolumeMounts(instance.getVolumeMounts()); fluent.withWorkingDir(instance.getWorkingDir()); this.validationEnabled = validationEnabled; } public ContainerBuilder(Container instance){
private void mergeImage(ImageConfiguration imageConfiguration, Container container) { if (StringUtils.isBlank(container.getImage())) { String prefix = ""; if (StringUtils.isNotBlank(imageConfiguration.getRegistry())) { log.verbose("Using registry %s for the image", imageConfiguration.getRegistry()); prefix = imageConfiguration.getRegistry() + "/"; } String imageFullName = prefix + imageConfiguration.getName(); log.verbose("Setting image %s", imageFullName); container.setImage(imageFullName); } }
public void pollBrokers() { try { Map<String, Pod> podMap = KubernetesHelper.getSelectedPodMap(kubernetes, getBrokerSelector()); Collection<Pod> pods = podMap.values(); LOG.info("Checking " + getBrokerSelector() + ": groupSize = " + pods.size()); for (Pod pod : pods) { String host = KubernetesHelper.getHost(pod); List<Container> containers = KubernetesHelper.getContainers(pod); for (Container container : containers) { try { LOG.info("Checking pod " + getName(pod) + " container: " + container.getName() + " image: " + container.getImage()); J4pClient client = clients.clientForContainer(host, container, pod); populateBrokerStatistics(pod, client); } catch (Throwable e) { LOG.error("Failed to get broker statistics for pod: " + getName(pod)); } } } } catch (Throwable e) { LOG.error("Failed to pollBrokers ", e); } }
@Override protected Future<ReconcileResult<DeploymentConfig>> internalPatch(String namespace, String name, DeploymentConfig current, DeploymentConfig desired) { desired.getSpec().getTemplate().getSpec().getContainers().get(0).setImage(current.getSpec().getTemplate().getSpec().getContainers().get(0).getImage()); return super.internalPatch(namespace, name, current, desired); } }
private boolean updateImageName(HasMetadata entity, PodTemplateSpec template, String imagePrefix, String imageName) { boolean answer = false; PodSpec spec = template.getSpec(); if (spec != null) { List<Container> containers = spec.getContainers(); if (containers != null) { for (Container container : containers) { String image = container.getImage(); if (image != null && image.startsWith(imagePrefix)) { container.setImage(imageName); log.info("Updating " + KubernetesHelper.getKind(entity) + " " + KubernetesHelper.getName(entity) + " to use image: " + imageName); answer = true; } } } } return answer; } }
public static Container addOrUpdateDesiredContainer(Pod pod, String containerName, Container container) { List<Container> containers = getOrCreatePodDesiredContainers(pod); Container oldContainer = findContainer(containers, containerName); if (oldContainer != null) { // lets update it just in case something changed... containers.remove(oldContainer); } Container newContainer = new Container(); // TODO we should use bean utils or something to copy properties in case we miss one! newContainer.setCommand(container.getCommand()); newContainer.setEnv(container.getEnv()); newContainer.setImage(container.getImage()); newContainer.setPorts(container.getPorts()); newContainer.setVolumeMounts(container.getVolumeMounts()); newContainer.setWorkingDir(container.getWorkingDir()); newContainer.getAdditionalProperties().putAll(container.getAdditionalProperties()); newContainer.setName(containerName); LOG.info("Added new container: {}", containerName); containers.add(newContainer); return newContainer; }
private void mergeImage(ImageConfiguration imageConfiguration, Container container) { if (Strings.isNullOrBlank(container.getImage())) { String prefix = ""; if (Strings.isNotBlank(imageConfiguration.getRegistry())) { log.verbose("Using registry %s for the image", imageConfiguration.getRegistry()); prefix = imageConfiguration.getRegistry() + "/"; } String imageFullName = prefix + imageConfiguration.getName(); log.verbose("Setting image %s", imageFullName); container.setImage(imageFullName); } }
@Override public void visit(ContainerBuilder cb) { Container container = cb.build(); String containerName = container.getName(); String containerImage = container.getImage(); ImageName image = new ImageName(containerImage); if (isContainerAllowed(containerName) && image.getRegistry() == null && image.getUser() == null) { // Imagestreams used as trigger are in the same namespace String tag = image.getTag() != null ? image.getTag() : "latest"; ImageChangeTrigger trigger = new ImageChangeTriggerBuilder() .withNewFrom() .withKind("ImageStreamTag") .withName(image.getSimpleName() + ":" + tag) .endFrom() .build(); trigger.setAdditionalProperty("fieldPath", "spec.template.spec.containers[?(@.name==\"" + containerName + "\")].image"); triggerList.add(trigger); } } });
@Override public void visit(ContainerBuilder cb) { Container container = cb.build(); String containerName = container.getName(); String containerImage = container.getImage(); ImageName image = new ImageName(containerImage); if (isContainerAllowed(containerName) && image.getRegistry() == null && image.getUser() == null) { // Imagestreams used as trigger are in the same namespace String tag = image.getTag() != null ? image.getTag() : "latest"; ImageChangeTrigger trigger = new ImageChangeTriggerBuilder() .withNewFrom() .withKind("ImageStreamTag") .withName(image.getSimpleName() + ":" + tag) .endFrom() .build(); trigger.setAdditionalProperty("fieldPath", "spec.template.spec.containers[?(@.name==\"" + containerName + "\")].image"); triggerList.add(trigger); } } });