public void addMissingResources()

in enricher/standard/src/main/java/io/fabric8/maven/enricher/standard/DefaultControllerEnricher.java [98:176]


    public void addMissingResources(KubernetesListBuilder builder) {
        final String name = getConfig(Config.name, MavenUtil.createDefaultResourceName(getProject()));
        final ResourceConfig config = new ResourceConfig.Builder()
                    .controllerName(name)
                    .imagePullPolicy(getConfig(Config.pullPolicy))
                    .withReplicas(Configs.asInt(getConfig(Config.replicaCount)))
                    .build();

        final List<ImageConfiguration> images = getImages();

        // Check if at least a replica set is added. If not add a default one
        if (!KubernetesResourceUtil.checkForKind(builder, POD_CONTROLLER_KINDS)) {
            // At least one image must be present, otherwise the resulting config will be invalid
            if (!Lists.isNullOrEmpty(images)) {
                String type = getConfig(Config.type);
                if ("deployment".equalsIgnoreCase(type)) {
                    log.info("Adding a default Deployment");
                    builder.addToDeploymentItems(deployHandler.getDeployment(config, images));
                } else if ("statefulSet".equalsIgnoreCase(type)) {
                    log.info("Adding a default StatefulSet");
                    builder.addToStatefulSetItems(statefulSetHandler.getStatefulSet(config, images));
                } else if ("daemonSet".equalsIgnoreCase(type)) {
                    log.info("Adding a default DaemonSet");
                    builder.addToDaemonSetItems(daemonSetHandler.getDaemonSet(config, images));
                } else if ("replicaSet".equalsIgnoreCase(type)) {
                    log.info("Adding a default ReplicaSet");
                    builder.addToReplicaSetItems(rsHandler.getReplicaSet(config, images));
                } else if ("replicationController".equalsIgnoreCase(type)) {
                    log.info("Adding a default ReplicationController");
                    builder.addToReplicationControllerItems(rcHandler.getReplicationController(config, images));
                } else if ("job".equalsIgnoreCase(type)) {
                    log.info("Adding a default Job");
                    builder.addToJobItems(jobHandler.getJob(config, images));
                }
            }
        } else if (KubernetesResourceUtil.checkForKind(builder, "StatefulSet")) {
            final StatefulSetSpec spec = statefulSetHandler.getStatefulSet(config, images).getSpec();
            if (spec != null) {
                builder.accept(new TypedVisitor<StatefulSetBuilder>() {
                    @Override
                    public void visit(StatefulSetBuilder statefulSetBuilder) {
                        statefulSetBuilder.editOrNewSpec().editOrNewTemplate().editOrNewSpec().endSpec().endTemplate().endSpec();
                        mergeStatefulSetSpec(statefulSetBuilder, spec);
                    }
                });

                if (spec.getTemplate() != null && spec.getTemplate().getSpec() != null) {
                    final PodSpec podSpec = spec.getTemplate().getSpec();
                    builder.accept(new TypedVisitor<PodSpecBuilder>() {
                        @Override
                        public void visit(PodSpecBuilder builder) {
                            KubernetesResourceUtil.mergePodSpec(builder, podSpec, name);
                        }
                    });
                }
            }
        } else {
            final DeploymentSpec spec = deployHandler.getDeployment(config, images).getSpec();
            if (spec != null) {
                builder.accept(new TypedVisitor<DeploymentBuilder>() {
                    @Override
                    public void visit(DeploymentBuilder deploymentBuilder) {
                        deploymentBuilder.editOrNewSpec().editOrNewTemplate().editOrNewSpec().endSpec().endTemplate().endSpec();
                        mergeDeploymentSpec(deploymentBuilder, spec);
                    }
                });

                if (spec.getTemplate() != null && spec.getTemplate().getSpec() != null) {
                    final PodSpec podSpec = spec.getTemplate().getSpec();
                    builder.accept(new TypedVisitor<PodSpecBuilder>() {
                        @Override
                        public void visit(PodSpecBuilder builder) {
                            KubernetesResourceUtil.mergePodSpec(builder, podSpec, name);
                        }
                    });
                }
            }
        }
    }