@Override public boolean matchesExactly(Flavor flavor) { return flavor.equals(this.requestedFlavor); }
private static boolean hasReplacement(Collection<Flavor> flavors, Flavor flavor) { return flavors.stream() .filter(f -> !f.equals(flavor)) .anyMatch(f -> f.satisfies(flavor)); }
/** * Returns whether this flavor satisfies the requested flavor, either directly * (by being the same), or by directly or indirectly replacing it */ public boolean satisfies(Flavor flavor) { if (this.equals(flavor)) { return true; } if (this.retired) { return false; } for (Flavor replaces : replacesFlavors) if (replaces.satisfies(flavor)) return true; return false; }
/** * Convert a list of nodes to a list of node priorities. This includes finding, calculating * parameters to the priority sorting procedure. */ private PrioritizableNode toNodePriority(Node node, boolean isSurplusNode, boolean isNewNode) { PrioritizableNode pri = new PrioritizableNode(); pri.node = node; pri.isSurplusNode = isSurplusNode; pri.isNewNode = isNewNode; pri.preferredOnFlavor = requestedNodes.specifiesNonStockFlavor() && node.flavor().equals(getFlavor(requestedNodes)); pri.parent = findParentNode(node); if (pri.parent.isPresent()) { Node parent = pri.parent.get(); pri.freeParentCapacity = capacity.freeCapacityOf(parent, false); if (spareHosts.contains(parent)) { pri.violatesSpares = true; } } return pri; }