public static String getNodeTagValueOrNull(AbstractTemplate template, String name) { List<Tag> tags = template.getTags(); if (tags != null) { Optional<Tag> first = tags.stream().filter(tag -> tag.getName().equals(name)).findFirst(); if (first.isPresent()) { return first.get().getValue(); } } return null; }
public static void setNodeTagValue(AbstractTemplate template, String name, String value) { List<Tag> tags = template.getTags(); if (tags == null) { tags = Lists.newArrayList(); template.setTags(tags); } tags.add(new Tag(name, value)); }
private void processSpecificReplacement(Map<String, T> topologyTemplateMap, String nodeId, String locationResourceTemplateId) { // Fetching a new node copy from elasticsearch avoid later issues if the same subtituted node is used in multiple templates (shared maps, shallow copies // etc.) V resourceTemplate = getLocationResourceTemplateCopy(locationResourceTemplateId); T replacingNode = resourceTemplate.getTemplate(); // Substitute the node in the topology with the location provided implementation. T replacedTopologyNode = topologyTemplateMap.put(nodeId, replacingNode); // Merge name, properties and capability properties replacingNode.setName(replacedTopologyNode.getName()); // TODO Log all properties defined in the topology but not merged into the final node Set<String> topologyNotMergedProps = Sets.newHashSet(); // Merge properties from the topology node but prevent any override. replacingNode.setProperties(getMergedProperties(replacedTopologyNode.getProperties(), replacingNode.getProperties(), true, topologyNotMergedProps)); // We need to keep tags (metadata) in the replaced node replacingNode.setTags(replacedTopologyNode.getTags()); processSpecificReplacement(replacingNode, replacedTopologyNode, topologyNotMergedProps); }