@Test public void testVersionConstraints() throws Exception{ String aam = new Scanner(new File(Resources.getResource("aams/version_aam.yml").toURI())).useDelimiter("\\Z").next(); assertNotNull(aam); String offerings = new Scanner(new File(Resources.getResource("version_offerings.yml").toURI())).useDelimiter("\\Z").next(); assertNotNull(offerings); ParsingResult<ArchiveRoot> aamResult = ToscaSerializer.fromTOSCA(aam); ParsingResult<ArchiveRoot> offeringsResult = ToscaSerializer.fromTOSCA(offerings); Map<String, NodeTemplate> offNodeTemplates = offeringsResult.getResult().getTopology().getNodeTemplates(); Map<String, Pair<NodeTemplate, String>> off = new HashMap<>(); for(String node : offNodeTemplates.keySet()){ off.put(node, new Pair<NodeTemplate, String>(offNodeTemplates.get(node), "")); } Matchmaker mm = new Matchmaker(); Map<String, HashSet<String>> res = mm.match(aamResult, off); assertEquals(res.get("db1").size(), 3); }
private boolean match(IndexedNodeType module, NodeTemplate offering){ if(module.getProperties() == null) return true; PropertyValue offeringType = getPropertyValue("", offering.getProperties().get("resource_type")); for(String p:module.getProperties().keySet()) { if (!offering.getProperties().containsKey(p) && offeringType.getValue().equals("compute") && p.endsWith("_support")) continue; if (!offering.getProperties().containsKey(p) && p.endsWith("_version")) continue; if(!offering.getProperties().containsKey(p)) return false; PropertyDefinition moduleProperty = module.getProperties().get(p); AbstractPropertyValue offeringProperty = offering.getProperties().get(p); if(!matchProperty(moduleProperty, offeringProperty)) return false; } return true; }
Matchmaker { private boolean match(IndexedNodeType module, NodeTemplate offering){ if(module.getProperties() == null) return true; PropertyValue offeringType = getPropertyValue("", offering.getProperties().get("resource_type")); for(String p:module.getProperties().keySet()) { if (!offering.getProperties().containsKey(p) && offeringType.getValue().equals("compute") && p.endsWith("_support")) continue; if (!offering.getProperties().containsKey(p) && p.endsWith("_version")) continue; if(!offering.getProperties().containsKey(p)) return false; PropertyDefinition moduleProperty = module.getProperties().get(p); AbstractPropertyValue offeringProperty = offering.getProperties().get(p); if(!matchProperty(moduleProperty, offeringProperty)) return false; } return true; } }
Matchmaker { private boolean match(IndexedNodeType module, NodeTemplate offering){ if(module.getProperties() == null) return true; PropertyValue offeringType = getPropertyValue("", offering.getProperties().get("resource_type")); for(String p:module.getProperties().keySet()) { if (!offering.getProperties().containsKey(p) && offeringType.getValue().equals("compute") && p.endsWith("_support")) continue; if (!offering.getProperties().containsKey(p) && p.endsWith("_version")) continue; if(!offering.getProperties().containsKey(p)) return false; PropertyDefinition moduleProperty = module.getProperties().get(p); AbstractPropertyValue offeringProperty = offering.getProperties().get(p); if(!matchProperty(moduleProperty, offeringProperty)) return false; } return true; } Matchmaker(); }
Matchmaker { private boolean match(IndexedNodeType module, NodeTemplate offering){ if(module.getProperties() == null) return true; PropertyValue offeringType = getPropertyValue("", offering.getProperties().get("resource_type")); for(String p:module.getProperties().keySet()) { if (!offering.getProperties().containsKey(p) && offeringType.getValue().equals("compute") && p.endsWith("_support")) continue; if (!offering.getProperties().containsKey(p) && p.endsWith("_version")) continue; if(!offering.getProperties().containsKey(p)) return false; PropertyDefinition moduleProperty = module.getProperties().get(p); AbstractPropertyValue offeringProperty = offering.getProperties().get(p); if(!matchProperty(moduleProperty, offeringProperty)) return false; } return true; } Matchmaker(); PropertyValue getPropertyValue(String name, AbstractPropertyValue p); Constraint getConstraint(String name, PropertyConstraint c); @Deprecated Map<String, HashSet<String>> match(Map<String, IndexedNodeType> aamModules, Map<String, NodeTemplate> offerings); Map<String, HashSet<String>> match(ParsingResult<ArchiveRoot> aam, Map<String, Pair<NodeTemplate, String>> offerings); }
Matchmaker { private boolean match(IndexedNodeType module, NodeTemplate offering){ if(module.getProperties() == null) return true; PropertyValue offeringType = getPropertyValue("", offering.getProperties().get("resource_type")); for(String p:module.getProperties().keySet()) { if (!offering.getProperties().containsKey(p) && offeringType.getValue().equals("compute") && p.endsWith("_support")) continue; if (!offering.getProperties().containsKey(p) && p.endsWith("_version")) continue; if(!offering.getProperties().containsKey(p)) return false; PropertyDefinition moduleProperty = module.getProperties().get(p); AbstractPropertyValue offeringProperty = offering.getProperties().get(p); if(!matchProperty(moduleProperty, offeringProperty)) return false; } return true; } Matchmaker(); PropertyValue getPropertyValue(String name, AbstractPropertyValue p); Constraint getConstraint(String name, PropertyConstraint c); @Deprecated Map<String, HashSet<String>> match(Map<String, IndexedNodeType> aamModules, Map<String, NodeTemplate> offerings); Map<String, HashSet<String>> match(ParsingResult<ArchiveRoot> aam, Map<String, Pair<NodeTemplate, String>> offerings);  }