private void addDeploymentVersion(Map<String, String> deploymentVersions, HasMetadata resource) { String name = KubernetesHelper.getName(resource); String version = KubernetesHelper.getLabels(resource).get("version"); // TODO if there is no version label could we find it from somewhere else? if (Strings.isNotBlank(version)) { deploymentVersions.put(name, version); } else { listener.getLogger().println("No version label for " + KubernetesHelper.getKind(resource) + " " + KubernetesHelper.getName(resource) + " in namespace " + KubernetesHelper.getNamespace(resource)); } }
private void addDeploymentVersion(Map<String, String> deploymentVersions, HasMetadata resource) { String name = KubernetesHelper.getName(resource); String version = KubernetesHelper.getLabels(resource).get("version"); // TODO if there is no version label could we find it from somewhere else? if (Strings.isNotBlank(version)) { deploymentVersions.put(name, version); } else { listener.getLogger().println("No version label for " + KubernetesHelper.getKind(resource) + " " + KubernetesHelper.getName(resource) + " in namespace " + KubernetesHelper.getNamespace(resource)); } }
@Override public void adapt(KubernetesListBuilder builder) { List<HasMetadata> items = notNullList(builder.getItems()); Map<String, Map<String, HasMetadata>> kindMaps = new HashMap<>(); List<HasMetadata> removeList = new ArrayList<>(); for (HasMetadata item : items) { String kind = getKind(item); String name = KubernetesHelper.getName(item); Map<String, HasMetadata> map = kindMaps.get(kind); if (map == null) { map = new HashMap<>(); kindMaps.put(kind, map); } HasMetadata old = map.get(name); if (old != null) { HasMetadata removeItem = mergeEntities(old, item); if (removeItem != null) { removeList.add(removeItem); } } else { map.put(name, item); } } items.removeAll(removeList); builder.withItems(items); }
private void processArtifactSetResources(Set<URL> artifactSet, Function<List<HasMetadata>, Void> function) { for (URL url : artifactSet) { try { InputStream is = url.openStream(); if (is != null) { log.debug("Processing Kubernetes YAML in at: %s", url); KubernetesList resources = new ObjectMapper(new YAMLFactory()).readValue(is, KubernetesList.class); List<HasMetadata> items = notNullList(resources.getItems()); if (items.size() == 0 && Objects.equals("Template", resources.getKind())) { is = url.openStream(); Template template = new ObjectMapper(new YAMLFactory()).readValue(is, Template.class); if (template != null) { items.add(template); } } for (HasMetadata item : items) { KubernetesResourceUtil.setSourceUrlAnnotationIfNotSet(item, url.toString()); log.debug(" found %s %s", getKind(item), KubernetesHelper.getName(item)); } function.apply(items); } } catch (IOException e) { getLog().debug("Skipping %s: %s", url, e); } } }
protected void onWatchEvent(io.fabric8.kubernetes.client.Watcher.Action action, HasMetadata entity, NotifyConfig notifyConfig) { if (!notifyConfig.isEnabled(action)) { return; } String kind = KubernetesHelper.getKind(entity); String name = KubernetesHelper.getName(entity); String namespace = getNamespace(); String actionText = action.toString().toLowerCase(); String room = this.roomExpression.replace("${namespace}", namespace).replace("${kind}", kind).replace("${name}", name); String postfix = ""; if (action.equals(Watcher.Action.ADDED) || action.equals(Watcher.Action.MODIFIED)) { if (Strings.isNotBlank(consoleLink)) { postfix += " " + consoleLink + "/kubernetes/namespace/" + namespace + "/" + kind.toLowerCase() + "s/" + name; } } String message = actionText + " " + decapitalize(kind) + " " + namespace + " / " + name + postfix; notifier.notifyRoom(room, message); } }
String oldValue = annotations.get(annotation); if (Strings.isNotBlank(oldValue)) { listener.getLogger().println("Not adding annotation `" + annotation + "` to " + KubernetesHelper.getKind(resource) + " " + KubernetesHelper.getName(resource) + " with value `" + value + "` as there is already an annotation value of `" + oldValue + "`"); } else { annotations.put(annotation, value);
String oldValue = annotations.get(annotation); if (Strings.isNotBlank(oldValue)) { listener.getLogger().println("Not adding annotation `" + annotation + "` to " + KubernetesHelper.getKind(resource) + " " + KubernetesHelper.getName(resource) + " with value `" + value + "` as there is already an annotation value of `" + oldValue + "`"); } else { annotations.put(annotation, value);
log.info("Enabling debug on " + getKind(entity) + " " + KubernetesHelper.getName(entity) + " due to the property: " + ENABLE_DEBUG_MAVEN_PROPERTY); return true;
log.info("Enabling debug on " + getKind(entity) + " " + KubernetesHelper.getName(entity) + " due to the property: " + ENABLE_DEBUG_MAVEN_PROPERTY); return true;
private HasMetadata mergeEntities(HasMetadata item1, HasMetadata item2) { if (isMergeEnabled()) { HasMetadata answer = KubernetesResourceUtil.mergeResources(item1, item2, log, true); if (answer != null) return answer; /* log.info("Have 2 resources for " + getKind(item1) + " " + KubernetesHelper.getName(item1) + " assuming they are the same and picking one!"); // for now lets just pick one and assume they are identical // TODO lets improve this with real merges! return item1; */ } // we expect lots of duplicates when making an app catalog as we have the composites and individual manifests try { if (!getContext().runningWithGoal("fabric8:app-catalog")) { log.warn("Duplicate resources for %s %s from %s and %s", getKind(item1), KubernetesHelper.getName(item1), KubernetesResourceUtil.getSourceUrlAnnotation(item1), KubernetesResourceUtil.getSourceUrlAnnotation(item2)); } } catch (MojoExecutionException e) { log.warn("Failed to check if generated an app-catalog: %s", e); } return null; }