@Test public void testMatchmakerOutput() throws Exception { ToscaParser parser = new ToscaParserSupplier().get(); assertNotNull(parser); ParsingResult<ArchiveRoot> aam = parser.parseFile(Paths.get(Resources.getResource("aams/atos_aam.yml").toURI())); ParsingResult<ArchiveRoot> offerings = parser.parseFile(Paths.get(Resources.getResource("aams/atos_offerings.yml").toURI())); Map<String, Pair<NodeTemplate, String>> offeringsToMatch = new HashMap<>(); Map<String, NodeTemplate> offeringsNt = offerings.getResult().getTopology().getNodeTemplates(); for(String ntn : offeringsNt.keySet()){ offeringsToMatch.put(ntn, new Pair<NodeTemplate, String>(offeringsNt.get(ntn), ntn)); } Map<String, HashSet<String>> res = new Matchmaker().match(aam, offeringsToMatch); assertNotNull(res); assertEquals(res.get("webservices").size(), 1); assertEquals(res.get("db1").size(), 4); assertEquals(res.get("www").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);  }