From b713fc2e83452517654c9e37c6380cb68bfbafe7 Mon Sep 17 00:00:00 2001 From: sblimkie Date: Fri, 16 Mar 2018 15:29:41 -0400 Subject: Allow ingestion of edge schema at deploy time Gizmo to optionally allow a deployer to drop in a custom edge schema at deploy time. Change-Id: I5b7ccca79bc4fdb79629d308f517d4446adeb971 Issue-ID: AAI-889 Signed-off-by: sblimkie --- .../onap/schema/RelationshipSchemaLoaderTest.java | 14 + .../org/onap/schema/RelationshipSchemaTest.java | 29 +- src/test/resources/model/DbEdgeRules_v11.json | 1962 -------------------- 3 files changed, 34 insertions(+), 1971 deletions(-) delete mode 100644 src/test/resources/model/DbEdgeRules_v11.json (limited to 'src/test') diff --git a/src/test/java/org/onap/schema/RelationshipSchemaLoaderTest.java b/src/test/java/org/onap/schema/RelationshipSchemaLoaderTest.java index 565a215..22fead0 100644 --- a/src/test/java/org/onap/schema/RelationshipSchemaLoaderTest.java +++ b/src/test/java/org/onap/schema/RelationshipSchemaLoaderTest.java @@ -45,12 +45,14 @@ public class RelationshipSchemaLoaderTest { @Test public void loadModels() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); RelationshipSchemaLoader.loadModels(); assertFalse( RelationshipSchemaLoader.getVersionContextMap().keySet().isEmpty()); } @Test public void loadModelsWithAVersion() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); RelationshipSchemaLoader.loadModels("v11"); assertEquals(1, RelationshipSchemaLoader.getVersionContextMap().keySet().size()); assertEquals("v11", RelationshipSchemaLoader.getLatestSchemaVersion()); @@ -58,14 +60,25 @@ public class RelationshipSchemaLoaderTest { @Test public void getSchemaForVersion() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); RelationshipSchemaLoader.loadModels("v11"); String version = RelationshipSchemaLoader.getLatestSchemaVersion(); RelationshipSchema g = RelationshipSchemaLoader.getSchemaForVersion(version); assertNotNull(g.lookupRelationType("org.onap.relationships.inventory.BelongsTo")); } + public void getSchemaForVersionManualFile() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); + RelationshipSchemaLoader.loadModels("v10"); + String version = RelationshipSchemaLoader.getLatestSchemaVersion(); + RelationshipSchema g = RelationshipSchemaLoader.getSchemaForVersion(version); + assertNotNull(g.lookupRelationType("locatedIn")); + } + + @Test public void getSchemaForVersionFail() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); RelationshipSchemaLoader.loadModels(); try { RelationshipSchemaLoader.getSchemaForVersion("v1"); @@ -76,6 +89,7 @@ public class RelationshipSchemaLoaderTest { @Test public void setVersionContextMap() throws Exception { + RelationshipSchemaLoader.resetVersionContextMap(); ArrayList jsonString = new ArrayList(); String rules = "{" + "\"rules\": [" + diff --git a/src/test/java/org/onap/schema/RelationshipSchemaTest.java b/src/test/java/org/onap/schema/RelationshipSchemaTest.java index 7d54a30..ce8559a 100644 --- a/src/test/java/org/onap/schema/RelationshipSchemaTest.java +++ b/src/test/java/org/onap/schema/RelationshipSchemaTest.java @@ -24,6 +24,8 @@ import org.apache.commons.io.IOUtils; import org.junit.Test; import org.onap.crud.exception.CrudException; +import com.att.aft.dme2.internal.apache.commons.lang.ArrayUtils; + import java.io.File; import java.io.FileInputStream; import java.io.IOException; @@ -60,17 +62,17 @@ public class RelationshipSchemaTest { public void shouldContainValidTypes() throws Exception { Map versionContextMap = new ConcurrentHashMap<>(); loadRelations(versionContextMap); - assertTrue(versionContextMap.get("v11").isValidType("groupsResourcesIn")); - assertTrue(versionContextMap.get("v11").isValidType("uses")); - assertFalse(versionContextMap.get("v11").isValidType("notValidType")); + assertTrue(versionContextMap.get("v10").isValidType("groupsResourcesIn")); + assertTrue(versionContextMap.get("v10").isValidType("uses")); + assertFalse(versionContextMap.get("v10").isValidType("notValidType")); } @Test public void shouldLookUpByRelation() throws Exception { Map versionContextMap = new ConcurrentHashMap<>(); loadRelations(versionContextMap); - assertNotNull(versionContextMap.get("v11").lookupRelation("availability-zone:complex:groupsResourcesIn")); - assertTrue(versionContextMap.get("v11") + assertNotNull(versionContextMap.get("v10").lookupRelation("availability-zone:complex:groupsResourcesIn")); + assertTrue(versionContextMap.get("v10") .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("prevent-delete")); } @@ -78,8 +80,8 @@ public class RelationshipSchemaTest { public void shouldLookUpByRelationType() throws Exception { Map versionContextMap = new ConcurrentHashMap<>(); loadRelations(versionContextMap); - assertNotNull(versionContextMap.get("v11").lookupRelationType("groupsResourcesIn")); - assertTrue(versionContextMap.get("v11") + assertNotNull(versionContextMap.get("v10").lookupRelationType("groupsResourcesIn")); + assertTrue(versionContextMap.get("v10") .lookupRelation("availability-zone:complex:groupsResourcesIn").containsKey("prevent-delete")); } @@ -88,7 +90,14 @@ public class RelationshipSchemaTest { File dir = new File(classLoader.getResource("model").getFile()); File[] allFiles = dir.listFiles((d, name) -> (propsFilePattern.matcher(name).matches() || rulesFilePattern.matcher(name).matches())); - + + // Special handling for the v12 file, as it is used for a special test + for (File f : allFiles) { + if (f.getName().equals("edge_properties_v11.json")) { + allFiles = (File[]) ArrayUtils.removeElement(allFiles, f); + } + } + Arrays.stream(allFiles).sorted(Comparator.comparing(File::getName)) .collect(Collectors.groupingBy(f -> myMatcher(versionPattern, f.getName()))) .forEach((e, f) -> map.put(e, jsonFilesLoader(f))); @@ -104,7 +113,9 @@ public class RelationshipSchemaTest { } try { - rsSchema = new RelationshipSchema(fileContents); + if (fileContents.size() == 2) { + rsSchema = new RelationshipSchema(fileContents); + } } catch (CrudException e) { e.printStackTrace(); } catch (IOException e) { diff --git a/src/test/resources/model/DbEdgeRules_v11.json b/src/test/resources/model/DbEdgeRules_v11.json deleted file mode 100644 index d24acd7..0000000 --- a/src/test/resources/model/DbEdgeRules_v11.json +++ /dev/null @@ -1,1962 +0,0 @@ -{ - "rules": [ - { - "from": "availability-zone", - "to": "complex", - "label": "groupsResourcesIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from" : "auth-info-item", - "to" : "tenant", - "label" : "defaultTenant", - "direction" : "OUT", - "multiplicity" : "One2One", - "isParent" : "false", - "usesResource" : "false", - "hasDelTarget" : "false", - "SVC-INFRA" : "false" - }, - { - "from": "generic-vnf", - "to": "license-key-resource", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "availability-zone", - "to": "service-capability", - "label": "supportsServiceCapability", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "cloud-region", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "cloud-region", - "to": "l3-network", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "cloud-region", - "to": "tenant", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "auth-info-item", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "image", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "flavor", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "availability-zone", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "oam-network", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "dvs-switch", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "volume-group", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "group-assignment", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "snapshot", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "${direction}" - }, - { - "from": "cloud-region", - "to": "zone", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "complex", - "to": "ctag-pool", - "label": "hasCtagPool", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "complex", - "to": "l3-network", - "label": "usesL3Network", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "ctag-pool", - "to": "availability-zone", - "label": "supportsAvailabilityZone", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "customer", - "to": "service-subscription", - "label": "subscribesTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "dvs-switch", - "to": "availability-zone", - "label": "existsIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "l-interface", - "label": "hasLInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "availability-zone", - "label": "hasAvailabilityZone", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "lag-interface", - "label": "hasLAGInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "l3-network", - "label": "usesL3Network", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "pserver", - "label": "runsOnPserver", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "vnf-image", - "label": "usesVnfImage", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "vserver", - "label": "runsOnVserver", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "service-instance", - "label": "hasInstance", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "site-pair-set", - "label": "hasSitePairSet", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "network-profile", - "label": "hasNetworkProfile", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "pnf", - "label": "hostedOn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "group-assignment", - "to": "tenant", - "label": "has", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "group-assignment", - "to": "pserver", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "image", - "to": "metadatum", - "label": "hasMetaDatum", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vnfc", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "l3-interface-ipv4-address-list", - "label": "hasIpAddress", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "l3-interface-ipv6-address-list", - "label": "hasIpAddress", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "l-interface", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "logical-link", - "label": "usesLogicalLink", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "lag-interface", - "to": "logical-link", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "vlan", - "label": "hasVlan", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l-interface", - "to": "sriov-vf", - "label": "has", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l3-interface-ipv4-address-list", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l3-interface-ipv6-address-list", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l3-interface-ipv4-address-list", - "to": "l3-network", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-interface-ipv6-address-list", - "to": "l3-network", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-interface-ipv4-address-list", - "to": "subnet", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "l3-interface-ipv6-address-list", - "to": "subnet", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "l3-network", - "to": "vpn-binding", - "label": "usesVpnBinding", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "l3-network", - "to": "instance-group", - "label": "memberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "subnet", - "label": "hasSubnet", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "service-instance", - "label": "hasInstance", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "ctag-assignment", - "label": "hasCtagAssignment", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "network-policy", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "segmentation-assignment", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "l3-network", - "to": "route-table-reference", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "lag-interface", - "to": "lag-link", - "label": "usesLAGLink", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "lag-interface", - "to": "p-interface", - "label": "usesPInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "lag-interface", - "to": "l-interface", - "label": "hasLInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "lag-link", - "label": "usesLAGLink", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "pnf", - "label": "bridgedTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "logical-link", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "model", - "to": "model-ver", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-ver", - "to": "model-element", - "label": "startsWith", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-element", - "to": "model-ver", - "label": "isA", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "model-ver", - "to": "metadatum", - "label": "hasMetaData", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-element", - "to": "model-element", - "label": "connectsTo", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-element", - "to": "model-constraint", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-element", - "to": "constrained-element-set", - "label": "connectsTo", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "model-constraint", - "to": "constrained-element-set", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "constrained-element-set", - "to": "element-choice-set", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "element-choice-set", - "to": "model-element", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "named-query", - "to": "model", - "label": "relatedTo", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "named-query", - "to": "named-query-element", - "label": "startsWith", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "named-query-element", - "to": "named-query-element", - "label": "connectsTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "named-query-element", - "to": "model", - "label": "isA", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "named-query-element", - "to": "property-constraint", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "named-query-element", - "to": "related-lookup", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "instance-group", - "to": "model", - "label": "targets", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "newvce", - "to": "l-interface", - "label": "hasLInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "oam-network", - "to": "complex", - "label": "definedFor", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "oam-network", - "to": "service-capability", - "label": "supportsServiceCapability", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "p-interface", - "to": "l-interface", - "label": "hasLInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "p-interface", - "to": "physical-link", - "label": "usesPhysicalLink", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "p-interface", - "to": "logical-link", - "label": "usesLogicalLink", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "port-group", - "to": "cvlan-tag", - "label": "hasCTag", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pserver", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "pserver", - "to": "cloud-region", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pserver", - "to": "availability-zone", - "label": "existsIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "pserver", - "to": "lag-interface", - "label": "hasLAGInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pserver", - "to": "p-interface", - "label": "hasPinterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pserver", - "to": "zone", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "pnf", - "to": "p-interface", - "label": "hasPinterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pnf", - "to": "lag-interface", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "pnf", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "pnf", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "pnf", - "to": "zone", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "zone", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "cvlan-tag", - "label": "hasIPAGFacingVLAN", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "pnf", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-subscription", - "to": "service-instance", - "label": "hasInstance", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "site-pair-set", - "to": "routing-instance", - "label": "hasRoutingInstance", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "routing-instance", - "to": "site-pair", - "label": "hasSitePair", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "site-pair", - "to": "class-of-service", - "label": "hasClassOfService", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "tenant", - "to": "l3-network", - "label": "usesL3Network", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "tenant", - "to": "service-subscription", - "label": "relatedTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "tenant", - "to": "vserver", - "label": "owns", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "${direction}" - }, - { - "from": "vce", - "to": "availability-zone", - "label": "hasAvailabilityZone", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "vce", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "vce", - "to": "port-group", - "label": "hasPortGroup", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vce", - "to": "vserver", - "label": "runsOnVserver", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vce", - "to": "service-instance", - "label": "hasServiceInstance", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "virtual-data-center", - "to": "generic-vnf", - "label": "hasVNF", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "!${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vlan", - "to": "l3-interface-ipv4-address-list", - "label": "hasIpAddress", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vlan", - "to": "l3-interface-ipv6-address-list", - "label": "hasIpAddress", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vpls-pe", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "vpls-pe", - "to": "ctag-pool", - "label": "usesCtagPool", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vpls-pe", - "to": "p-interface", - "label": "hasPinterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vpls-pe", - "to": "lag-interface", - "label": "hasLAGinterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vserver", - "to": "flavor", - "label": "hasFlavor", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "vserver", - "to": "image", - "label": "hasImage", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "vserver", - "to": "l-interface", - "label": "hasLInterface", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vserver", - "to": "pserver", - "label": "runsOnPserver", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "vserver", - "to": "volume", - "label": "hasVolume", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vserver", - "to": "vnfc", - "label": "hosts", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vserver", - "to": "snapshot", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "connector", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "metadatum", - "label": "hasMetaData", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "logical-link", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "vlan", - "label": "dependsOn", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "service-instance", - "label": "dependsOn", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "connector", - "to": "virtual-data-center", - "label": "contains", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "connector", - "to": "metadatum", - "label": "hasMetaData", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "virtual-data-center", - "to": "logical-link", - "label": "contains", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "generic-vnf", - "label": "bridgedTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "pserver", - "label": "bridgedTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "vlan", - "to": "multicast-configuration", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "volume-group", - "to": "complex", - "label": "existsIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "!${direction}" - }, - { - "from": "volume-group", - "to": "tenant", - "label": "belongsTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "ipsec-configuration", - "to": "vig-server", - "label": "hasVigServer", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "ipsec-configuration", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vf-module", - "to": "volume-group", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vserver", - "to": "vf-module", - "label": "isPartOf", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vf-module", - "to": "l3-network", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vf-module", - "to": "vnfc", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "${direction}" - }, - { - "from": "generic-vnf", - "to": "vf-module", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "volume-group", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "vnfc", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vlan", - "to": "logical-link", - "label": "usesLogicalLink", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - }, - { - "from": "vpn-binding", - "to": "route-target", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "ctag-assignment", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "generic-vnf", - "label": "isPartOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "l3-network", - "label": "isPartOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "network-policy", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "vlan", - "label": "isPartOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "l-interface", - "label": "uses", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "instance-group", - "label": "isMemberOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "tunnel-xconnect", - "label": "has", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "cloud-region", - "label": "existsIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "logical-link", - "to": "vpn-binding", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "entitlement", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "license", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vce", - "to": "entitlement", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "vce", - "to": "license", - "label": "has", - "direction": "OUT", - "multiplicity": "One2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "zone", - "to": "complex", - "label": "existsIn", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "service-instance", - "to": "allotted-resource", - "label": "has", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "service-instance", - "to": "allotted-resource", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "allotted-resource", - "to": "vpn-binding", - "label": "belongsTo", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "allotted-resource", - "to": "allotted-resource", - "label": "bindsTo", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "generic-vnf", - "to": "complex", - "label": "locatedIn", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "generic-vnf", - "to": "ctag-pool", - "label": "usesCtagPool", - "direction": "OUT", - "multiplicity": "Many2Many", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "p-interface", - "to": "sriov-pf", - "label": "has", - "direction": "OUT", - "multiplicity": "One2One", - "contains-other-v": "${direction}", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - }, - { - "from": "sriov-vf", - "to": "sriov-pf", - "label": "uses", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "NONE" - } - ] -} -- cgit 1.2.3-korg