private void revertVolumeChanges(StatefulSet current, StatefulSet desired) { Container currentKafka = current.getSpec().getTemplate().getSpec().getContainers().stream().filter(c -> c.getName().equals("kafka")).findFirst().get(); Container desiredKafka = desired.getSpec().getTemplate().getSpec().getContainers().stream().filter(c -> c.getName().equals("kafka")).findFirst().get(); desiredKafka.setVolumeMounts(currentKafka.getVolumeMounts()); StatefulSet updated = new StatefulSetBuilder(desired) .editSpec() .editTemplate() .editSpec() .editFirstContainer() .editMatchingEnv(e -> e.getName().equals(KafkaCluster.ENV_VAR_KAFKA_LOG_DIRS)) .withValue(desiredKafka.getVolumeMounts().stream() .filter(vm -> vm.getMountPath().contains(AbstractModel.VOLUME_NAME)) .map(vm -> vm.getMountPath()) .collect(Collectors.joining(","))) .endEnv() .endContainer() .endSpec() .endTemplate() .endSpec() .build(); desired.setSpec(updated.getSpec()); }
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; }
volumeMount.setReadOnly(true); volumeMount.setMountPath(TILLER_TLS_CERTS_PATH); container.setVolumeMounts(Arrays.asList(volumeMount));
volumeMount.setReadOnly(true); volumeMount.setMountPath(TILLER_TLS_CERTS_PATH); container.setVolumeMounts(Arrays.asList(volumeMount));