From d10a218c76633374f083f7a2802c198e93a6abae Mon Sep 17 00:00:00 2001 From: michaere Date: Wed, 27 Jun 2018 09:51:34 +0100 Subject: Apply multiplicity Rule upon Edge creation Uses multiplicity type from dbedge rules json to validate whether to and from vertices meet the multiplicity constraint e.g. ONE2MANY. This validation is applied when creating or updating an edge. Issue-ID: AAI-1197 Change-Id: Id6e78635c5cbea66d8a35e6901b7e1b673125e4e Signed-off-by: michaere --- .../onap/crud/parser/util/EdgePayloadUtilTest.java | 110 + .../onap/crud/service/AaiResourceServiceTest.java | 3 +- .../org/onap/crud/service/BulkPayloadTest.java | 2 +- .../org/onap/crud/service/CrudRestServiceTest.java | 155 +- .../org/onap/crud/util/CrudServiceUtilTest.java | 2 +- .../org/onap/schema/RelationshipSchemaTest.java | 14 +- .../validation/MultiplicityValidatorTest.java | 159 + .../resources/edgeProps/edge_properties_v10.json | 6 + .../resources/edgeProps/edge_properties_v8.json | 6 + .../resources/edgeProps/edge_properties_v9.json | 6 + src/test/resources/model/DbEdgeRules_v10.json | 1819 ------ src/test/resources/model/DbEdgeRules_v8.json | 1478 ----- src/test/resources/model/DbEdgeRules_v9.json | 1742 ------ src/test/resources/model/edge_properties_v10.json | 6 - src/test/resources/model/edge_properties_v11.json | 6 - src/test/resources/model/edge_properties_v8.json | 6 - src/test/resources/model/edge_properties_v9.json | 6 - src/test/resources/oxm/aai_oxm_v10.xml | 6363 ++++++++++++++++++++ src/test/resources/oxm/aai_oxm_v8.xml | 6363 ++++++++++++++++++++ src/test/resources/oxm/aai_oxm_v9.xml | 6363 ++++++++++++++++++++ src/test/resources/rules/DbEdgeRules_v10.json | 1830 ++++++ src/test/resources/rules/DbEdgeRules_v8.json | 1489 +++++ src/test/resources/rules/DbEdgeRules_v9.json | 1753 ++++++ 23 files changed, 24544 insertions(+), 5143 deletions(-) create mode 100644 src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java create mode 100644 src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java create mode 100644 src/test/resources/edgeProps/edge_properties_v10.json create mode 100644 src/test/resources/edgeProps/edge_properties_v8.json create mode 100644 src/test/resources/edgeProps/edge_properties_v9.json delete mode 100644 src/test/resources/model/DbEdgeRules_v10.json delete mode 100644 src/test/resources/model/DbEdgeRules_v8.json delete mode 100644 src/test/resources/model/DbEdgeRules_v9.json delete mode 100644 src/test/resources/model/edge_properties_v10.json delete mode 100644 src/test/resources/model/edge_properties_v11.json delete mode 100644 src/test/resources/model/edge_properties_v8.json delete mode 100644 src/test/resources/model/edge_properties_v9.json create mode 100644 src/test/resources/oxm/aai_oxm_v10.xml create mode 100644 src/test/resources/oxm/aai_oxm_v8.xml create mode 100644 src/test/resources/oxm/aai_oxm_v9.xml create mode 100644 src/test/resources/rules/DbEdgeRules_v10.json create mode 100644 src/test/resources/rules/DbEdgeRules_v8.json create mode 100644 src/test/resources/rules/DbEdgeRules_v9.json (limited to 'src/test') diff --git a/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java b/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java new file mode 100644 index 0000000..f5baae8 --- /dev/null +++ b/src/test/java/org/onap/crud/parser/util/EdgePayloadUtilTest.java @@ -0,0 +1,110 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.crud.parser.util; + +import java.util.ArrayList; +import java.util.List; +import org.junit.Assert; +import org.junit.Test; +import org.onap.crud.entity.Edge; +import org.onap.crud.entity.Vertex; +import org.onap.crud.exception.CrudException; + +public class EdgePayloadUtilTest { + + @Test + public void testGetVertexNodeType() throws CrudException { + Assert.assertEquals("vserver", EdgePayloadUtil + .getVertexNodeType("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811")); + } + + @Test + public void testGetVertexNodeId() throws CrudException { + Assert.assertEquals("50bdab41-ad1c-4d00-952c-a0aa5d827811", + EdgePayloadUtil.getVertexNodeId("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811")); + } + + @Test + public void testGenerateEdgeKey() throws CrudException { + Assert.assertEquals("vserver:pserver:tosca.relationships.HostedOn", + EdgePayloadUtil.generateEdgeKey("services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811", + "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", + "tosca.relationships.HostedOn")); + } + + @Test + public void testKeyGenerationEnforcesSourceAndTargetOrder() throws Exception { + String generateEdgeKey1 = EdgePayloadUtil.generateEdgeKey( + "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811", + "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", "tosca.relationships.HostedOn"); + + String generateEdgeKey2 = EdgePayloadUtil.generateEdgeKey( + "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", + "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811", "tosca.relationships.HostedOn"); + + Assert.assertNotEquals(generateEdgeKey1, generateEdgeKey2); + } + + + @Test + public void testGetBuilderFromEdgePayload() throws CrudException { + Edge.Builder builder = EdgePayloadUtil.getBuilderFromEdgePayload( + "services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811", + "services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908", "tosca.relationships.HostedOn"); + + Edge edge = builder.build(); + Assert.assertEquals("tosca.relationships.HostedOn", edge.getType()); + Assert.assertEquals("vserver", edge.getSource().getType()); + Assert.assertEquals("50bdab41-ad1c-4d00-952c-a0aa5d827811", edge.getSource().getId().get()); + Assert.assertEquals("pserver", edge.getTarget().getType()); + Assert.assertEquals("1d326bc7-b985-492b-9604-0d5d1f06f908", edge.getTarget().getId().get()); + } + + @Test + public void tesGetBuilderFromEdge() throws CrudException { + Edge edge = createEdge("vserver", "pserver"); + + Assert.assertNotNull(edge); + Assert.assertNotNull(EdgePayloadUtil.getBuilderFromEdge(edge)); + } + + @Test + public void testFilterEdgesByRelatedVertexAndType() throws CrudException { + List edges = new ArrayList<>(); + edges.add(createEdge("vserver", "pserver")); + edges.add(createEdge("vce", "pserver")); + edges.add(createEdge("snapshot", "pserver")); + edges.add(createEdge("vserver", "pserver")); + + List filteredEdges = + EdgePayloadUtil.filterEdgesByRelatedVertexAndType("vserver", "tosca.relationships.HostedOn", edges); + + Assert.assertNotNull(filteredEdges); + Assert.assertEquals(2, filteredEdges.size()); + } + + private Edge createEdge(String sourceVertexType, String targetVertexType) { + return new Edge.Builder("tosca.relationships.HostedOn").id("test") + .source(new Vertex.Builder(sourceVertexType).id("50bdab41-ad1c-4d00-952c-a0aa5d827811").build()) + .target(new Vertex.Builder(targetVertexType).id("1d326bc7-b985-492b-9604-0d5d1f06f908").build()) + .build(); + } +} diff --git a/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java b/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java index 5eb8a68..c23f3ac 100644 --- a/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java +++ b/src/test/java/org/onap/crud/service/AaiResourceServiceTest.java @@ -33,8 +33,7 @@ import org.onap.aai.serialization.db.EdgeRule; import org.onap.aai.serialization.db.EdgeRules; import org.onap.aai.serialization.db.EdgeType; import org.onap.crud.exception.CrudException; -import org.onap.crud.service.EdgePayload; - +import org.onap.crud.parser.EdgePayload; import com.google.gson.JsonElement; public class AaiResourceServiceTest { diff --git a/src/test/java/org/onap/crud/service/BulkPayloadTest.java b/src/test/java/org/onap/crud/service/BulkPayloadTest.java index 89c2269..c768339 100644 --- a/src/test/java/org/onap/crud/service/BulkPayloadTest.java +++ b/src/test/java/org/onap/crud/service/BulkPayloadTest.java @@ -25,7 +25,7 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; import org.junit.Test; - +import org.onap.crud.parser.BulkPayload; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/src/test/java/org/onap/crud/service/CrudRestServiceTest.java b/src/test/java/org/onap/crud/service/CrudRestServiceTest.java index 68c876c..ddf3847 100644 --- a/src/test/java/org/onap/crud/service/CrudRestServiceTest.java +++ b/src/test/java/org/onap/crud/service/CrudRestServiceTest.java @@ -36,7 +36,6 @@ import org.junit.Test; import org.junit.rules.ExpectedException; import org.mockito.Mockito; import org.onap.crud.exception.CrudException; -import org.onap.crud.service.TestDao; import org.onap.crud.service.util.TestHeaders; import org.onap.crud.service.util.TestRequest; import org.onap.crud.service.util.TestUriInfo; @@ -50,36 +49,36 @@ public class CrudRestServiceTest { "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"hostname\": \"myhost\" } }"; - + private final String postVertexPayload = "{" + "\"type\": \"pserver\"," + "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"hostname\": \"myhost\" } }"; - + private final String postMissingPropVertexPayload = "{" + "\"type\": \"pserver\"," + "\"properties\": {" + "\"fqdn\": \"myhost.onap.com\"," + "\"equip-type\": \"box\" } }"; - + private final String postEdgePayload = "{" + "\"type\": \"tosca.relationships.HostedOn\"," + - "\"source\": \"services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," + - "\"target\": \"services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," + + "\"source\": \"services/inventory/v11/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," + + "\"target\": \"services/inventory/v11/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," + "\"properties\": {" + "\"prevent-delete\": \"NONE\" } }"; - + private CrudRestService mockService; - + @Rule public ExpectedException thrown = ExpectedException.none(); @Before public void init() throws Exception { ClassLoader classLoader = getClass().getClassLoader(); - File dir = new File(classLoader.getResource("model").getFile()); + File dir = new File(classLoader.getResource("rules").getFile()); System.setProperty("CONFIG_HOME", dir.getParent()); EdgeRulesLoader.resetSchemaVersionContext(); @@ -91,150 +90,170 @@ public class CrudRestServiceTest { Mockito.anyString(), Mockito.anyString(), Mockito.any(CrudRestService.Action.class), Mockito.anyString(), Mockito.any(HttpHeaders.class)); } - + @Test public void testDelete() throws CrudException { Response response; - - response = mockService.deleteVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.deleteVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); assertTrue(response.getStatus() == 200); - - response = mockService.deleteEdge("", "v11", "tosca.relationships.HostedOn", - "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.deleteEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); assertTrue(response.getStatus() == 200); } - + @Test public void testAddVertex() throws CrudException { Response response; - + // Cannot find OXM version - response = mockService.addVertex(postVertexPayload, "v8", "services/inventory/v8", + response = mockService.addVertex(postVertexPayload, "v7", "services/inventory/v8", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 500); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postMissingPropVertexPayload, "v11", "services/inventory/v11", + + response = mockService.addVertex(postMissingPropVertexPayload, "v11", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postVertexPayload, "v11", "services/inventory/v11", + + response = mockService.addVertex(postVertexPayload, "v11", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - - response = mockService.addVertex(postMissingPropVertexPayload, "v11", "pserver", "services/inventory/v11", + + response = mockService.addVertex(postMissingPropVertexPayload, "v11", "pserver", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); Assert.assertNull(response.getEntityTag()); - - response = mockService.addVertex(postVertexPayload, "v11", "pserver", "services/inventory/v11", + + response = mockService.addVertex(postVertexPayload, "v11", "pserver", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testAddEdge() throws CrudException { Response response; - - response = mockService.addEdge(postEdgePayload, "v11", "services/inventory/v11", + + response = mockService.addEdge(postEdgePayload, "v9", "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - - response = mockService.addEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "services/inventory/v11", + + response = mockService.addEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 201); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + + @Test + public void testAddEdgeMultiplicityRules() throws CrudException { + Response response; + + response = mockService.addEdge(postEdgePayload, "v10", "services/inventory/v10", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals("MANY2ONE multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn", + response.getEntity().toString()); + Assert.assertEquals(400, response.getStatus()); + + response = mockService.addEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "services/inventory/v9", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals(201, response.getStatus()); + + response = mockService.addEdge(postEdgePayload, "v8", "tosca.relationships.HostedOn", "services/inventory/v8", + new TestHeaders(), null, new TestRequest()); + Assert.assertEquals("ONE2MANY multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn", + response.getEntity().toString()); + Assert.assertEquals(400, response.getStatus()); + } + @Test public void testUpdateVertex() throws CrudException { Response response; // Cannot find OXM version - response = mockService.updateVertex(putVertexPayload, "v8", "pserver", "test-uuid", "services/inventory/v8", + response = mockService.updateVertex(putVertexPayload, "v7", "pserver", "test-uuid", "services/inventory/v8", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 500); Assert.assertNull(response.getEntityTag()); - + // Test ID mismatch - response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "bad-id", + response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "bad-id", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 400); - Assert.assertNull(response.getEntityTag()); - + Assert.assertNull(response.getEntityTag()); + // Success case response = mockService.updateVertex(putVertexPayload, "v11", "pserver", "test-uuid", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - + // Patch - response = mockService.patchVertex(putVertexPayload, "v11", "pserver", "test-uuid", + response = mockService.patchVertex(putVertexPayload, "v11", "pserver", "test-uuid", "services/inventory/v11", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testUpdateEdge() throws CrudException { Response response; - - response = mockService.updateEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + + response = mockService.updateEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "my-uuid", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); - + // Patch - response = mockService.patchEdge(postEdgePayload, "v11", "tosca.relationships.HostedOn", "my-uuid", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + response = mockService.patchEdge(postEdgePayload, "v9", "tosca.relationships.HostedOn", "my-uuid", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); Assert.assertEquals(response.getEntityTag().getValue(), "test123"); } - + @Test public void testGet() throws CrudException { Response response; - - response = mockService.getVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.getVertex("", "v11", "pserver", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", + + response = mockService.getEdge("", "v11", "tosca.relationships.HostedOn", "872dd5df-0be9-4167-95e9-2cf4b21165ed", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getVertices("", "v11", "pserver", + + response = mockService.getVertices("", "v11", "pserver", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); - - response = mockService.getEdges("", "v11", "tosca.relationships.HostedOn", + + response = mockService.getEdges("", "v11", "tosca.relationships.HostedOn", "services/inventory/v11", new TestHeaders(), new TestUriInfo(), new TestRequest()); System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); } - + @Test public void testValidRequestHeader() throws CrudException { TestHeaders testHeaders = new TestHeaders(); @@ -270,7 +289,7 @@ public class CrudRestServiceTest { testHeaders.clearRequestHeader("X-TransactionId", "X-FromAppId"); mockService.validateRequestHeader(testHeaders); } - + @Test public void testEmptyRequestHeader() throws CrudException { thrown.expect(CrudException.class); @@ -306,21 +325,21 @@ public class CrudRestServiceTest { System.out.println("Response: " + response.getStatus() + "\n" + response.getEntity().toString()); assertTrue(response.getStatus() == 200); } - + @Test public void testBulk() throws CrudException, IOException { Response response; - + File bulkFile = new File("src/test/resources/payloads/bulk.json"); - String payloadStr = readFileToString(bulkFile); + String payloadStr = readFileToString(bulkFile); System.out.println(payloadStr); - - response = mockService.addBulk(payloadStr, "v11", "", - "services/inventory/v11", new TestHeaders(), null, new TestRequest()); + + response = mockService.addBulk(payloadStr, "v9", "", + "services/inventory/v9", new TestHeaders(), null, new TestRequest()); System.out.println("Bulk Response: " + response.getStatus() + "\n" + response.getEntity().toString()); - assertTrue(response.getStatus() == 200); + assertTrue(response.getStatus() == 200); } - + public static String readFileToString(File aFile) throws IOException { BufferedReader br = new BufferedReader(new FileReader(aFile)); diff --git a/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java b/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java index 872586e..37cdeec 100644 --- a/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java +++ b/src/test/java/org/onap/crud/util/CrudServiceUtilTest.java @@ -22,7 +22,7 @@ package org.onap.crud.util; import org.junit.Assert; import org.junit.Test; -import org.onap.crud.service.VertexPayload; +import org.onap.crud.parser.VertexPayload; import org.onap.crud.service.util.TestHeaders; import com.google.gson.JsonElement; diff --git a/src/test/java/org/onap/schema/RelationshipSchemaTest.java b/src/test/java/org/onap/schema/RelationshipSchemaTest.java index 9467f41..a32762f 100644 --- a/src/test/java/org/onap/schema/RelationshipSchemaTest.java +++ b/src/test/java/org/onap/schema/RelationshipSchemaTest.java @@ -20,18 +20,16 @@ */ package org.onap.schema; -import com.google.common.collect.ArrayListMultimap; -import com.google.common.collect.Multimap; +import static org.junit.Assert.*; +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; import org.junit.Test; import org.onap.aai.edges.EdgeRule; import org.onap.aai.edges.exceptions.EdgeRuleNotFoundException; import org.onap.crud.exception.CrudException; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -import static org.junit.Assert.*; +import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.Multimap; public class RelationshipSchemaTest { diff --git a/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java b/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java new file mode 100644 index 0000000..409ce3c --- /dev/null +++ b/src/test/java/org/onap/schema/validation/MultiplicityValidatorTest.java @@ -0,0 +1,159 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2017-2018 AT&T Intellectual Property. All rights reserved. + * Copyright © 2017-2018 Amdocs + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ +package org.onap.schema.validation; + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.onap.crud.entity.Edge; +import org.onap.crud.entity.Vertex; +import org.onap.crud.exception.CrudException; +import org.onap.crud.parser.EdgePayload; +import org.onap.schema.EdgeRulesLoader; +import org.onap.schema.validation.MultiplicityValidator.MultiplicityType; + +public class MultiplicityValidatorTest { + + private final String postEdgePayload = "{" + "\"type\": \"tosca.relationships.HostedOn\"," + + "\"source\": \"services/inventory/v12/vserver/50bdab41-ad1c-4d00-952c-a0aa5d827811\"," + + "\"target\": \"services/inventory/v12/pserver/1d326bc7-b985-492b-9604-0d5d1f06f908\"," + + "\"properties\": {" + "\"prevent-delete\": \"NONE\" } }"; + + @Rule + public ExpectedException thrown = ExpectedException.none(); + + @Before + public void init() { + ClassLoader classLoader = getClass().getClassLoader(); + File dir = new File(classLoader.getResource("rules").getFile()); + System.setProperty("CONFIG_HOME", dir.getParent()); + EdgeRulesLoader.resetSchemaVersionContext(); + } + + @Test + public void testValidPayloadForMultiplicityRule() throws CrudException { + Map> vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, true); + MultiplicityValidator.validatePayloadMultiplicity(EdgePayload.fromJson(postEdgePayload), + vertexMap.get("source"), vertexMap.get("target"), + "tosca.relationships.HostedOn", "v11"); + } + + @Test + public void testInvalidPayloadForMultiplicityRule() throws CrudException { + thrown.expect(CrudException.class); + thrown.expectMessage("MANY2ONE multiplicity rule broken for Edge:vserver:pserver:tosca.relationships.HostedOn"); + + Map> vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, false); + MultiplicityValidator.validatePayloadMultiplicity(EdgePayload.fromJson(postEdgePayload), + vertexMap.get("source"), vertexMap.get("target"), + "tosca.relationships.HostedOn", "v11"); + } + + @Test + public void testIsVertexValidForMultiplicityType() throws CrudException { + + Map> vertexMap = getEdgesForVertex(MultiplicityType.MANY2MANY, true); + Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType(vertexMap.get("source"), + vertexMap.get("target"), MultiplicityType.MANY2MANY)); + + vertexMap = getEdgesForVertex(MultiplicityType.MANY2ONE, true); + Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType( + vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.MANY2ONE)); + + vertexMap = getEdgesForVertex(MultiplicityType.ONE2MANY, true); + Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType( + vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2MANY)); + + vertexMap = getEdgesForVertex(MultiplicityType.ONE2ONE, true); + Assert.assertTrue(MultiplicityValidator.isVertexValidForMultiplicityType( + vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2ONE)); + + vertexMap = getEdgesForVertex(MultiplicityType.ONE2MANY, false); + Assert.assertFalse(MultiplicityValidator.isVertexValidForMultiplicityType( + vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2MANY)); + + vertexMap = getEdgesForVertex(MultiplicityType.ONE2ONE, false); + Assert.assertFalse(MultiplicityValidator.isVertexValidForMultiplicityType( + vertexMap.get("source"), vertexMap.get("target"), MultiplicityType.ONE2ONE)); + } + + private Map> getEdgesForVertex(MultiplicityType multiplicityType, boolean pass) { + + Map> vertexMap = new HashMap>(); + List edgesForSourceVertex = new ArrayList<>(); + List edgesForTargetVertex = new ArrayList<>(); + + switch (multiplicityType) { + case MANY2MANY: + if (pass) { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForSourceVertex.add(edge); + edgesForTargetVertex.add(edge); + } + break; + case MANY2ONE: + if (pass) { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForTargetVertex.add(edge); + } else { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForSourceVertex.add(edge); + edgesForTargetVertex.add(edge); + } + break; + case ONE2MANY: + if (pass) { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForSourceVertex.add(edge); + } else { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForSourceVertex.add(edge); + edgesForTargetVertex.add(edge); + } + break; + case ONE2ONE: + if (!pass) { + Edge edge = new Edge.Builder("type").source(new Vertex.Builder("source").build()) + .target(new Vertex.Builder("target").build()).build(); + edgesForSourceVertex.add(edge); + edgesForTargetVertex.add(edge); + } + break; + } + vertexMap.put("source", edgesForSourceVertex); + vertexMap.put("target", edgesForTargetVertex); + + return vertexMap; + } + +} diff --git a/src/test/resources/edgeProps/edge_properties_v10.json b/src/test/resources/edgeProps/edge_properties_v10.json new file mode 100644 index 0000000..8d00636 --- /dev/null +++ b/src/test/resources/edgeProps/edge_properties_v10.json @@ -0,0 +1,6 @@ +{ + "contains-other-v": "java.lang.String", + "delete-other-v": "java.lang.String", + "SVC-INFRA": "java.lang.String", + "prevent-delete": "java.lang.String" +} \ No newline at end of file diff --git a/src/test/resources/edgeProps/edge_properties_v8.json b/src/test/resources/edgeProps/edge_properties_v8.json new file mode 100644 index 0000000..8d00636 --- /dev/null +++ b/src/test/resources/edgeProps/edge_properties_v8.json @@ -0,0 +1,6 @@ +{ + "contains-other-v": "java.lang.String", + "delete-other-v": "java.lang.String", + "SVC-INFRA": "java.lang.String", + "prevent-delete": "java.lang.String" +} \ No newline at end of file diff --git a/src/test/resources/edgeProps/edge_properties_v9.json b/src/test/resources/edgeProps/edge_properties_v9.json new file mode 100644 index 0000000..8d00636 --- /dev/null +++ b/src/test/resources/edgeProps/edge_properties_v9.json @@ -0,0 +1,6 @@ +{ + "contains-other-v": "java.lang.String", + "delete-other-v": "java.lang.String", + "SVC-INFRA": "java.lang.String", + "prevent-delete": "java.lang.String" +} \ No newline at end of file diff --git a/src/test/resources/model/DbEdgeRules_v10.json b/src/test/resources/model/DbEdgeRules_v10.json deleted file mode 100644 index 0381090..0000000 --- a/src/test/resources/model/DbEdgeRules_v10.json +++ /dev/null @@ -1,1819 +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": "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": "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": "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": "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": "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": "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": "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" - } - ] -} diff --git a/src/test/resources/model/DbEdgeRules_v8.json b/src/test/resources/model/DbEdgeRules_v8.json deleted file mode 100644 index 6d5b06f..0000000 --- a/src/test/resources/model/DbEdgeRules_v8.json +++ /dev/null @@ -1,1478 +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": "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": "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": "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": "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": "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": "logical-link", - "label": "usesLogicalLink", - "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": "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": "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-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", - "label": "isA", - "direction": "OUT", - "multiplicity": "Many2One", - "contains-other-v": "NONE", - "delete-other-v": "NONE", - "SVC-INFRA": "NONE", - "prevent-delete": "!${direction}" - }, - { - "from": "model", - "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": "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": "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": "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-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": "One2One", - "contains-other-v": "NONE", - "delete-other-v": "${direction}", - "SVC-INFRA": "${direction}", - "prevent-delete": "NONE" - } - ] -} diff --git a/src/test/resources/model/DbEdgeRules_v9.json b/src/test/resources/model/DbEdgeRules_v9.json deleted file mode 100644 index 88801e4..0000000 --- a/src/test/resources/model/DbEdgeRules_v9.json +++ /dev/null @@ -1,1742 +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": "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": "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": "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": "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": "logical-link", - "label": "usesLogicalLink", - "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": "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": "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": "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": "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": "vlan", - "label": "isPartOf", - "direction": "OUT", - "multiplicity": "Many2Many", - "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" - } - ] -} diff --git a/src/test/resources/model/edge_properties_v10.json b/src/test/resources/model/edge_properties_v10.json deleted file mode 100644 index 8d00636..0000000 --- a/src/test/resources/model/edge_properties_v10.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "contains-other-v": "java.lang.String", - "delete-other-v": "java.lang.String", - "SVC-INFRA": "java.lang.String", - "prevent-delete": "java.lang.String" -} \ No newline at end of file diff --git a/src/test/resources/model/edge_properties_v11.json b/src/test/resources/model/edge_properties_v11.json deleted file mode 100644 index 8d00636..0000000 --- a/src/test/resources/model/edge_properties_v11.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "contains-other-v": "java.lang.String", - "delete-other-v": "java.lang.String", - "SVC-INFRA": "java.lang.String", - "prevent-delete": "java.lang.String" -} \ No newline at end of file diff --git a/src/test/resources/model/edge_properties_v8.json b/src/test/resources/model/edge_properties_v8.json deleted file mode 100644 index 8d00636..0000000 --- a/src/test/resources/model/edge_properties_v8.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "contains-other-v": "java.lang.String", - "delete-other-v": "java.lang.String", - "SVC-INFRA": "java.lang.String", - "prevent-delete": "java.lang.String" -} \ No newline at end of file diff --git a/src/test/resources/model/edge_properties_v9.json b/src/test/resources/model/edge_properties_v9.json deleted file mode 100644 index 8d00636..0000000 --- a/src/test/resources/model/edge_properties_v9.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "contains-other-v": "java.lang.String", - "delete-other-v": "java.lang.String", - "SVC-INFRA": "java.lang.String", - "prevent-delete": "java.lang.String" -} \ No newline at end of file diff --git a/src/test/resources/oxm/aai_oxm_v10.xml b/src/test/resources/oxm/aai_oxm_v10.xml new file mode 100644 index 0000000..5c3d450 --- /dev/null +++ b/src/test/resources/oxm/aai_oxm_v10.xml @@ -0,0 +1,6363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/oxm/aai_oxm_v8.xml b/src/test/resources/oxm/aai_oxm_v8.xml new file mode 100644 index 0000000..5c3d450 --- /dev/null +++ b/src/test/resources/oxm/aai_oxm_v8.xml @@ -0,0 +1,6363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/oxm/aai_oxm_v9.xml b/src/test/resources/oxm/aai_oxm_v9.xml new file mode 100644 index 0000000..5c3d450 --- /dev/null +++ b/src/test/resources/oxm/aai_oxm_v9.xml @@ -0,0 +1,6363 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/test/resources/rules/DbEdgeRules_v10.json b/src/test/resources/rules/DbEdgeRules_v10.json new file mode 100644 index 0000000..01d042b --- /dev/null +++ b/src/test/resources/rules/DbEdgeRules_v10.json @@ -0,0 +1,1830 @@ +{ + "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": "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": "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": "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": "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": "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": "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": "pserver", + "label": "tosca.relationships.HostedOn", + "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": "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" + } + ] +} diff --git a/src/test/resources/rules/DbEdgeRules_v8.json b/src/test/resources/rules/DbEdgeRules_v8.json new file mode 100644 index 0000000..872c80f --- /dev/null +++ b/src/test/resources/rules/DbEdgeRules_v8.json @@ -0,0 +1,1489 @@ +{ + "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": "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": "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": "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": "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": "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": "logical-link", + "label": "usesLogicalLink", + "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": "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": "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-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", + "label": "isA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "SVC-INFRA": "NONE", + "prevent-delete": "!${direction}" + }, + { + "from": "model", + "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": "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": "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": "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-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": "pserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "One2Many", + "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": "One2One", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "SVC-INFRA": "${direction}", + "prevent-delete": "NONE" + } + ] +} diff --git a/src/test/resources/rules/DbEdgeRules_v9.json b/src/test/resources/rules/DbEdgeRules_v9.json new file mode 100644 index 0000000..163bb56 --- /dev/null +++ b/src/test/resources/rules/DbEdgeRules_v9.json @@ -0,0 +1,1753 @@ +{ + "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": "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": "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": "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": "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": "logical-link", + "label": "usesLogicalLink", + "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": "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": "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": "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": "pserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "Many2Many", + "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": "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": "vlan", + "label": "isPartOf", + "direction": "OUT", + "multiplicity": "Many2Many", + "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" + } + ] +} -- cgit 1.2.3-korg