/** * Applies any overrides if we have any for the given item */ public HasMetadata overrideResource(HasMetadata item) { KindAndName key = new KindAndName(item); HasMetadata override = map.get(key); if (override != null) { log.info("Overriding " + key); HasMetadata answer = KubernetesResourceUtil.mergeResources(item, override, log, false); if (answer != null) { return answer; } } return item; } }
public void filterAndAddItemsToBuilder(KubernetesListBuilder builder, List<HasMetadata> items) { Map<KindAndName, Integer> aIndexMap = new HashMap<>(); int nItems = 0; // Populate map with existing items in the builder for(int index = 0; index < builder.getItems().size(); index++, nItems++) { HasMetadata aItem = builder.getItems().get(index); KindAndName aKey = new KindAndName(aItem); aIndexMap.put(aKey, index); } for(HasMetadata item : items) { KindAndName aKey = new KindAndName(item); if(aIndexMap.containsKey(aKey)) { // Merge the override fragments, and remove duplicate HasMetadata duplicateItem = builder.getItems().get(aIndexMap.get(aKey)); item = KubernetesResourceUtil.mergeResources(item, duplicateItem, log, false); builder.setToItems(aIndexMap.get(aKey), item); } else { aIndexMap.put(aKey, nItems++); builder.addToItems(item); } } }