From 2e2f969676ab391fba2198cbaa55e9b85d50216f Mon Sep 17 00:00:00 2001 From: Phillip Leigh Date: Mon, 28 Oct 2019 15:55:40 -0400 Subject: [AAI-2404]add aai-schema-abstraction library Signed-off-by: Phillip Leigh Issue-ID: AAI-2404 Change-Id: I30d954bcdf1cf020191028160610defb8dbc8ff6 --- .../aai/schemaif/json/JsonSchemaProviderTest.java | 600 ++ .../aai/schemaif/oxm/OxmSchemaProviderTest.java | 254 + .../aai/schemaif/oxm/OxmSchemaServiceSetup.java | 78 + .../src/test/resources/json/badEdgeSchema.json | 100 + .../src/test/resources/json/badPropSchema.json | 101 + .../src/test/resources/json/badTypeSchema.json | 101 + .../src/test/resources/json/badVertexSchema.json | 100 + .../src/test/resources/json/jsonSchema.json | 976 +++ .../test/resources/json/schemaServiceResponse.json | 131 + .../oxm/edge-props/edge_properties_v13.json | 6 + .../oxm/edge-rules/v13/DbEdgeRules_v13.json | 2848 ++++++++ .../src/test/resources/oxm/oxm/v13/aai_oxm_v13.xml | 6775 ++++++++++++++++++++ 12 files changed, 12070 insertions(+) create mode 100644 aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/json/JsonSchemaProviderTest.java create mode 100644 aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaProviderTest.java create mode 100644 aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaServiceSetup.java create mode 100644 aai-schema-abstraction/src/test/resources/json/badEdgeSchema.json create mode 100644 aai-schema-abstraction/src/test/resources/json/badPropSchema.json create mode 100644 aai-schema-abstraction/src/test/resources/json/badTypeSchema.json create mode 100644 aai-schema-abstraction/src/test/resources/json/badVertexSchema.json create mode 100644 aai-schema-abstraction/src/test/resources/json/jsonSchema.json create mode 100644 aai-schema-abstraction/src/test/resources/json/schemaServiceResponse.json create mode 100644 aai-schema-abstraction/src/test/resources/oxm/edge-props/edge_properties_v13.json create mode 100644 aai-schema-abstraction/src/test/resources/oxm/edge-rules/v13/DbEdgeRules_v13.json create mode 100644 aai-schema-abstraction/src/test/resources/oxm/oxm/v13/aai_oxm_v13.xml (limited to 'aai-schema-abstraction/src/test') diff --git a/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/json/JsonSchemaProviderTest.java b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/json/JsonSchemaProviderTest.java new file mode 100644 index 00000000..83ba9e33 --- /dev/null +++ b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/json/JsonSchemaProviderTest.java @@ -0,0 +1,600 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2019 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.aai.schemaif.json; + +import static org.junit.Assert.assertTrue; + +import java.io.IOException; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.List; +import java.util.Set; + +import org.junit.Before; +import org.junit.Test; +import org.onap.aai.schemaif.SchemaProviderException; +import org.onap.aai.schemaif.definitions.EdgeSchema; +import org.onap.aai.schemaif.definitions.PropertySchema; +import org.onap.aai.schemaif.definitions.VertexSchema; +import org.onap.aai.schemaif.definitions.types.ComplexDataType; +import org.onap.aai.schemaif.definitions.types.DataType.Type; +import org.onap.aai.schemaif.definitions.types.ListDataType; +import org.onap.aai.schemaif.definitions.types.MapDataType; +import org.onap.aai.schemaif.json.definitions.DataTypeDefinition; +import org.onap.aai.schemaif.json.definitions.JsonEdgeSchema; +import org.onap.aai.schemaif.json.definitions.JsonPropertySchema; +import org.onap.aai.schemaif.json.definitions.JsonSchema; +import org.onap.aai.schemaif.json.definitions.JsonVertexSchema; + + +public class JsonSchemaProviderTest { + + JsonSchemaProviderConfig config = new JsonSchemaProviderConfig(); + + @Before + public void init() throws Exception { + config.setSchemaServiceBaseUrl("https://testurl.com:8443"); + config.setSchemaServiceCertFile("/c/certfile"); + config.setSchemaServiceCertPwd("my-password"); + config.setServiceName("test-service"); + } + + @Test + public void testJsonSchemaLoad() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchema jsonSchema = JsonSchema.fromJson(testSchema); + + // Test Edge Schema + JsonEdgeSchema edgeSchema = null; + for (JsonEdgeSchema edge : jsonSchema.getRelationshipTypes()) { + if ( (edge.getFrom().equals("onap.nodes.sdwan.uCPE")) + && (edge.getTo().equals("onap.nodes.sdwan.service.SubscriberService")) ) { + edgeSchema = edge; + break; + } + } + + assertTrue(edgeSchema.getLabel().equals("onap.relationships.sdwan.BelongsTo")); + + // Test Node Schema + JsonVertexSchema vertexSchema = null; + for (JsonVertexSchema v : jsonSchema.getNodeTypes()) { + if ( (v.getName().equals("org.onap.resource.NetworkRules")) ) { + vertexSchema = v; + break; + } + } + + assertTrue(vertexSchema.getProperties().size() == 2); + + JsonPropertySchema propSchema = null; + for (JsonPropertySchema p : vertexSchema.getProperties()) { + if ( (p.getName().equals("network_policy_entries")) ) { + propSchema = p; + break; + } + } + + assertTrue(propSchema.getRequired() == false); + assertTrue(propSchema.getUnique() == false); + assertTrue(propSchema.getDataType().equals("org.onap.datatypes.RuleList")); + assertTrue(propSchema.getDefaultValue().equals("")); + assertTrue(propSchema.getAnnotations().size() == 4); + + // Test DataType Schema + DataTypeDefinition dataType = null; + for (DataTypeDefinition d : jsonSchema.getDataTypes()) { + if ( (d.getName().equals("org.onap.datatypes.network.VlanRequirements")) ) { + dataType = d; + break; + } + } + + assertTrue(dataType.getName().equals("org.onap.datatypes.network.VlanRequirements")); + assertTrue(dataType.getProperties().size() == 4); + + propSchema = null; + for (JsonPropertySchema p : dataType.getProperties()) { + if ( (p.getName().equals("vlan_type")) ) { + propSchema = p; + break; + } + } + + assertTrue(propSchema.getRequired() == false); + assertTrue(propSchema.getDataType().equals("string")); + assertTrue(propSchema.getDefaultValue().equals("")); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaTranslateVertex() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("tosca.nodes.objectstorage", + schemaProvider.getLatestSchemaVersion()); + System.out.println(vertSchema.toString()); + + // Validate vertex schema + assertTrue(vertSchema.getName().equals("tosca.nodes.ObjectStorage")); + assertTrue(vertSchema.getAnnotationValue("searchable").equals("size,name")); + assertTrue(vertSchema.getAnnotationValue("indexedProps").equals("aai-uuid,name")); + + PropertySchema propSchema = vertSchema.getPropertySchema("Name"); + assertTrue(propSchema.getName().equals("name")); + assertTrue(propSchema.getDefaultValue().equals("")); + assertTrue(propSchema.isRequired()); + assertTrue(!propSchema.isKey()); + assertTrue(!propSchema.isReserved()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0); + assertTrue(propSchema.getAnnotationValue("Source_of_truth_type").equals("AAI")); + + propSchema = vertSchema.getPropertySchema("Size"); + assertTrue(propSchema.getName().equals("size")); + assertTrue(propSchema.getDefaultValue().equals("50")); + assertTrue(propSchema.getDataType().getType().compareTo(Type.INT) == 0); + + propSchema = vertSchema.getPropertySchema("source-of-truth"); + assertTrue(propSchema.getName().equals("source-of-truth")); + assertTrue(!propSchema.isRequired()); + assertTrue(propSchema.isReserved()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaTranslateEdge() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("tosca.relationships.hostedOn", + "tosca.nodes.Softwarecomponent", "tosca.nodes.compute", + schemaProvider.getLatestSchemaVersion()); + System.out.println(edgeSchema.toString()); + + // Validate edge schema + assertTrue(edgeSchema.getName().equals("tosca.relationships.HostedOn")); + assertTrue(edgeSchema.getSource().equals("tosca.nodes.SoftwareComponent")); + assertTrue(edgeSchema.getTarget().equals("tosca.nodes.Compute")); + assertTrue(edgeSchema.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + assertTrue(edgeSchema.getAnnotationValue("contains-other-v").equals("NONE")); + + + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaTranslateAdjacentEdge() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + Set edgeSchemaList = + schemaProvider.getAdjacentEdgeSchema("tosca.nodes.Database", + schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 3); + + for (EdgeSchema es : edgeSchemaList) { + System.out.println(es.toString()); + if (es.getName().equals("tosca.relationships.HostedOn")) { + assertTrue(es.getSource().equals("tosca.nodes.Database")); + assertTrue(es.getTarget().equals("tosca.nodes.DBMS")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else if (es.getName().equals("tosca.relationships.RoutesTo")) { + assertTrue(es.getSource().equals("tosca.nodes.LoadBalancer")); + assertTrue(es.getTarget().equals("tosca.nodes.Database")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else if (es.getName().equals("tosca.relationships.Uses")) { + assertTrue(es.getSource().equals("tosca.nodes.LoadBalancer")); + assertTrue(es.getTarget().equals("tosca.nodes.Database")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else { + assertTrue(false); + } + } + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaSourceTargetEdges() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + Set edgeSchemaList = + schemaProvider.getEdgeSchemaForSourceTarget("tosca.nodes.LoadBalancer", + "tosca.nodes.Database", + schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 2); + + for (EdgeSchema es : edgeSchemaList) { + System.out.println(es.toString()); + if (es.getName().equals("tosca.relationships.Uses")) { + assertTrue(es.getSource().equals("tosca.nodes.LoadBalancer")); + assertTrue(es.getTarget().equals("tosca.nodes.Database")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else if (es.getName().equals("tosca.relationships.RoutesTo")) { + assertTrue(es.getSource().equals("tosca.nodes.LoadBalancer")); + assertTrue(es.getTarget().equals("tosca.nodes.Database")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else { + assertTrue(false); + } + } + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaWildcardEdges() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + EdgeSchema edgeSchema = + schemaProvider.getEdgeSchema("amdocs.linkedTo", "service-instance", + "onap.nodes.sdwan.ManagementDomain", schemaProvider.getLatestSchemaVersion()); + + assertTrue(edgeSchema.getName().equals("amdocs.linkedTo")); + assertTrue(edgeSchema.getSource().equals("service-instance")); + assertTrue(edgeSchema.getTarget().equals("onap.nodes.sdwan.ManagementDomain")); + + edgeSchema = schemaProvider.getEdgeSchema("amdocs.linkedTo", "onap.nodes.sdwan.ManagementDomain", + "service-instance", schemaProvider.getLatestSchemaVersion()); + + assertTrue(edgeSchema == null); + + + edgeSchema = + schemaProvider.getEdgeSchema("amdocs.unknownRelationship", "unknown", + "onap.nodes.sdwan.ManagementDomain", schemaProvider.getLatestSchemaVersion()); + + assertTrue(edgeSchema.getName().equals("amdocs.unknownRelationship")); + assertTrue(edgeSchema.getSource().equals("unknown")); + assertTrue(edgeSchema.getTarget().equals("onap.nodes.sdwan.ManagementDomain")); + + edgeSchema = + schemaProvider.getEdgeSchema("amdocs.unknownRelationship", "onap.nodes.sdwan.ManagementDomain", + "unknown", schemaProvider.getLatestSchemaVersion()); + + assertTrue(edgeSchema.getName().equals("amdocs.unknownRelationship")); + assertTrue(edgeSchema.getSource().equals("onap.nodes.sdwan.ManagementDomain")); + assertTrue(edgeSchema.getTarget().equals("unknown")); + + Set edgeSchemaList = + schemaProvider.getEdgeSchemaForSourceTarget("service-instance", + "onap.nodes.sdwan.ManagementDomain", + schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchemaList.size() == 1); + + edgeSchemaList = schemaProvider.getEdgeSchemaForSourceTarget("unknown", "unknown", + schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchemaList.size() == 1); + + edgeSchemaList = schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "service-instance", + schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchemaList.size() == 1); + + + edgeSchemaList = schemaProvider.getAdjacentEdgeSchema("service-instance", schemaProvider.getLatestSchemaVersion()); + System.out.println("EDGE LIST: \n\n" + edgeSchemaList); + assertTrue(edgeSchemaList.size() == 8); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testInvalidVertexOrEdge() throws SchemaProviderException { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion()); + assertTrue(vertSchema == null); + + EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn", + "cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchema == null); + + Set edgeSchemaList = + schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node", + schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchemaList.isEmpty()); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaListAttribute() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("onap.nodes.sdwan.ManagementDomain", + schemaProvider.getLatestSchemaVersion()); + System.out.println(vertSchema.toString()); + + // Validate schema + PropertySchema propSchema = vertSchema.getPropertySchema("controllers"); + assertTrue(propSchema.getDataType().getType().compareTo(Type.LIST) == 0); + ListDataType listType = (ListDataType)propSchema.getDataType(); + assertTrue(listType.getListType().getType().compareTo(Type.STRING) == 0); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaMapAttribute() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("onap.nodes.sdwan.ManagementDomain", + schemaProvider.getLatestSchemaVersion()); + System.out.println(vertSchema.toString()); + + // Validate schema + PropertySchema propSchema = vertSchema.getPropertySchema("analyticClusters"); + assertTrue(propSchema.getDataType().getType().compareTo(Type.MAP) == 0); + MapDataType mapType = (MapDataType)propSchema.getDataType(); + assertTrue(mapType.getMapType().getType().compareTo(Type.STRING) == 0); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testJsonSchemaComplexAttribute() { + try { + String testSchema = readFile("src/test/resources/json/jsonSchema.json"); + JsonSchemaProvider schemaProvider = new JsonSchemaProvider(config); + schemaProvider.loadSchema(testSchema, schemaProvider.getLatestSchemaVersion()); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("org.onap.resource.extContrailCP", + schemaProvider.getLatestSchemaVersion()); + System.out.println(vertSchema.toString()); + + System.out.println("\n\nSize: " + vertSchema.getPropertySchemaList().size()); + System.out.println(vertSchema.getPropertySchemaList()); + assertTrue(vertSchema.getPropertySchemaList().size() == 22); + + // Validate property schema + PropertySchema propSchema = vertSchema.getPropertySchema("exCP_naming"); + assertTrue(propSchema.getDataType().getType().compareTo(Type.COMPLEX) == 0); + ComplexDataType complexType = (ComplexDataType)propSchema.getDataType(); + List complexProps = complexType.getSubProperties(); + assertTrue(complexProps.size() == 4); + + PropertySchema subProp = null; + for (PropertySchema p : complexProps) { + if (p.getName().equals("naming_policy")) { + subProp = p; + } + } + + assertTrue(!subProp.isRequired()); + assertTrue(subProp.getDataType().getType().compareTo(Type.STRING) == 0); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testParseSchemaServiceResponse() { + try { + String testSchema = readFile("src/test/resources/json/schemaServiceResponse.json"); + SchemaServiceResponse resp = SchemaServiceResponse.fromJson(testSchema); + + System.out.println(resp.toJson()); + assertTrue(resp.getVersion().equals("v1")); + + JsonSchema jsonSchema = resp.getData(); + System.out.println(jsonSchema.toJson()); + + assertTrue(jsonSchema.getDataTypes().size() == 1); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testSchemaValidateSuccess() { + try { + String testSchema = readFile("src/test/resources/json/schemaServiceResponse.json"); + SchemaServiceResponse schema = SchemaServiceResponse.fromJson(testSchema); + schema.getData().validate(); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test(expected = SchemaProviderException.class) + public void testSchemaValidateBadEdge() throws SchemaProviderException { + SchemaServiceResponse schema; + + try { + String testSchema = readFile("src/test/resources/json/badEdgeSchema.json"); + schema = SchemaServiceResponse.fromJson(testSchema); + } + catch (Exception ex) { + assertTrue(false); + return; + } + + schema.getData().validate(); + } + + @Test(expected = SchemaProviderException.class) + public void testSchemaValidateBadVertex() throws SchemaProviderException { + SchemaServiceResponse schema; + + try { + String testSchema = readFile("src/test/resources/json/badVertexSchema.json"); + schema = SchemaServiceResponse.fromJson(testSchema); + } + catch (Exception ex) { + assertTrue(false); + return; + } + + System.out.println("Validate"); + schema.getData().validate(); + System.out.println("Validate done"); + } + + @Test(expected = SchemaProviderException.class) + public void testSchemaValidateBadType() throws SchemaProviderException { + SchemaServiceResponse schema; + + try { + String testSchema = readFile("src/test/resources/json/badTypeSchema.json"); + schema = SchemaServiceResponse.fromJson(testSchema); + } + catch (Exception ex) { + assertTrue(false); + return; + } + + schema.getData().validate(); + } + + @Test(expected = SchemaProviderException.class) + public void testSchemaValidateBadProp() throws SchemaProviderException { + SchemaServiceResponse schema; + + try { + String testSchema = readFile("src/test/resources/json/badPropSchema.json"); + schema = SchemaServiceResponse.fromJson(testSchema); + } + catch (Exception ex) { + assertTrue(false); + return; + } + + schema.getData().validate(); + } + + static String readFile(String path) throws IOException { + byte[] encoded = Files.readAllBytes(Paths.get(path)); + return new String(encoded); + } +} diff --git a/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaProviderTest.java b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaProviderTest.java new file mode 100644 index 00000000..6c7364ae --- /dev/null +++ b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaProviderTest.java @@ -0,0 +1,254 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2019 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.aai.schemaif.oxm; + + +import static org.junit.Assert.assertTrue; + +import java.io.PrintWriter; +import java.io.StringWriter; +import java.util.Set; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.junit.MockitoJUnitRunner; +import org.onap.aai.schemaif.SchemaProviderException; +import org.onap.aai.schemaif.definitions.EdgeSchema; +import org.onap.aai.schemaif.definitions.PropertySchema; +import org.onap.aai.schemaif.definitions.VertexSchema; +import org.onap.aai.schemaif.definitions.types.DataType.Type; + +@RunWith(MockitoJUnitRunner.Silent.class) +public class OxmSchemaProviderTest extends OxmSchemaServiceSetup { + + @Test + public void testLoadingSchema() throws SchemaProviderException { + try { + OxmSchemaProvider schemaProvider = new OxmSchemaProvider(); + schemaProvider.loadSchema(); + + VertexSchema vertSchema = schemaProvider.getVertexSchema("pserver", schemaProvider.getLatestSchemaVersion()); + System.out.println(vertSchema.toString()); + + EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn", + "cloud-region", "zone", schemaProvider.getLatestSchemaVersion()); + System.out.println(edgeSchema.toString()); + + // Validate vertex schema + assertTrue(vertSchema.getName().equals("pserver")); + assertTrue(vertSchema.getAnnotationValue("nameProps").equals("pserver-name2")); + assertTrue(vertSchema.getAnnotationValue("dependentOn") == null); + + PropertySchema propSchema = vertSchema.getPropertySchema("hostname"); + assertTrue(propSchema.getName().equals("hostname")); + assertTrue(propSchema.getDefaultValue().equals("")); + assertTrue(propSchema.isRequired()); + assertTrue(!propSchema.isKey()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0); + Object obj = propSchema.validateValue("somestring"); + assertTrue(obj instanceof String); + + propSchema = vertSchema.getPropertySchema("in-maint"); + assertTrue(propSchema.getName().equals("in-maint")); + assertTrue(propSchema.getDefaultValue().equals("false")); + assertTrue(!propSchema.isRequired()); + assertTrue(!propSchema.isKey()); + assertTrue(!propSchema.isReserved()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.BOOL) == 0); + obj = propSchema.validateValue("True"); + assertTrue(obj instanceof Boolean); + obj = propSchema.validateValue("false"); + assertTrue(obj instanceof Boolean); + assertTrue(propSchema.getDataType().validateValue("badValue") == null); + + + propSchema = vertSchema.getPropertySchema("aai-node-type"); + assertTrue(propSchema.getName().equals("aai-node-type")); + assertTrue(propSchema.getDefaultValue().equals("")); + assertTrue(!propSchema.isRequired()); + assertTrue(!propSchema.isKey()); + assertTrue(propSchema.isReserved()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0); + + propSchema = vertSchema.getPropertySchema("pserver-id"); + assertTrue(propSchema.getName().equals("pserver-id")); + assertTrue(propSchema.getDefaultValue().equals("")); + assertTrue(propSchema.isRequired()); + assertTrue(!propSchema.isReserved()); + assertTrue(propSchema.isKey()); + assertTrue(propSchema.getDataType().getType().compareTo(Type.STRING) == 0); + + propSchema = vertSchema.getPropertySchema("number-of-cpus"); + assertTrue(propSchema.getName().equals("number-of-cpus")); + assertTrue(propSchema.getAnnotationValue("source-of-truth-type").equals("openstack")); + assertTrue(propSchema.getDataType().getType().compareTo(Type.INT) == 0); + obj = propSchema.validateValue("35"); + assertTrue(obj instanceof Integer); + obj = propSchema.validateValue("5.0"); + assertTrue(obj instanceof Integer); + assertTrue(propSchema.getDataType().validateValue("5.5") == null); + assertTrue(propSchema.getDataType().validateValue("xyz") == null); + + // Validate edge schema + assertTrue(edgeSchema.getName().equals("org.onap.relationships.inventory.LocatedIn")); + assertTrue(edgeSchema.getSource().equals("cloud-region")); + assertTrue(edgeSchema.getTarget().equals("zone")); + assertTrue(edgeSchema.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE)); + assertTrue(edgeSchema.getAnnotationValue("contains-other-v").equals("NONE")); + assertTrue(edgeSchema.getPropertySchema("prevent-delete").getDataType().getType().equals(Type.STRING)); + + // Validate 'dependentOn' annotation + vertSchema = schemaProvider.getVertexSchema("tenant", schemaProvider.getLatestSchemaVersion()); + assertTrue(vertSchema.getAnnotationValue("dependentOn").equals("cloud-region")); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testAdjacentEdges() throws SchemaProviderException { + try { + OxmSchemaProvider schemaProvider = new OxmSchemaProvider(); + schemaProvider.loadSchema(); + + Set edgeSchemaList = + schemaProvider.getAdjacentEdgeSchema("snapshot", schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 2); + + for (EdgeSchema es : edgeSchemaList) { + System.out.println(es.toString()); + if (es.getName().equals("org.onap.relationships.inventory.BelongsTo")) { + assertTrue(es.getSource().equals("snapshot")); + assertTrue(es.getTarget().equals("cloud-region")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE)); + } + else if (es.getName().equals("org.onap.relationships.inventory.Uses")) { + assertTrue(es.getSource().equals("vserver")); + assertTrue(es.getTarget().equals("snapshot")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.ONE_2_ONE)); + } + else { + assertTrue(false); + } + } + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testValidSourceTargetEdge() throws SchemaProviderException { + try { + OxmSchemaProvider schemaProvider = new OxmSchemaProvider(); + schemaProvider.loadSchema(); + + Set edgeSchemaList = + schemaProvider.getEdgeSchemaForSourceTarget("service-instance", "customer", + schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 1); + assertTrue(edgeSchemaList.iterator().next().getName().equals("ncso.related-to")); + assertTrue(edgeSchemaList.iterator().next().getSource().equals("service-instance")); + assertTrue(edgeSchemaList.iterator().next().getTarget().equals("customer")); + assertTrue(edgeSchemaList.iterator().next().getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + + edgeSchemaList = + schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "complex", + schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 2); + + for (EdgeSchema es : edgeSchemaList) { + System.out.println(es.toString()); + if (es.getName().equals("org.onap.relationships.inventory.FoundIn")) { + assertTrue(es.getSource().equals("cloud-region")); + assertTrue(es.getTarget().equals("complex")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_MANY)); + } + else if (es.getName().equals("org.onap.relationships.inventory.LocatedIn")) { + assertTrue(es.getSource().equals("cloud-region")); + assertTrue(es.getTarget().equals("complex")); + assertTrue(es.getMultiplicity().equals(EdgeSchema.Multiplicity.MANY_2_ONE)); + } + else { + assertTrue(false); + } + } + + edgeSchemaList = + schemaProvider.getEdgeSchemaForSourceTarget("cloud-region", "bad-node", + schemaProvider.getLatestSchemaVersion()); + + // Validate edge schema + assertTrue(edgeSchemaList.size() == 0); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } + + @Test + public void testInvalidVertexOrEdge() throws SchemaProviderException { + try { + OxmSchemaProvider schemaProvider = new OxmSchemaProvider(); + schemaProvider.loadSchema(); + + VertexSchema vertSchema = + schemaProvider.getVertexSchema("bad-node", schemaProvider.getLatestSchemaVersion()); + assertTrue(vertSchema == null); + + EdgeSchema edgeSchema = schemaProvider.getEdgeSchema("org.onap.relationships.inventory.LocatedIn", + "cloud-region", "bad-node", schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchema == null); + + Set edgeSchemaList = + schemaProvider.getAdjacentEdgeSchema("org.onap.nodes.bad-node", + schemaProvider.getLatestSchemaVersion()); + assertTrue(edgeSchemaList.isEmpty()); + } + catch (Exception ex) { + StringWriter writer = new StringWriter(); + PrintWriter printWriter = new PrintWriter(writer); + ex.printStackTrace(printWriter); + System.out.println(writer.toString()); + assertTrue(false); + } + } +} diff --git a/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaServiceSetup.java b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaServiceSetup.java new file mode 100644 index 00000000..b4c1ca2e --- /dev/null +++ b/aai-schema-abstraction/src/test/java/org/onap/aai/schemaif/oxm/OxmSchemaServiceSetup.java @@ -0,0 +1,78 @@ +/** + * ============LICENSE_START======================================================= + * org.onap.aai + * ================================================================================ + * Copyright © 2019 AT&T Intellectual Property. All rights reserved. + * Copyright © 2019 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.aai.schemaif.oxm; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import org.junit.Before; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.onap.aai.edges.EdgeIngestor; +import org.onap.aai.nodes.NodeIngestor; +import org.onap.aai.setup.AAIConfigTranslator; +import org.onap.aai.setup.SchemaLocationsBean; +import org.onap.aai.setup.SchemaVersion; +import org.onap.aai.setup.SchemaConfigVersions; +import org.onap.aai.setup.Translator; + +public class OxmSchemaServiceSetup { + + @Mock + private SchemaLocationsBean schemaLocationsBean; + + @Mock + private SchemaConfigVersions schemaConfigVersions; + + private EdgePropsConfiguration edgePropsConfiguration = new EdgePropsConfiguration(); + + private List schemaVersionList = new ArrayList<>(); + + private OxmEdgeRulesLoader edgeLoader; + private OxmSchemaLoader vertexLoader; + + @Before + public void schemaBeanMockSetup() throws Exception { + schemaVersionList.add(new SchemaVersion("v13")); + + Mockito.when(schemaConfigVersions.getVersions()).thenReturn(schemaVersionList); + Mockito.when(schemaLocationsBean.getNodesInclusionPattern()).thenReturn(Arrays.asList(".*oxm(.*).xml")); + Mockito.when(schemaLocationsBean.getEdgesInclusionPattern()).thenReturn(Arrays.asList("DbEdgeRules_.*.json")); + Mockito.when(schemaLocationsBean.getNodeDirectory()).thenReturn("src/test/resources/oxm/oxm"); + Mockito.when(schemaLocationsBean.getEdgeDirectory()).thenReturn("src/test/resources/oxm/edge-rules"); + + AAIConfigTranslator aaiConfigTranslator = new AAIConfigTranslator(schemaLocationsBean, schemaConfigVersions); + Set translators = new HashSet<>(); + translators.add(aaiConfigTranslator); + NodeIngestor nodeIngestor = new NodeIngestor(translators); + nodeIngestor.initialize(); + EdgeIngestor edgeIngestor = new EdgeIngestor(translators); + edgeIngestor.initialize(); + + edgePropsConfiguration.setEdgePropsDir("src/test/resources/oxm/edge-props"); + edgeLoader = new OxmEdgeRulesLoader(aaiConfigTranslator, edgeIngestor, edgePropsConfiguration); + vertexLoader = new OxmSchemaLoader(aaiConfigTranslator, nodeIngestor); + } + +} diff --git a/aai-schema-abstraction/src/test/resources/json/badEdgeSchema.json b/aai-schema-abstraction/src/test/resources/json/badEdgeSchema.json new file mode 100644 index 00000000..66892d3a --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/badEdgeSchema.json @@ -0,0 +1,100 @@ +{ + "schema-version": "v1", + "schema-type": "json", + "schema-content": { + "relationship_types": [ + { + "from": "tosca.nodes.SoftwareComponent", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "org.onap.datatypes.network.MacAssignments", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "name": "tosca.nodes.ObjectStorage", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/json/badPropSchema.json b/aai-schema-abstraction/src/test/resources/json/badPropSchema.json new file mode 100644 index 00000000..5c24fce0 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/badPropSchema.json @@ -0,0 +1,101 @@ +{ + "schema-version": "v1", + "schema-type": "json", + "schema-content": { + "relationship_types": [ + { + "from": "tosca.nodes.SoftwareComponent", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "org.onap.datatypes.network.MacAssignments", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "name": "tosca.nodes.ObjectStorage", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/json/badTypeSchema.json b/aai-schema-abstraction/src/test/resources/json/badTypeSchema.json new file mode 100644 index 00000000..c987a840 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/badTypeSchema.json @@ -0,0 +1,101 @@ +{ + "schema-version": "v1", + "schema-type": "json", + "schema-content": { + "relationship_types": [ + { + "from": "tosca.nodes.SoftwareComponent", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "name": "tosca.nodes.ObjectStorage", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/json/badVertexSchema.json b/aai-schema-abstraction/src/test/resources/json/badVertexSchema.json new file mode 100644 index 00000000..cd8bd3d7 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/badVertexSchema.json @@ -0,0 +1,100 @@ +{ + "schema-version": "v1", + "schema-type": "json", + "schema-content": { + "relationship_types": [ + { + "from": "tosca.nodes.SoftwareComponent", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "org.onap.datatypes.network.MacAssignments", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + } + ] + } +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/json/jsonSchema.json b/aai-schema-abstraction/src/test/resources/json/jsonSchema.json new file mode 100644 index 00000000..36db8bbd --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/jsonSchema.json @@ -0,0 +1,976 @@ +{ + "relationship_types": [ + { + "from": "service-instance", + "to": "*", + "label": "amdocs.linkedTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "unknown", + "to": "*", + "label": "amdocs.unknownRelationship", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "*", + "to": "unknown", + "label": "amdocs.unknownRelationship", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.SoftwareComponent", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.ObjectStorage", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "onap.nodes.sdwan.ManagementDomain", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.LoadBalancer", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.Database", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.Database", + "label": "tosca.relationships.Uses", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.WebApplication", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.LoadBalancer", + "to": "tosca.nodes.WebServer", + "label": "tosca.relationships.RoutesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "nodes.ics.Port", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.network.BindsTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.network.Port", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.network.BindsTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.Compute", + "to": "tosca.nodes.BlockStorage", + "label": "tosca.relationships.AttachesTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.RoutingInstance", + "to": "onap.nodes.sdwan.service.SubscriberService", + "label": "onap.relationships.sdwan.BelongsTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.RoutingInstance", + "to": "onap.nodes.sdwan.ManagementDomain", + "label": "onap.relationships.ManagedBy", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "tosca.nodes.Database", + "to": "tosca.nodes.DBMS", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.uCPE", + "to": "onap.nodes.sdwan.service.SubscriberService", + "label": "onap.relationships.sdwan.BelongsTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.uCPE", + "to": "onap.nodes.sdwan.ManagementDomain", + "label": "onap.relationships.ManagedBy", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.VPN", + "to": "onap.nodes.sdwan.service.SubscriberService", + "label": "onap.relationships.sdwan.BelongsTo", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + }, + { + "from": "onap.nodes.sdwan.Account", + "to": "onap.nodes.sdwan.ManagementDomain", + "label": "onap.relationships.ManagedBy", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "org.onap.datatypes.network.VlanRequirements", + "description": "", + "properties": [ + { + "name": "vlan_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "vlan_type", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "Valid_values: [c-tag, s-tag]," + }, + { + "name": "vlan_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + }, + { + "name": "org.onap.datatypes.RuleList", + "description": "", + "properties": [ + { + "name": "network_policy_entries_policy_rule", + "required": false, + "type": "list:string", + "description": "", + "default": "", + "constraint": "" + } + ] + }, + { + "name": "org.onap.datatypes.network.MacRequirements", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count_required", + "required": false, + "type": "org.onap.datatypes.AssignmentRequirements", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + }, + { + "name": "org.onap.datatypes.AssignmentRequirements", + "description": "", + "properties": [ + { + "name": "is_required", + "required": false, + "type": "boolean", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + }, + { + "name": "org.onap.datatypes.Naming", + "description": "", + "properties": [ + { + "name": "generated_naming", + "required": false, + "type": "boolean", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "naming_policy", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "instance_name", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "name": "unknown", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "node-name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] + }, + { + "name": "service-instance", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "service-instance-name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "service-type", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + }, + { + "name": "tosca.nodes.ObjectStorage", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + }, + { + "name": "org.onap.resource.NetworkRules", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "network_policy_entries", + "required": false, + "unique": false, + "type": "org.onap.datatypes.RuleList", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] + }, + { + "name": "onap.nodes.sdwan.ManagementDomain", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "mdName", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "controllers", + "required": true, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "stagingControllers", + "required": true, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "mdDirectorUrl", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "mdDirectorCredentialName", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "encryptionType", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "analyticClusters", + "required": false, + "unique": false, + "type": "map:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "cliUsers", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "devicesSet", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] + }, + { + "name": "org.onap.resource.extContrailCP", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "static_routes", + "required": false, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "virtual_network", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "static_route", + "required": false, + "unique": false, + "type": "boolean", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "allowed_address_pairs", + "required": false, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "shared_ip", + "required": false, + "unique": false, + "type": "boolean", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "interface_type", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Valid_values: [management, left, right, other]," + } + }, + { + "name": "network_role", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "network_role_tag", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "mac_requirements", + "required": false, + "unique": false, + "type": "org.onap.datatypes.network.MacRequirements", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "vlan_requirements", + "required": false, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "ip_requirements", + "required": true, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "exCP_naming", + "required": true, + "unique": false, + "type": "org.onap.datatypes.Naming", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "subnetpoolid", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "subinterface_indicator", + "required": false, + "unique": false, + "type": "boolean", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "related_networks", + "required": false, + "unique": false, + "type": "list:string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "ip_address", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "order", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0," + } + }, + { + "name": "is_default", + "required": false, + "unique": false, + "type": "boolean", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "ip_range_start", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "ip_range_end", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] + } + ], + "common_node_properties": [ + { + "name": "aai-uuid", + "required": true, + "unique": true, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "source-of-truth", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/json/schemaServiceResponse.json b/aai-schema-abstraction/src/test/resources/json/schemaServiceResponse.json new file mode 100644 index 00000000..06e78ed1 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/json/schemaServiceResponse.json @@ -0,0 +1,131 @@ +{ + "schema-version": "v1", + "schema-type": "json", + "schema-content": { + "relationship_types": [ + { + "from": "tosca.nodes.SoftwareComponent", + "to": "tosca.nodes.Compute", + "label": "tosca.relationships.HostedOn", + "annotations": { + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE" + } + } + ], + "data_types": [ + { + "name": "org.onap.datatypes.network.MacAssignments", + "description": "", + "properties": [ + { + "name": "mac_range_plan", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "mac_count", + "required": false, + "type": "integer", + "description": "", + "default": "", + "constraint": "" + }, + { + "name": "supplemental_data", + "required": false, + "type": "string", + "description": "", + "default": "", + "constraint": "" + } + ] + } + ], + "node_types": [ + { + "name": "tosca.nodes.ObjectStorage", + "description": "", + "uriTemplate": "", + "properties": [ + { + "name": "name", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "size", + "required": true, + "unique": false, + "type": "integer", + "description": "", + "default": "50", + "annotations": { + "indexed": false, + "searchable": true, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + }, + { + "name": "maxsize", + "required": true, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "Greater_or_equal: 0 GB," + } + } + ] + } + ], + "common_node_properties": [ + { + "name": "aai-uuid", + "required": true, + "unique": true, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": true, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + }, + { + "name": "source-of-truth", + "required": false, + "unique": false, + "type": "string", + "description": "", + "default": "", + "annotations": { + "indexed": false, + "searchable": false, + "source_of_truth_type": "AAI", + "constraint": "" + } + } + ] + } +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/oxm/edge-props/edge_properties_v13.json b/aai-schema-abstraction/src/test/resources/oxm/edge-props/edge_properties_v13.json new file mode 100644 index 00000000..8d00636d --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/oxm/edge-props/edge_properties_v13.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/aai-schema-abstraction/src/test/resources/oxm/edge-rules/v13/DbEdgeRules_v13.json b/aai-schema-abstraction/src/test/resources/oxm/edge-rules/v13/DbEdgeRules_v13.json new file mode 100644 index 00000000..75365661 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/oxm/edge-rules/v13/DbEdgeRules_v13.json @@ -0,0 +1,2848 @@ +{ + "rules": [ + { + "from": "service-instance", + "to": "customer", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "generic-vnf", + "to": "vnfc", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "vnfc", + "to": "vnfc", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "vnfc", + "to": "vserver", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "generic-vnf", + "to": "service-instance", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "generic-vnf", + "to": "generic-vnf", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, +{ + "from": "service-instance", + "to": "generic-vnf", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, +{ + "from": "generic-vnf", + "to": "vserver", + "label": "ncso.related-to", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" +}, + { + "from": "allotted-resource", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.PartOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "l3-network", + "label": "org.onap.relationships.inventory.PartOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "l-interface", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "network-policy", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "vlan", + "label": "org.onap.relationships.inventory.PartOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "vpn-binding", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "tunnel-xconnect", + "to": "allotted-resource", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "availability-zone", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "availability-zone", + "to": "service-capability", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "availability-zone", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "cloud-region", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "cloud-region", + "to": "complex", + "label": "org.onap.relationships.inventory.FoundIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "cloud-region", + "to": "l3-network", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "cloud-region", + "to": "zone", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "dvs-switch", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "flavor", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "group-assignment", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "image", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "oam-network", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "snapshot", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "tenant", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv4-address-list", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv6-address-list", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "volume-group", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "complex", + "to": "l3-network", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "ctag-pool", + "to": "complex", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "allotted-resource", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "logical-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "metadatum", + "to": "configuration", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "connector", + "to": "virtual-data-center", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "metadatum", + "to": "connector", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "element-choice-set", + "to": "constrained-element-set", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "ctag-pool", + "to": "availability-zone", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "service-subscription", + "to": "customer", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "dvs-switch", + "to": "availability-zone", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "model-element", + "to": "element-choice-set", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "entitlement", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "availability-zone", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "ctag-pool", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "ipsec-configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "l3-network", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "pnf", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "pserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vnfc", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "vnf-image", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "volume-group", + "label": "org.onap.relationships.inventory.DependsOn", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "vserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "license", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "network-profile", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "site-pair-set", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "pserver", + "to": "group-assignment", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "${direction}", + "default": "true", + "description":"" + }, + { + "from": "tenant", + "to": "group-assignment", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "metadatum", + "to": "image", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "instance-group", + "to": "model", + "label": "org.onap.relationships.inventory.Targets", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vig-server", + "to": "ipsec-configuration", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "instance-group", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "l3-network", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "subnet", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "instance-group", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "l3-network", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "subnet", + "label": "org.onap.relationships.inventory.network.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "ctag-assignment", + "to": "l3-network", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-network", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-network", + "to": "network-policy", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-network", + "to": "route-table-reference", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-network", + "to": "vpn-binding", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "segmentation-assignment", + "to": "l3-network", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "l3-network", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "subnet", + "to": "l3-network", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "lag-link", + "label": "tosca.relationships.network.LinksTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "logical-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "p-interface", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "lag-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "l-interface", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "false", + "description":"" + }, + { + "from": "line-of-business", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "l-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "l-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "l-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "logical-link", + "label": "tosca.relationships.network.LinksTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "l-interface", + "label": "org.onap.relationships.inventory.Source", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "false", + "description":"" + }, + { + "from": "logical-link", + "to": "l-interface", + "label": "org.onap.relationships.inventory.Destination", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "false", + "description":"" + }, + { + "from": "sriov-vf", + "to": "l-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vlan", + "to": "l-interface", + "label": "tosca.relationships.network.LinksTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.BridgedTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "lag-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "logical-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "pnf", + "label": "org.onap.relationships.inventory.BridgedTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "pserver", + "label": "org.onap.relationships.inventory.BridgedTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "vpn-binding", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "model-ver", + "to": "model", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "constrained-element-set", + "to": "model-constraint", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "constrained-element-set", + "to": "model-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "model-constraint", + "to": "model-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "model-element", + "to": "model-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "model-element", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "metadatum", + "to": "model-ver", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "model-element", + "to": "model-ver", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "named-query", + "to": "model", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "named-query-element", + "to": "named-query", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "named-query-element", + "to": "model", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "named-query-element", + "to": "named-query-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "property-constraint", + "to": "named-query-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "related-lookup", + "to": "named-query-element", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "newvce", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "oam-network", + "to": "complex", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "oam-network", + "to": "service-capability", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "operational-environment", + "to": "operational-environment", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "owning-entity", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "p-interface", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "p-interface", + "to": "logical-link", + "label": "tosca.relationships.network.LinksTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "p-interface", + "to": "physical-link", + "label": "tosca.relationships.network.LinksTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "sriov-pf", + "to": "p-interface", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "platform", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "pnf", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "p-interface", + "to": "pnf", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "pnf", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "pnf", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "pnf", + "to": "zone", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "cvlan-tag", + "to": "port-group", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "project", + "to": "service-instance", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "pserver", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "p-interface", + "to": "pserver", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "pserver", + "to": "availability-zone", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "pserver", + "to": "cloud-region", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "pserver", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "pserver", + "to": "zone", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "site-pair", + "to": "routing-instance", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "service-instance", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "metadatum", + "to": "service-instance", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "allotted-resource", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "connector", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "ctag-assignment", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "cvlan-tag", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "logical-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "pnf", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "service-instance", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "vlan", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "zone", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "service-subscription", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "class-of-service", + "to": "site-pair", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "routing-instance", + "to": "site-pair-set", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "sriov-vf", + "to": "sriov-pf", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "host-route", + "to": "subnet", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-subscription", + "to": "tenant", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "tenant", + "to": "l3-network", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "tenant", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "entitlement", + "to": "vce", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "license", + "to": "vce", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "port-group", + "to": "vce", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "vce", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vce", + "to": "availability-zone", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vce", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vce", + "to": "vserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "l3-network", + "label": "org.onap.relationships.inventory.DependsOn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "vnfc", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "${direction}", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "volume-group", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv4-address-list", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv4-address-list", + "to": "subnet", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv6-address-list", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vip-ipv6-address-list", + "to": "subnet", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "virtual-data-center", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "virtual-data-center", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "vlan", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "vlan", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vlan", + "to": "logical-link", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vlan", + "to": "multicast-configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv4-address-list", + "to": "vnfc", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-interface-ipv6-address-list", + "to": "vnfc", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vnfc", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vnfc", + "to": "vip-ipv4-address-list", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vnfc", + "to": "vip-ipv6-address-list", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "tenant", + "to": "volume-group", + "label": "org.onap.relationships.inventory.DependsOn", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "volume-group", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "lag-interface", + "to": "vpls-pe", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "p-interface", + "to": "vpls-pe", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vpls-pe", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vpls-pe", + "to": "ctag-pool", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "route-target", + "to": "vpn-binding", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l-interface", + "to": "vserver", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "vserver", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vnfc", + "to": "vserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "flavor", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "image", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "pserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "snapshot", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vserver", + "to": "volume", + "label": "tosca.relationships.AttachesTo", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "${direction}", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "zone", + "to": "complex", + "label": "org.onap.relationships.inventory.LocatedIn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "allotted-resource", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "l3-network", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "logical-link", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vf-module", + "to": "model-ver", + "label": "org.onap.relationships.inventory.IsA", + "direction": "OUT", + "multiplicity": "Many2One", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "l-interface", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "pnf", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder", + "to": "forwarding-path", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarding-path", + "to": "service-instance", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder", + "to": "l-interface", + "label": "org.onap.relationships.inventory.ForwardsTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder", + "to": "configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarding-path", + "to": "configuration", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder", + "to": "lag-interface", + "label": "org.onap.relationships.inventory.ForwardsTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "evc", + "to": "configuration", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder-evc", + "to": "configuration", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "forwarder", + "to": "p-interface", + "label": "org.onap.relationships.inventory.ForwardsTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "generic-vnf", + "to": "nos-server", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "nos-server", + "to": "pserver", + "label": "tosca.relationships.HostedOn", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "nos-server", + "to": "tenant", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "NONE", + "prevent-delete": "!${direction}", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "configuration", + "label": "tosca.relationships.network.BindsTo", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "vpn-binding", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "configuration", + "to": "l3-network", + "label": "org.onap.relationships.inventory.PartOf", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "vpn-binding", + "to": "customer", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description":"" + }, + { + "from": "service-instance", + "to": "configuration", + "label": "org.onap.relationships.inventory.ComposedOf", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "false", + "description":"" + }, + { + "from": "forwarder", + "to": "generic-vnf", + "label": "org.onap.relationships.inventory.AppliesTo", + "direction": "OUT", + "multiplicity": "MANY2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description": "Points to the generic-vnf(s) involved in this forwarding step." + }, + { + "from": "cloud-region", + "to": "instance-group", + "label": "org.onap.relationships.inventory.Uses", + "direction": "OUT", + "multiplicity": "ONE2MANY", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description": "" + }, + { + "from": "collection", + "to": "instance-group", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description": "" + }, + { + "from": "service-instance", + "to": "collection", + "label": "org.onap.relationships.inventory.MemberOf", + "direction": "OUT", + "multiplicity": "ONE2ONE", + "contains-other-v": "NONE", + "delete-other-v": "NONE", + "prevent-delete": "NONE", + "default": "true", + "description": "" + }, + { + "from": "vlan-mapping", + "to": "forwarder-evc", + "label": "org.onap.relationships.inventory.BelongsTo", + "direction": "OUT", + "multiplicity": "MANY2ONE", + "contains-other-v": "!${direction}", + "delete-other-v": "!${direction}", + "prevent-delete": "NONE", + "default": "true", + "description": "" + } + ] +} \ No newline at end of file diff --git a/aai-schema-abstraction/src/test/resources/oxm/oxm/v13/aai_oxm_v13.xml b/aai-schema-abstraction/src/test/resources/oxm/oxm/v13/aai_oxm_v13.xml new file mode 100644 index 00000000..bb786a35 --- /dev/null +++ b/aai-schema-abstraction/src/test/resources/oxm/oxm/v13/aai_oxm_v13.xml @@ -0,0 +1,6775 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit 1.2.3-korg