Add Audit Data Quality Summary 19/79819/1
authorNorm Traxler <normant@amdocs.com>
Wed, 6 Mar 2019 21:29:17 +0000 (21:29 +0000)
committerNorm Traxler <normant@amdocs.com>
Wed, 6 Mar 2019 21:29:53 +0000 (21:29 +0000)
Issue-ID: LOG-665

Change-Id: I3ce6ca51e2d59eb27fafed6326571c24a638a27e
Signed-off-by: Norm Traxler <normant@amdocs.com>
pom.xml
src/main/java/org/onap/pomba/contextaggregator/datatypes/AggregatedModels.java
src/main/java/org/onap/pomba/contextaggregator/datatypes/DataQualitySummary.java [new file with mode: 0644]
src/main/java/org/onap/pomba/contextaggregator/datatypes/POAEvent.java
src/test/java/org/onap/pomba/contextaggregator/datatypes/AggregatedModelsTest.java
src/test/java/org/onap/pomba/contextaggregator/datatypes/POAEventTest.java
src/test/resources/modelContextAAI-input.json [new file with mode: 0644]

diff --git a/pom.xml b/pom.xml
index 25c8aa1..33be969 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -39,7 +39,6 @@
     <dependency>
       <groupId>org.eclipse.jetty</groupId>
       <artifactId>jetty-security</artifactId>
-      <version>9.4.12.RC1</version>
     </dependency>
     <dependency>
       <groupId>org.onap.dmaap.messagerouter.dmaapclient</groupId>
@@ -49,7 +48,6 @@
     <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
-       <version>1.2.3</version>
     </dependency>
     <dependency>
       <groupId>org.onap.aai</groupId>
index a502425..49dbefe 100644 (file)
  * limitations under the License.
  * ============LICENSE_END=====================================================
  */
+
 package org.onap.pomba.contextaggregator.datatypes;
 
+import com.google.gson.Gson;
+import com.google.gson.GsonBuilder;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.google.gson.annotations.Expose;
+import com.google.gson.annotations.SerializedName;
+
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.UUID;
+
 import org.onap.pomba.common.datatypes.ModelContext;
 import org.onap.pomba.contextaggregator.config.EventHeaderConfig;
-import com.google.gson.Gson;
-import com.google.gson.GsonBuilder;
-import com.google.gson.annotations.Expose;
-import com.google.gson.annotations.SerializedName;
 
 public class AggregatedModels {
 
@@ -35,53 +44,110 @@ public class AggregatedModels {
     Header entityHeader;
     @Expose
     @SerializedName("entity")
-    POAEntity poaEntity;
-
+    PoaEntity poaEntity;
 
     /**
-     * Creates an event with an entity header and entity containing the models and poa-event from Dmaap
+     * Creates an event with an entity header and entity containing the models and
+     * poa-event from Dmaap.
      *
-     * @param headerConfig
-     * @param jsonContextMap
+     * @param headerConfig The event header config
+     * @param jsonContextMap The context map
+     * @param event The POA Event
      */
     public AggregatedModels(EventHeaderConfig headerConfig, Map<String, String> jsonContextMap, POAEvent event) {
         entityHeader = new Header(headerConfig);
 
         Gson gson = new GsonBuilder().create();
         Map<String, ModelContext> contextMap = new HashMap<>();
+        List<String> errorTexts = new ArrayList<>();
+
         for (Entry<String, String> entry : jsonContextMap.entrySet()) {
             ModelContext context = null;
             if (entry.getValue().isEmpty()) {
                 context = new ModelContext();
             } else {
                 context = gson.fromJson(entry.getValue(), ModelContext.class);
+                JsonParser parser = new JsonParser();
+                JsonElement jsonElement = parser.parse(entry.getValue());
+                errorTexts.addAll(extractErrors(entry.getKey(), jsonElement));
             }
             contextMap.put(entry.getKey(), context);
         }
 
-        poaEntity = new POAEntity(contextMap, event);
+        if (errorTexts.isEmpty()) {
+            event.setDataQualitySummary(DataQualitySummary.ok());
+        } else {
+            // Fill the errors:
+            event.setDataQualitySummary(DataQualitySummary.error(errorTexts));
+        }
+
+        poaEntity = new PoaEntity(contextMap, event);
     }
 
+    /**
+     * Recursive method to find all the dataQuality errors in the JsonElement.
+     * @param errorPath Path to the current element
+     * @param jsonElement The json element
+     * @return list of error strings extracted from the json element and it's children.
+     */
+    private static List<String> extractErrors(String errorPath, JsonElement jsonElement) {
+        List<String> errorTexts = new ArrayList<>();
+        if (jsonElement.isJsonArray()) {
+            JsonArray jsonArray = jsonElement.getAsJsonArray();
+            for (int i = 0; i < jsonArray.size(); i++) {
+                JsonElement indexElement = jsonArray.get(i);
+                errorTexts.addAll(extractErrors(errorPath + "[" + i + "]", indexElement));
+            }
+        } else if (jsonElement.isJsonObject()) {
+            JsonObject jsonObject = jsonElement.getAsJsonObject();
+            extractErrorsFromJsonObject(errorPath, errorTexts, jsonObject);
+        }
+
+        return errorTexts;
+    }
+
+    private static void extractErrorsFromJsonObject(String errorPath, List<String> errorTexts, JsonObject jsonObject) {
+        for (Entry<String, JsonElement> entrySet : jsonObject.entrySet()) {
+            if ("dataQuality".equals(entrySet.getKey())) {
+                JsonElement dqElement = entrySet.getValue();
+
+                JsonObject dqObject = dqElement.getAsJsonObject();
+                JsonElement dqStatusElement = dqObject.get("status");
+                if (dqStatusElement == null) {
+                    continue;
+                }
+                String statusValue = dqStatusElement.getAsString();
+
+                if ("error".equals(statusValue)) {
+                    JsonElement dqErrorTextElement = dqObject.get("errorText");
+                    if (dqErrorTextElement != null) {
+                        String errorTextValue = dqErrorTextElement.getAsString();
+                        errorTexts.add(errorPath + ": " + errorTextValue);                        
+                    }
+                }
+            } else {
+                // recursive call to extract errors from other JsonElements:
+                errorTexts.addAll(extractErrors(errorPath + "/" + entrySet.getKey(), entrySet.getValue()));
+            }
+        }
+    }
 
     /**
-     * Returns this instance as a JSON payload
+     * Returns this instance as a JSON payload.
      *
      * @return
      */
     public String generateJsonPayload() {
         Gson gson = new GsonBuilder().create();
-        String payload = gson.toJson(this);
-        return payload;
+        return gson.toJson(this);
     }
 
     public Header getEntityHeader() {
         return entityHeader;
     }
 
-
-
     /**
-     * Entity header class for JSON serialization
+     * Entity header class for JSON serialization.
      */
     private class Header {
         @Expose
@@ -117,43 +183,9 @@ public class AggregatedModels {
             topicName = config.getTopicName();
             eventId = UUID.randomUUID().toString();
         }
-
-
-        public String getId() {
-            return id;
-        }
-
-        public String getDomain() {
-            return domain;
-        }
-
-        public String getSourceName() {
-            return sourceName;
-        }
-
-        public String getEventType() {
-            return eventType;
-        }
-
-        public String getEntityType() {
-            return entityType;
-        }
-
-        public String getTopEntityType() {
-            return topEntityType;
-        }
-
-        public String getTopicName() {
-            return topicName;
-        }
-
-        public String getEventId() {
-            return eventId;
-        }
     }
 
-
-    private class POAEntity {
+    private class PoaEntity {
         @Expose
         @SerializedName("poa-event")
         POAEvent event;
@@ -161,7 +193,7 @@ public class AggregatedModels {
         @SerializedName("context-list")
         private Map<String, ModelContext> contextMap;
 
-        public POAEntity(Map<String, ModelContext> contextMap, POAEvent event) {
+        public PoaEntity(Map<String, ModelContext> contextMap, POAEvent event) {
             this.contextMap = contextMap;
             this.event = event;
         }
diff --git a/src/main/java/org/onap/pomba/contextaggregator/datatypes/DataQualitySummary.java b/src/main/java/org/onap/pomba/contextaggregator/datatypes/DataQualitySummary.java
new file mode 100644 (file)
index 0000000..21941cc
--- /dev/null
@@ -0,0 +1,83 @@
+/*\r
+ * ============LICENSE_START===================================================\r
+ * Copyright (c) 2019 Amdocs\r
+ * ============================================================================\r
+ * Licensed under the Apache License, Version 2.0 (the "License");\r
+ * you may not use this file except in compliance with the License.\r
+ * You may obtain a copy of the License at\r
+ *\r
+ *        http://www.apache.org/licenses/LICENSE-2.0\r
+ *\r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS,\r
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+ * See the License for the specific language governing permissions and\r
+ * limitations under the License.\r
+ * ============LICENSE_END=====================================================\r
+ */\r
+\r
+package org.onap.pomba.contextaggregator.datatypes;\r
+\r
+import com.google.gson.annotations.Expose;\r
+import com.google.gson.annotations.SerializedName;\r
+\r
+import java.util.ArrayList;\r
+import java.util.List;\r
+\r
+public class DataQualitySummary {\r
+    @Expose\r
+    @SerializedName("status")\r
+    private Status status;\r
+    @Expose\r
+    @SerializedName("errors")\r
+    private List<String> errors = new ArrayList<>();\r
+\r
+    public enum Status {\r
+        ok,\r
+        error\r
+    }\r
+\r
+    public Status getStatus() {\r
+        return this.status;\r
+    }\r
+\r
+    public void setStatus(Status status) {\r
+        this.status = status;\r
+    }\r
+\r
+    public List<String> getErrors() {\r
+        return this.errors;\r
+    }\r
+\r
+    public void setErrors(List<String> errors) {\r
+        this.errors = errors;\r
+    }\r
+\r
+    /**\r
+     * Creates an "ok" DataQualitySummary instance.\r
+     * @return\r
+     */\r
+    public static DataQualitySummary ok() {\r
+        DataQualitySummary result = new DataQualitySummary();\r
+        result.setStatus(Status.ok);\r
+        return result;\r
+    }\r
+\r
+    /**\r
+     * Creates an "error" DataQualitySummary instance.\r
+     * @param errors List of error descriptions\r
+     * @return\r
+     */\r
+    public static DataQualitySummary error(List<String> errors) {\r
+        DataQualitySummary result = new DataQualitySummary();\r
+        result.setStatus(Status.error);\r
+        result.setErrors(errors);\r
+        return result;\r
+    }\r
+\r
+    @Override\r
+    public String toString() {\r
+        return "DataQuality [status=" + this.status + ", errors=" + this.errors + "]";\r
+    }\r
+\r
+}\r
index 36b2dc9..15d1b2a 100644 (file)
@@ -27,8 +27,7 @@ public class POAEvent {
     private String modelInvariantId;
     private String xFromAppId;
     private String xTransactionId;
-
-    public POAEvent() {}
+    private DataQualitySummary dataQualitySummary;
 
     public String getServiceInstanceId() {
         return serviceInstanceId;
@@ -70,6 +69,14 @@ public class POAEvent {
         this.xTransactionId = xTransactionId;
     }
 
+    public DataQualitySummary getDataQualitySummary() {
+        return dataQualitySummary;
+    }
+
+    public void setDataQualitySummary(DataQualitySummary dataQualitySummary) {
+        this.dataQualitySummary = dataQualitySummary;
+    }
+
     public boolean validate() throws ContextAggregatorException {
         final String missing = " is missing";
 
@@ -108,6 +115,7 @@ public class POAEvent {
     @Override
     public String toString() {
         return "POAEvent [serviceInstanceId=" + serviceInstanceId + ", modelVersionId=" + modelVersionId
-                + ", modelInvariantId=" + modelInvariantId + ", xFromAppId=" + xFromAppId + ", xTransactionId=" + xTransactionId + "]";
+                + ", modelInvariantId=" + modelInvariantId + ", xFromAppId=" + xFromAppId + ", xTransactionId=" + xTransactionId 
+                + ", dataQualitySummary=" + dataQualitySummary + "]";
     }
 }
index e0c9705..743b032 100644 (file)
 
 package org.onap.pomba.contextaggregator.datatypes;
 
+import java.nio.file.Files;
+import java.nio.file.Paths;
 import java.util.HashMap;
 import java.util.Map;
 
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.mockito.MockitoAnnotations;
 import org.onap.pomba.contextaggregator.config.EventHeaderConfig;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
 public class AggregatedModelsTest {
 
     AggregatedModels aggregatedModels;
@@ -43,27 +40,55 @@ public class AggregatedModelsTest {
     private String topEntityType;
     private String topicName;
 
-    EventHeaderConfig eventHeaderConfig = new EventHeaderConfig(
-            domain, sourceName, eventType, entityType, topEntityType, topicName);
+    EventHeaderConfig eventHeaderConfig = new EventHeaderConfig(domain, sourceName, eventType, entityType,
+            topEntityType, topicName);
 
     Map<String, String> jsonContextMap = new HashMap<>();
 
-    POAEvent pOAEvent = new POAEvent();
+    POAEvent poaEvent = new POAEvent();
 
+    /**
+     * JUnit setup.
+     */
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
-        pOAEvent.setServiceInstanceId("a");
-        pOAEvent.setModelVersionId("b");
-        pOAEvent.setModelInvariantId("c");
-        pOAEvent.setxFromAppId("e");
-        pOAEvent.setxTransactionId("f");
+        poaEvent.setServiceInstanceId("a");
+        poaEvent.setModelVersionId("b");
+        poaEvent.setModelInvariantId("c");
+        poaEvent.setxFromAppId("e");
+        poaEvent.setxTransactionId("f");
     }
 
     @Test
     public void testGenerateJsonPayload() throws Exception {
-        aggregatedModels = new AggregatedModels(eventHeaderConfig,jsonContextMap,pOAEvent);
+        aggregatedModels = new AggregatedModels(eventHeaderConfig, jsonContextMap, poaEvent);
         Assert.assertNotNull(aggregatedModels.generateJsonPayload());
         Assert.assertNotNull(aggregatedModels.getEntityHeader());
     }
+
+    @Test
+    public void testDataQualitySummaryError() throws Exception {
+        String filename = "src/test/resources/modelContextAAI-input.json";
+        String fileContent = new String(Files.readAllBytes(Paths.get(filename)));
+
+        jsonContextMap.put("aai", fileContent);
+        jsonContextMap.put("sdnc", fileContent);
+        aggregatedModels = new AggregatedModels(eventHeaderConfig, jsonContextMap, poaEvent);
+        Assert.assertNotNull(aggregatedModels.generateJsonPayload());
+        Assert.assertNotNull(aggregatedModels.getEntityHeader());
+        Assert.assertNotNull(poaEvent.getDataQualitySummary());
+        System.err.println(poaEvent.getDataQualitySummary());
+        Assert.assertEquals(DataQualitySummary.Status.error, poaEvent.getDataQualitySummary().getStatus());
+    }
+    
+    @Test
+    public void testDataQualitySummaryOk() throws Exception {
+        jsonContextMap.put("aai", "{}");
+        aggregatedModels = new AggregatedModels(eventHeaderConfig, jsonContextMap, poaEvent);
+        Assert.assertNotNull(aggregatedModels.generateJsonPayload());
+        Assert.assertNotNull(aggregatedModels.getEntityHeader());
+        Assert.assertNotNull(poaEvent.getDataQualitySummary());
+        Assert.assertEquals(DataQualitySummary.Status.ok, poaEvent.getDataQualitySummary().getStatus());
+    }
 }
index 13f15dd..7041840 100644 (file)
@@ -23,36 +23,31 @@ import static org.junit.Assert.assertTrue;
 import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Test;
-import org.junit.runner.RunWith;
 import org.onap.pomba.contextaggregator.exception.ContextAggregatorException;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
 
-@RunWith(SpringJUnit4ClassRunner.class)
-@SpringBootTest
 public class POAEventTest {
 
-    POAEvent pOAEvent = new POAEvent();
+    POAEvent poaEvent = new POAEvent();
 
     @Before
     public void setup() {
-        pOAEvent.setServiceInstanceId("a");
-        pOAEvent.setModelVersionId("b");
-        pOAEvent.setModelInvariantId("c");
-        pOAEvent.setxFromAppId("e");
-        pOAEvent.setxTransactionId("f");
+        poaEvent.setServiceInstanceId("a");
+        poaEvent.setModelVersionId("b");
+        poaEvent.setModelInvariantId("c");
+        poaEvent.setxFromAppId("e");
+        poaEvent.setxTransactionId("f");
     }
 
     @Test
     public void testValidate() throws ContextAggregatorException {
-        pOAEvent.validate();
+        poaEvent.validate();
     }
 
     @Test
     public void testValidateEmptyServiceInstanceId() throws ContextAggregatorException {
-        pOAEvent.setServiceInstanceId("");
+        poaEvent.setServiceInstanceId("");
         try {
-            pOAEvent.validate();
+            poaEvent.validate();
         }
         catch (ContextAggregatorException e) {
             assertTrue(e.getMessage().contains("is missing"));
@@ -61,10 +56,10 @@ public class POAEventTest {
 
     @Test
     public void testValidateEmptyModelVersionId() throws ContextAggregatorException {
-        pOAEvent.setModelVersionId("");
+        poaEvent.setModelVersionId("");
 
         try {
-            pOAEvent.validate();
+            poaEvent.validate();
         }
         catch (ContextAggregatorException e) {
             assertTrue(e.getMessage().contains("is missing"));
@@ -73,10 +68,10 @@ public class POAEventTest {
 
     @Test
     public void testValidateEmptyModelInvariantId() throws ContextAggregatorException {
-        pOAEvent.setModelInvariantId("");
+        poaEvent.setModelInvariantId("");
 
         try {
-            pOAEvent.validate();
+            poaEvent.validate();
         }
         catch (ContextAggregatorException e) {
             assertTrue(e.getMessage().contains("is missing"));
@@ -85,10 +80,10 @@ public class POAEventTest {
 
     @Test
     public void testValidateEmptyxFromAppId() throws ContextAggregatorException {
-        pOAEvent.setxFromAppId("");
+        poaEvent.setxFromAppId("");
 
         try {
-            pOAEvent.validate();
+            poaEvent.validate();
         }
         catch (ContextAggregatorException e) {
             assertTrue(e.getMessage().contains("is missing"));
@@ -97,10 +92,10 @@ public class POAEventTest {
 
     @Test
     public void testValidateEmptyxTransactionId() throws ContextAggregatorException {
-        pOAEvent.setxTransactionId("");
+        poaEvent.setxTransactionId("");
 
         try {
-            pOAEvent.validate();
+            poaEvent.validate();
         }
         catch (ContextAggregatorException e) {
             assertTrue(e.getMessage().contains("is missing"));
@@ -109,7 +104,7 @@ public class POAEventTest {
 
     @Test
     public void testToString() {
-        String result = pOAEvent.toString();
+        String result = poaEvent.toString();
         Assert.assertNotEquals("", result);
     }
 }
diff --git a/src/test/resources/modelContextAAI-input.json b/src/test/resources/modelContextAAI-input.json
new file mode 100644 (file)
index 0000000..9f095f7
--- /dev/null
@@ -0,0 +1,1341 @@
+{\r
+  "service": {\r
+    "uuid": "PombaDemoCust_001-ServiceInst-001",\r
+    "name": "PombaDemoCust_001-ServiceInst-001-name",\r
+    "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+    "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+    "dataQuality": {\r
+      "status": "error",\r
+      "errorText": "error1"\r
+    },\r
+    "attributeList": [\r
+       {\r
+          "name": "hostName",\r
+           "dataQuality": {\r
+                    "status": "error",\r
+                    "errorText": "error1.1"\r
+        }\r
+       }\r
+    ]\r
+  },\r
+  "dataQuality": {\r
+    "status": "error",\r
+    "errorText": "error2"\r
+  },\r
+  "attributeList": [],\r
+  "vnfList": [\r
+    {\r
+      "uuid": "PombaDemoCust_001-VNF-id-001-2",\r
+      "name": "Firewall-2",\r
+      "type": "vFW-vSINK-service/vFWvSINK 0",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "error",\r
+        "errorText": "error3"\r
+      },\r
+      "attributeList": [],\r
+      "vfModuleList": [\r
+        {\r
+          "uuid": "PombaDemoCust_001-VNF-id-001-VfModule001",\r
+          "name": "PombaDemoCust_001-VNF-id-001-VfModule001-name",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "modelCustomizationUUID": "3b822416-475d-4e1c-aac3-2544b0a0fdfc",\r
+          "maxInstances": 1,\r
+          "minInstances": 0,\r
+          "dataQuality": {\r
+            "status": "error",\r
+            "errorText": "error4"\r
+          },\r
+          "attributeList": [],\r
+          "vmList": [\r
+            {\r
+              "uuid": "a6a609e3-967a-48bd-8ce5-41c7ff5c19b9-2",\r
+              "name": "Firewall-001-2",\r
+              "dataQuality": {\r
+               "status": "error",\r
+               "errorText": "error5"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "hostName",\r
+                  "dataQuality": {\r
+                    "status": "error",\r
+                    "errorText": "error6"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "lockedBoolean",\r
+                  "value": "true",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "imageId",\r
+                  "value": "PombaRegion001-image001",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "pServer": {\r
+                "dataQuality": {\r
+                  "status": "ok"\r
+                },\r
+                "attributeList": [],\r
+                "pInterfaceList": []\r
+              },\r
+              "lInterfaceList": []\r
+            }\r
+          ],\r
+          "networkList": [\r
+            {\r
+              "uuid": "2ea02809-7279-4b5e-931a-62b231615497",\r
+              "name": "NET_1105",\r
+              "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+              "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+              "dataQuality": {\r
+                    "status": "error",\r
+                    "errorText": "error7"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "networkType",\r
+                  "value": "network-type-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkTechnology",\r
+                  "value": "network-technology-1",\r
+                  "dataQuality": {\r
+                    "status": "error",\r
+                    "errorText": "error8"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "sharedNetworkBoolean",\r
+                  "value": "true",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkRole",\r
+                  "value": "network-role-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "resourceVersion",\r
+                  "value": "1550591130123",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "networkPolicyList": []\r
+            },\r
+            {\r
+              "uuid": "01e8d84a-17a6-47b5-a167-6a45d1d56603",\r
+              "name": "NET_1106",\r
+              "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+              "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "networkType",\r
+                  "value": "network-type-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkTechnology",\r
+                  "value": "network-technology-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "sharedNetworkBoolean",\r
+                  "value": "true",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkRole",\r
+                  "value": "network-role-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "resourceVersion",\r
+                  "value": "1550591133012",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "networkPolicyList": []\r
+            }\r
+          ]\r
+        }\r
+      ],\r
+      "vnfcList": [],\r
+      "networkList": [\r
+        {\r
+          "uuid": "2ea02809-7279-4b5e-931a-62b231615497",\r
+          "name": "NET_1105",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "networkType",\r
+              "value": "network-type-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkTechnology",\r
+              "value": "network-technology-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "sharedNetworkBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkRole",\r
+              "value": "network-role-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591130123",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "networkPolicyList": []\r
+        },\r
+        {\r
+          "uuid": "01e8d84a-17a6-47b5-a167-6a45d1d56603",\r
+          "name": "NET_1106",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "networkType",\r
+              "value": "network-type-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkTechnology",\r
+              "value": "network-technology-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "sharedNetworkBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkRole",\r
+              "value": "network-role-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591133012",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "networkPolicyList": []\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "uuid": "PombaDemoCust_001-VNF-id-001",\r
+      "name": "Firewall-1",\r
+      "type": "vFW-vSINK-service/vFWvSINK 0",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "ok"\r
+      },\r
+      "attributeList": [\r
+        {\r
+          "name": "nfNamingCode",\r
+          "value": "nf-naming-code1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "nfType",\r
+          "value": "nf-type1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "nfRole",\r
+          "value": "nf-role1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "nfFunction",\r
+          "value": "nf-function1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        }\r
+      ],\r
+      "vfModuleList": [\r
+        {\r
+          "uuid": "PombaDemoCust_001-VNF-id-001-VfModule001",\r
+          "name": "PombaDemoCust_001-VNF-id-001-VfModule001-name",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "modelCustomizationUUID": "3b822416-475d-4e1c-aac3-2544b0a0fdfc",\r
+          "maxInstances": 1,\r
+          "minInstances": 0,\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [],\r
+          "vmList": [\r
+            {\r
+              "uuid": "a6a609e3-967a-48bd-8ce5-41c7ff5c19b9",\r
+              "name": "Firewall-001",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "hostName",\r
+                  "value": "PombaDemoCust_001-pserver-id-001",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "lockedBoolean",\r
+                  "value": "false",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "imageId",\r
+                  "value": "PombaRegion001-image001",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "pServer": {\r
+                "uuid": "PombaDemoCust_001-pserver-id-001",\r
+                "name": "PombaDemoCust_001-pserver-id-001",\r
+                "dataQuality": {\r
+                  "status": "ok"\r
+                },\r
+                "attributeList": [\r
+                  {\r
+                    "name": "lockedBoolean",\r
+                    "value": "true",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "name2",\r
+                    "value": "PombaDemoCust_001-pserver-id-001-name2",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "equipType",\r
+                    "value": "equip-type-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "equipVendor",\r
+                    "value": "equip-vendor-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "equipModel",\r
+                    "value": "equip-model-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "serialNumber",\r
+                    "value": "serial-number",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "fqdn",\r
+                    "value": "fqdn-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "resourceVersion",\r
+                    "value": "1550591242783",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "ptniiName",\r
+                    "value": "ptnii-equip-name-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "topology",\r
+                    "value": "internet-topology-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  },\r
+                  {\r
+                    "name": "purpose",\r
+                    "value": "purpose-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    }\r
+                  }\r
+                ],\r
+                "pInterfaceList": [\r
+                  {\r
+                    "name": "interface-name-pserver1-1",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    },\r
+                    "attributeList": [\r
+                      {\r
+                        "name": "lockedBoolean",\r
+                        "value": "true",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "interfaceRole",\r
+                        "value": "interface-role-pserver1-1",\r
+                        "dataQuality": {\r
+                          "status": "error",\r
+                          "errorText": "error9"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "interfaceType",\r
+                        "value": "interface-type-pserver1-1",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "speedValue",\r
+                        "value": "100",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "speedUnits",\r
+                        "value": "Mbps",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "portDescription",\r
+                        "value": "port-description-pserver1-1",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "resourceVersion",\r
+                        "value": "1550591243386",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "equipmentID",\r
+                        "value": "equipment-identifier-pnf1-1",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      }\r
+                    ],\r
+                    "physicalLinkList": [],\r
+                    "logicalLinkList": []\r
+                  },\r
+                  {\r
+                    "name": "interface-name-pserver1-2",\r
+                    "dataQuality": {\r
+                      "status": "ok"\r
+                    },\r
+                    "attributeList": [\r
+                      {\r
+                        "name": "lockedBoolean",\r
+                        "value": "true",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "interfaceRole",\r
+                        "value": "interface-role-pserver1-2",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "interfaceType",\r
+                        "value": "interface-type-pserver1-2",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "speedValue",\r
+                        "value": "1000",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "speedUnits",\r
+                        "value": "Mbps",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "portDescription",\r
+                        "value": "port-description-pserver1-2",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "resourceVersion",\r
+                        "value": "1550591243407",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      },\r
+                      {\r
+                        "name": "equipmentID",\r
+                        "value": "equipment-identifier-pserver1-2",\r
+                        "dataQuality": {\r
+                          "status": "ok"\r
+                        }\r
+                      }\r
+                    ],\r
+                    "physicalLinkList": [],\r
+                    "logicalLinkList": []\r
+                  }\r
+                ]\r
+              },\r
+              "lInterfaceList": []\r
+            }\r
+          ],\r
+          "networkList": [\r
+            {\r
+              "uuid": "2ea02809-7279-4b5e-931a-62b231615497",\r
+              "name": "NET_1105",\r
+              "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+              "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "networkType",\r
+                  "value": "network-type-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkTechnology",\r
+                  "value": "network-technology-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "sharedNetworkBoolean",\r
+                  "value": "true",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkRole",\r
+                  "value": "network-role-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "resourceVersion",\r
+                  "value": "1550591130123",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "networkPolicyList": []\r
+            },\r
+            {\r
+              "uuid": "01e8d84a-17a6-47b5-a167-6a45d1d56603",\r
+              "name": "NET_1106",\r
+              "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+              "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              },\r
+              "attributeList": [\r
+                {\r
+                  "name": "networkType",\r
+                  "value": "network-type-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkTechnology",\r
+                  "value": "network-technology-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "sharedNetworkBoolean",\r
+                  "value": "true",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "networkRole",\r
+                  "value": "network-role-1",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                },\r
+                {\r
+                  "name": "resourceVersion",\r
+                  "value": "1550591133012",\r
+                  "dataQuality": {\r
+                    "status": "ok"\r
+                  }\r
+                }\r
+              ],\r
+              "networkPolicyList": []\r
+            }\r
+          ]\r
+        }\r
+      ],\r
+      "vnfcList": [],\r
+      "networkList": [\r
+        {\r
+          "uuid": "2ea02809-7279-4b5e-931a-62b231615497",\r
+          "name": "NET_1105",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "networkType",\r
+              "value": "network-type-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkTechnology",\r
+              "value": "network-technology-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "sharedNetworkBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkRole",\r
+              "value": "network-role-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591130123",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "networkPolicyList": []\r
+        },\r
+        {\r
+          "uuid": "01e8d84a-17a6-47b5-a167-6a45d1d56603",\r
+          "name": "NET_1106",\r
+          "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+          "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "networkType",\r
+              "value": "network-type-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkTechnology",\r
+              "value": "network-technology-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "sharedNetworkBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "networkRole",\r
+              "value": "network-role-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591133012",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "networkPolicyList": []\r
+        }\r
+      ]\r
+    }\r
+  ],\r
+  "pnfList": [\r
+    {\r
+      "uuid": "PombaDemoCust_001-PNF2-id-001-id",\r
+      "name": "PombaDemoCust_001-PNF2-id-001",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "error",\r
+        "errorText": "error10"\r
+      },\r
+      "attributeList": [\r
+        {\r
+          "name": "nfRole",\r
+          "value": "nf-role-2",\r
+          "dataQuality": {\r
+            "status": "error"\r
+          }\r
+        },\r
+        {\r
+          "name": "name2",\r
+          "value": "PombaDemoCust_001-PNF2-id-001-name2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipType",\r
+          "value": "equip-type-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipVendor",\r
+          "value": "equip-vendor-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipModel",\r
+          "value": "equip-model-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "swVersion",\r
+          "value": "sw-version-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "serialNumber",\r
+          "value": "serial-number-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "resourceVersion",\r
+          "value": "1550591234748",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "name2Source",\r
+          "value": "pnf2-name2-source-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "managementOptions",\r
+          "value": "management-option-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "frameId",\r
+          "value": "frame-id-02",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        }\r
+      ],\r
+      "pInterfaceList": [\r
+        {\r
+          "uuid": "equipment-identifier-pnf2-1",\r
+          "name": "interface-name-pnf2-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "lockedBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceRole",\r
+              "value": "interface-role-pnf2-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceType",\r
+              "value": "interface-type-pnf2-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedValue",\r
+              "value": "100",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedUnits",\r
+              "value": "Mbps",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "portDescription",\r
+              "value": "port-description-pnf2-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591235395",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "equipmentID",\r
+              "value": "equipment-identifier-pnf2-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "physicalLinkList": [],\r
+          "logicalLinkList": []\r
+        },\r
+        {\r
+          "uuid": "equipment-identifier-pnf2-2",\r
+          "name": "interface-name-pnf2-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "lockedBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceRole",\r
+              "value": "interface-role-pnf2-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceType",\r
+              "value": "interface-type-pnf2-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedValue",\r
+              "value": "1000",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedUnits",\r
+              "value": "Mbps",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "portDescription",\r
+              "value": "port-description-pnf2-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591235633",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "equipmentID",\r
+              "value": "equipment-identifier-pnf2-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "physicalLinkList": [],\r
+          "logicalLinkList": []\r
+        }\r
+      ]\r
+    },\r
+    {\r
+      "uuid": "PombaDemoCust_001-PNF-id-001-id",\r
+      "name": "PombaDemoCust_001-PNF-id-001",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "ok"\r
+      },\r
+      "attributeList": [\r
+        {\r
+          "name": "nfRole",\r
+          "value": "nf-role-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "name2",\r
+          "value": "PombaDemoCust_001-PNF-id-001-name2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipType",\r
+          "value": "equip-type-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipVendor",\r
+          "value": "equip-vendor-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "equipModel",\r
+          "value": "equip-model-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "swVersion",\r
+          "value": "sw-version-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "serialNumber",\r
+          "value": "serial-number-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "resourceVersion",\r
+          "value": "1550591220149",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "name2Source",\r
+          "value": "pnf-name2-source-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "managementOptions",\r
+          "value": "management-option-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "frameId",\r
+          "value": "frame-id-01",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        }\r
+      ],\r
+      "pInterfaceList": [\r
+        {\r
+          "uuid": "equipment-identifier-pnf1-1",\r
+          "name": "interface-name-pnf1-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "lockedBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceRole",\r
+              "value": "interface-role-pnf1-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceType",\r
+              "value": "interface-type-pnf1-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedValue",\r
+              "value": "100",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedUnits",\r
+              "value": "Mbps",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "portDescription",\r
+              "value": "port-description-pnf1-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591221599",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "equipmentID",\r
+              "value": "equipment-identifier-pnf1-1",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "physicalLinkList": [],\r
+          "logicalLinkList": []\r
+        },\r
+        {\r
+          "uuid": "equipment-identifier-pnf1-2",\r
+          "name": "interface-name-pnf1-2",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          },\r
+          "attributeList": [\r
+            {\r
+              "name": "lockedBoolean",\r
+              "value": "true",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceRole",\r
+              "value": "interface-role-pnf1-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "interfaceType",\r
+              "value": "interface-type-pnf1-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedValue",\r
+              "value": "1000",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "speedUnits",\r
+              "value": "Mbps",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "portDescription",\r
+              "value": "port-description-pnf1-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "resourceVersion",\r
+              "value": "1550591222076",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            },\r
+            {\r
+              "name": "equipmentID",\r
+              "value": "equipment-identifier-pnf1-2",\r
+              "dataQuality": {\r
+                "status": "ok"\r
+              }\r
+            }\r
+          ],\r
+          "physicalLinkList": [],\r
+          "logicalLinkList": []\r
+        }\r
+      ]\r
+    }\r
+  ],\r
+  "networkList": [\r
+    {\r
+      "uuid": "2ea02809-7279-4b5e-931a-62b231615497",\r
+      "name": "NET_1105",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "ok"\r
+      },\r
+      "attributeList": [\r
+        {\r
+          "name": "networkType",\r
+          "value": "network-type-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "networkTechnology",\r
+          "value": "network-technology-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "sharedNetworkBoolean",\r
+          "value": "true",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "networkRole",\r
+          "value": "network-role-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "resourceVersion",\r
+          "value": "1550591130123",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        }\r
+      ],\r
+      "networkPolicyList": []\r
+    },\r
+    {\r
+      "uuid": "01e8d84a-17a6-47b5-a167-6a45d1d56603",\r
+      "name": "NET_1106",\r
+      "modelVersionID": "pomba-demo-sdc-model-001-version001",\r
+      "modelInvariantUUID": "pomba-demo-sdc-model-001",\r
+      "dataQuality": {\r
+        "status": "ok"\r
+      },\r
+      "attributeList": [\r
+        {\r
+          "name": "networkType",\r
+          "value": "network-type-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "networkTechnology",\r
+          "value": "network-technology-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "sharedNetworkBoolean",\r
+          "value": "true",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "networkRole",\r
+          "value": "network-role-1",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        },\r
+        {\r
+          "name": "resourceVersion",\r
+          "value": "1550591133012",\r
+          "dataQuality": {\r
+            "status": "ok"\r
+          }\r
+        }\r
+      ],\r
+      "networkPolicyList": []\r
+    }\r
+  ]\r
+}
\ No newline at end of file