From 08673dc040d7483e159a6e705993690538d7b117 Mon Sep 17 00:00:00 2001 From: "Determe, Sebastien (sd378r)" Date: Tue, 8 Aug 2017 02:54:59 -0700 Subject: Rework SDC calls and model Rework the SDC model and queries + Add unit tests with JSON to validate the SDC model Change-Id: I93f08cdc883f5357e3a08e9c246ed30be50a3492 Issue-Id: CLAMP-1 Signed-off-by: Determe, Sebastien (sd378r) --- .../onap/clamp/clds/client/SdcCatalogServices.java | 694 +++--- .../onap/clamp/clds/client/SdcSendReqDelegate.java | 135 +- .../org/onap/clamp/clds/client/req/SdcReq.java | 130 +- .../org/onap/clamp/clds/model/CldsSdcArtifact.java | 112 + .../org/onap/clamp/clds/model/CldsSdcResource.java | 135 ++ .../clamp/clds/model/CldsSdcResourceBasicInfo.java | 164 ++ .../clamp/clds/model/CldsSdcServiceDetail.java | 142 ++ .../onap/clamp/clds/model/CldsSdcServiceInfo.java | 153 ++ .../org/onap/clamp/clds/client/req/SdcReqTest.java | 41 +- .../onap/clamp/clds/it/SdcCatalogServicesIT.java | 289 +++ src/test/java/org/onap/clamp/clds/it/SdcIT.java | 87 + src/test/resources/example/sdc/sdcAlarmsList.csv | 13 + .../resources/example/sdc/sdcCinderVolume.json | 15 + .../resources/example/sdc/sdcMeasurementsList.csv | 17 + .../example/sdc/sdcResourceDetailsExample.json | 126 + .../resources/example/sdc/sdcSecurityRules.json | 15 + .../example/sdc/sdcServiceDetailsExample.json | 230 ++ .../example/sdc/sdcServicesListExample.json | 35 + .../example/sdc/sdcVFCGenericWithAlarms.json | 60 + .../resources/example/sdc/sdcVFCResources.json | 2445 ++++++++++++++++++++ src/test/resources/example/sdc/sdcVFResources.json | 1574 +++++++++++++ 21 files changed, 6202 insertions(+), 410 deletions(-) create mode 100644 src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java create mode 100644 src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java create mode 100644 src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java create mode 100644 src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java create mode 100644 src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java create mode 100644 src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java create mode 100644 src/test/java/org/onap/clamp/clds/it/SdcIT.java create mode 100644 src/test/resources/example/sdc/sdcAlarmsList.csv create mode 100644 src/test/resources/example/sdc/sdcCinderVolume.json create mode 100644 src/test/resources/example/sdc/sdcMeasurementsList.csv create mode 100644 src/test/resources/example/sdc/sdcResourceDetailsExample.json create mode 100644 src/test/resources/example/sdc/sdcSecurityRules.json create mode 100644 src/test/resources/example/sdc/sdcServiceDetailsExample.json create mode 100644 src/test/resources/example/sdc/sdcServicesListExample.json create mode 100644 src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json create mode 100644 src/test/resources/example/sdc/sdcVFCResources.json create mode 100644 src/test/resources/example/sdc/sdcVFResources.json diff --git a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java b/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java index 58bba3c9..a009f06f 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcCatalogServices.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 AT&T Intellectual Property. All rights * reserved. * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. + * 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 + * + * 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============================================ * =================================================================== @@ -23,41 +23,66 @@ package org.onap.clamp.clds.client; +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.StringReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.ArrayList; +import java.util.Collections; +import java.util.Date; +import java.util.Iterator; +import java.util.List; + +import org.apache.commons.csv.CSVFormat; +import org.apache.commons.csv.CSVRecord; +import org.apache.commons.lang3.StringUtils; +import org.onap.clamp.clds.client.req.SdcReq; +import org.onap.clamp.clds.model.CldsAlarmCondition; +import org.onap.clamp.clds.model.CldsDBServiceCache; +import org.onap.clamp.clds.model.CldsSdcArtifact; +import org.onap.clamp.clds.model.CldsSdcResource; +import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; +import org.onap.clamp.clds.model.CldsSdcServiceInfo; +import org.onap.clamp.clds.model.CldsServiceData; +import org.onap.clamp.clds.model.CldsVfData; +import org.onap.clamp.clds.model.CldsVfKPIData; +import org.onap.clamp.clds.model.CldsVfcData; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.model.refprop.RefProp; +import org.onap.clamp.clds.util.LoggingUtils; +import org.springframework.beans.factory.annotation.Autowired; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.TextNode; -import org.onap.clamp.clds.client.req.SdcReq; -import org.onap.clamp.clds.model.*; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.refprop.RefProp; -import org.apache.commons.csv.CSVFormat; -import org.apache.commons.csv.CSVRecord; -import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.beans.factory.annotation.Autowired; - -import java.io.*; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Iterator; -import java.util.List; public class SdcCatalogServices { - private static final Logger logger = LoggerFactory.getLogger(SdcSendReqDelegate.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcCatalogServices.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + + private static final String RESOURCE_VF_TYPE = "VF"; + private static final String RESOURCE_VFC_TYPE = "VFC"; @Autowired - private RefProp refProp; + private RefProp refProp; - public String getAsdcServicesInformation(String uuid) throws Exception { - String baseUrl = refProp.getStringValue("asdc.serviceUrl"); - String basicAuth = SdcReq.getAsdcBasicAuth(refProp); + public String getSdcServicesInformation(String uuid) throws Exception { + Date startTime = new Date(); + String baseUrl = refProp.getStringValue("sdc.serviceUrl"); + String basicAuth = SdcReq.getSdcBasicAuth(refProp); try { String url = baseUrl; if (uuid != null) { @@ -67,7 +92,7 @@ public class SdcCatalogServices { HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); - conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool"); + conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool"); conn.setRequestProperty("Authorization", basicAuth); conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); conn.setRequestMethod("GET"); @@ -77,113 +102,129 @@ public class SdcCatalogServices { logger.info(resp.toString()); return resp; } + // metrics log + LoggingUtils.setResponseContext("0", "Get sdc services success", this.getClass().getName()); + } catch (Exception e) { - logger.error("not able to ger any service information from asdc for uuid:" + uuid); + LoggingUtils.setResponseContext("900", "Get sdc services failed", this.getClass().getName()); + LoggingUtils.setErrorContext("900", "Get sdc services error"); + logger.error("not able to get any service information from sdc for uuid:" + uuid); } + LoggingUtils.setTimeContext(startTime, new Date()); + LoggingUtils.setTargetContext("SDC", "Get Services"); + metricsLogger.info("Get sdc services information"); + return ""; } /** - * To remove duplicate serviceUUIDs from asdc services List + * To remove duplicate serviceUUIDs from sdc services List * - * @param rawCldsAsdcServiceList + * @param rawCldsSdcServiceList * @return */ - public List removeDuplicateServices(List rawCldsAsdcServiceList) { - List cldsAsdcServiceInfoList = null; - if (rawCldsAsdcServiceList != null && rawCldsAsdcServiceList.size() > 0) { + public List removeDuplicateServices(List rawCldsSdcServiceList) { + List cldsSdcServiceInfoList = null; + if (rawCldsSdcServiceList != null && rawCldsSdcServiceList.size() > 0) { // sort list - Collections.sort(rawCldsAsdcServiceList); - // and then take only the services with the max version (last in the list with the same name) - cldsAsdcServiceInfoList = new ArrayList<>(); - for (int i = 1; i < rawCldsAsdcServiceList.size(); i++) { - // compare name with previous - if not equal, then keep the previous (it's the last with that name) - CldsAsdcServiceInfo prev = rawCldsAsdcServiceList.get(i - 1); - if (!rawCldsAsdcServiceList.get(i).getName().equals(prev.getName())) { - cldsAsdcServiceInfoList.add(prev); + Collections.sort(rawCldsSdcServiceList); + // and then take only the services with the max version (last in the + // list with the same name) + cldsSdcServiceInfoList = new ArrayList<>(); + for (int i = 1; i < rawCldsSdcServiceList.size(); i++) { + // compare name with previous - if not equal, then keep the + // previous (it's the last with that name) + CldsSdcServiceInfo prev = rawCldsSdcServiceList.get(i - 1); + if (!rawCldsSdcServiceList.get(i).getName().equals(prev.getName())) { + cldsSdcServiceInfoList.add(prev); } } // add the last in the list - cldsAsdcServiceInfoList.add(rawCldsAsdcServiceList.get(rawCldsAsdcServiceList.size() - 1)); + cldsSdcServiceInfoList.add(rawCldsSdcServiceList.get(rawCldsSdcServiceList.size() - 1)); } - return cldsAsdcServiceInfoList; + return cldsSdcServiceInfoList; } /** - * To remove duplicate serviceUUIDs from asdc resources List + * To remove duplicate serviceUUIDs from sdc resources List * - * @param rawCldsAsdcResourceList + * @param rawCldsSdcResourceList * @return */ - public List removeDuplicateAsdcResourceInstances(List rawCldsAsdcResourceList) { - List cldsAsdcResourceList = null; - if (rawCldsAsdcResourceList != null && rawCldsAsdcResourceList.size() > 0) { + public List removeDuplicateSdcResourceInstances(List rawCldsSdcResourceList) { + List cldsSdcResourceList = null; + if (rawCldsSdcResourceList != null && rawCldsSdcResourceList.size() > 0) { // sort list - Collections.sort(rawCldsAsdcResourceList); - // and then take only the resources with the max version (last in the list with the same name) - cldsAsdcResourceList = new ArrayList<>(); - for (int i = 1; i < rawCldsAsdcResourceList.size(); i++) { - // compare name with previous - if not equal, then keep the previous (it's the last with that name) - CldsAsdcResource prev = rawCldsAsdcResourceList.get(i - 1); - if (!rawCldsAsdcResourceList.get(i).getResourceInstanceName().equals(prev.getResourceInstanceName())) { - cldsAsdcResourceList.add(prev); + Collections.sort(rawCldsSdcResourceList); + // and then take only the resources with the max version (last in + // the list with the same name) + cldsSdcResourceList = new ArrayList<>(); + for (int i = 1; i < rawCldsSdcResourceList.size(); i++) { + // compare name with previous - if not equal, then keep the + // previous (it's the last with that name) + CldsSdcResource prev = rawCldsSdcResourceList.get(i - 1); + if (!rawCldsSdcResourceList.get(i).getResourceInstanceName().equals(prev.getResourceInstanceName())) { + cldsSdcResourceList.add(prev); } } // add the last in the list - cldsAsdcResourceList.add(rawCldsAsdcResourceList.get(rawCldsAsdcResourceList.size() - 1)); + cldsSdcResourceList.add(rawCldsSdcResourceList.get(rawCldsSdcResourceList.size() - 1)); } - return cldsAsdcResourceList; + return cldsSdcResourceList; } - /** * To remove duplicate basic resources with same resourceUUIDs * - * @param rawCldsAsdcResourceListBasicList + * @param rawCldsSdcResourceListBasicList * @return */ - public List removeDuplicateAsdcResourceBasicInfo(List rawCldsAsdcResourceListBasicList) { - List cldsAsdcResourceBasicInfoList = null; - if (rawCldsAsdcResourceListBasicList != null && rawCldsAsdcResourceListBasicList.size() > 0) { + public List removeDuplicateSdcResourceBasicInfo( + List rawCldsSdcResourceListBasicList) { + List cldsSdcResourceBasicInfoList = null; + if (rawCldsSdcResourceListBasicList != null && rawCldsSdcResourceListBasicList.size() > 0) { // sort list - Collections.sort(rawCldsAsdcResourceListBasicList); - // and then take only the resources with the max version (last in the list with the same name) - cldsAsdcResourceBasicInfoList = new ArrayList<>(); - for (int i = 1; i < rawCldsAsdcResourceListBasicList.size(); i++) { - // compare name with previous - if not equal, then keep the previous (it's the last with that name) - CldsAsdcResourceBasicInfo prev = rawCldsAsdcResourceListBasicList.get(i - 1); - if (!rawCldsAsdcResourceListBasicList.get(i).getName().equals(prev.getName())) { - cldsAsdcResourceBasicInfoList.add(prev); + Collections.sort(rawCldsSdcResourceListBasicList); + // and then take only the resources with the max version (last in + // the list with the same name) + cldsSdcResourceBasicInfoList = new ArrayList<>(); + for (int i = 1; i < rawCldsSdcResourceListBasicList.size(); i++) { + // compare name with previous - if not equal, then keep the + // previous (it's the last with that name) + CldsSdcResourceBasicInfo prev = rawCldsSdcResourceListBasicList.get(i - 1); + if (!rawCldsSdcResourceListBasicList.get(i).getName().equals(prev.getName())) { + cldsSdcResourceBasicInfoList.add(prev); } } // add the last in the list - cldsAsdcResourceBasicInfoList.add(rawCldsAsdcResourceListBasicList.get(rawCldsAsdcResourceListBasicList.size() - 1)); + cldsSdcResourceBasicInfoList + .add(rawCldsSdcResourceListBasicList.get(rawCldsSdcResourceListBasicList.size() - 1)); } - return cldsAsdcResourceBasicInfoList; + return cldsSdcResourceBasicInfoList; } /** * To get ServiceUUID by using serviceInvariantUUID * - * @param invariantID + * @param invariantId * @return * @throws Exception */ - public String getServiceUUIDFromServiceInvariantID(String invariantID) throws Exception { - String serviceUUID = ""; - String responseStr = getAsdcServicesInformation(null); - List rawCldsAsdcServicesList = getCldsAsdcServicesListFromJson(responseStr); - List cldsAsdcServicesList = removeDuplicateServices(rawCldsAsdcServicesList); - if (cldsAsdcServicesList != null && cldsAsdcServicesList.size() > 0) { - for (CldsAsdcServiceInfo currCldsAsdcServiceInfo : cldsAsdcServicesList) { - if (currCldsAsdcServiceInfo != null && currCldsAsdcServiceInfo.getInvariantUUID() != null - && currCldsAsdcServiceInfo.getInvariantUUID().equalsIgnoreCase(invariantID)) { - serviceUUID = currCldsAsdcServiceInfo.getUuid(); + public String getServiceUuidFromServiceInvariantId(String invariantId) throws Exception { + String serviceUuid = ""; + String responseStr = getSdcServicesInformation(null); + List rawCldsSdcServicesList = getCldsSdcServicesListFromJson(responseStr); + List cldsSdcServicesList = removeDuplicateServices(rawCldsSdcServicesList); + if (cldsSdcServicesList != null && cldsSdcServicesList.size() > 0) { + for (CldsSdcServiceInfo currCldsSdcServiceInfo : cldsSdcServicesList) { + if (currCldsSdcServiceInfo != null && currCldsSdcServiceInfo.getInvariantUUID() != null + && currCldsSdcServiceInfo.getInvariantUUID().equalsIgnoreCase(invariantId)) { + serviceUuid = currCldsSdcServiceInfo.getUuid(); break; } } } - return serviceUUID; + return serviceUuid; } /** @@ -195,16 +236,17 @@ public class SdcCatalogServices { * @throws JsonMappingException * @throws IOException */ - public List getCldsAsdcServicesListFromJson(String jsonStr) throws IOException { + public List getCldsSdcServicesListFromJson(String jsonStr) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); if (StringUtils.isBlank(jsonStr)) { return null; } - return objectMapper.readValue(jsonStr, objectMapper.getTypeFactory().constructCollectionType(List.class, CldsAsdcServiceInfo.class)); + return objectMapper.readValue(jsonStr, + objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcServiceInfo.class)); } /** - * To get List class by parsing json string + * To get List class by parsing json string * * @param jsonStr * @return @@ -212,12 +254,13 @@ public class SdcCatalogServices { * @throws JsonMappingException * @throws IOException */ - public List getAllAsdcResourcesListFromJson(String jsonStr) throws IOException { + public List getAllSdcResourcesListFromJson(String jsonStr) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); if (StringUtils.isBlank(jsonStr)) { return null; } - return objectMapper.readValue(jsonStr, objectMapper.getTypeFactory().constructCollectionType(List.class, CldsAsdcResourceBasicInfo.class)); + return objectMapper.readValue(jsonStr, + objectMapper.getTypeFactory().constructCollectionType(List.class, CldsSdcResourceBasicInfo.class)); } /** @@ -229,13 +272,13 @@ public class SdcCatalogServices { * @throws JsonMappingException * @throws IOException */ - public CldsAsdcResource getCldsAsdcResourceFromJson(String jsonStr) throws IOException { + public CldsSdcResource getCldsSdcResourceFromJson(String jsonStr) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.readValue(jsonStr, CldsAsdcResource.class); + return objectMapper.readValue(jsonStr, CldsSdcResource.class); } /** - * To get CldsAsdcServiceDetail by parsing json string + * To get CldsSdcServiceDetail by parsing json string * * @param jsonStr * @return @@ -243,26 +286,32 @@ public class SdcCatalogServices { * @throws JsonMappingException * @throws IOException */ - public CldsAsdcServiceDetail getCldsAsdcServiceDetailFromJson(String jsonStr) throws IOException { + public CldsSdcServiceDetail getCldsSdcServiceDetailFromJson(String jsonStr) throws IOException { ObjectMapper objectMapper = new ObjectMapper(); - return objectMapper.readValue(jsonStr, CldsAsdcServiceDetail.class); + return objectMapper.readValue(jsonStr, CldsSdcServiceDetail.class); } /** - * To upload artifact to asdc based on serviceUUID and resourcename on url + * To upload artifact to sdc based on serviceUUID and resourcename on url + * * @param prop * @param userid * @param url - * @param formatttedAsdcReq + * @param formatttedSdcReq * @return * @throws Exception */ - public String uploadArtifactToAsdc(ModelProperties prop, String userid, String url, String formatttedAsdcReq) throws Exception { + public String uploadArtifactToSdc(ModelProperties prop, String userid, String url, String formatttedSdcReq) + throws Exception { + // Verify whether it is triggered by Validation Test button from UI + if (prop.isTest()) { + return "sdc artifact upload not executed for test action"; + } logger.info("userid=" + userid); - String md5Text = SdcReq.calculateMD5ByString(formatttedAsdcReq); - byte[] postData = SdcReq.stringToByteArray(formatttedAsdcReq); + String md5Text = SdcReq.calculateMD5ByString(formatttedSdcReq); + byte[] postData = SdcReq.stringToByteArray(formatttedSdcReq); int postDataLength = postData.length; - HttpURLConnection conn = getAsdcHttpUrlConnection(userid, postDataLength, url, md5Text); + HttpURLConnection conn = getSdcHttpUrlConnection(userid, postDataLength, url, md5Text); try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) { wr.write(postData); } @@ -283,18 +332,19 @@ public class SdcCatalogServices { return responseStr; } - private HttpURLConnection getAsdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text) throws IOException { + private HttpURLConnection getSdcHttpUrlConnection(String userid, int postDataLength, String url, String md5Text) + throws IOException { logger.info("userid=" + userid); - String basicAuth = SdcReq.getAsdcBasicAuth(refProp); - String asdcXONAPInstanceID = refProp.getStringValue("asdc.asdcX-ONAP-InstanceID"); + String basicAuth = SdcReq.getSdcBasicAuth(refProp); + String sdcXonapInstanceId = refProp.getStringValue("sdc.sdcX-InstanceID"); URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); conn.setDoOutput(true); - conn.setRequestProperty("X-ONAP-InstanceID", asdcXONAPInstanceID); + conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), sdcXonapInstanceId); conn.setRequestProperty("Authorization", basicAuth); conn.setRequestProperty("Content-Type", "application/json"); conn.setRequestProperty("Content-MD5", md5Text); - conn.setRequestProperty("HTTP_CSP_USERID", userid); + conn.setRequestProperty("USER_ID", userid); conn.setRequestMethod("POST"); conn.setRequestProperty("charset", "utf-8"); conn.setRequestProperty("Content-Length", Integer.toString(postDataLength)); @@ -326,8 +376,8 @@ public class SdcCatalogServices { return inStream; } - - public CldsDBServiceCache getCldsDBServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) throws IOException { + public CldsDBServiceCache getCldsDbServiceCacheUsingCldsServiceData(CldsServiceData cldsServiceData) + throws IOException { CldsDBServiceCache cldsDbServiceCache = new CldsDBServiceCache(); cldsDbServiceCache.setCldsDataInstream(cldsServiceData); cldsDbServiceCache.setInvariantId(cldsServiceData.getServiceInvariantUUID()); @@ -335,14 +385,14 @@ public class SdcCatalogServices { return cldsDbServiceCache; } - public boolean isCldsAsdcCacheDataExpired(CldsServiceData cldsServiceData) throws Exception { + public boolean isCldsSdcCacheDataExpired(CldsServiceData cldsServiceData) throws Exception { boolean expired = false; if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) { - String cachedServiceUUID = cldsServiceData.getServiceUUID(); - String latestServiceUUID = getServiceUUIDFromServiceInvariantID(cldsServiceData.getServiceInvariantUUID()); + String cachedServiceUuid = cldsServiceData.getServiceUUID(); + String latestServiceUuid = getServiceUuidFromServiceInvariantId(cldsServiceData.getServiceInvariantUUID()); String defaultRecordAge = refProp.getStringValue("CLDS_SERVICE_CACHE_MAX_SECONDS"); - if ((!cachedServiceUUID.equalsIgnoreCase(latestServiceUUID)) || - (cldsServiceData.getAgeOfRecord() != null && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) { + if ((!cachedServiceUuid.equalsIgnoreCase(latestServiceUuid)) || (cldsServiceData.getAgeOfRecord() != null + && cldsServiceData.getAgeOfRecord() > Long.parseLong(defaultRecordAge))) { expired = true; } } else { @@ -351,29 +401,32 @@ public class SdcCatalogServices { return expired; } - public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUUID) throws Exception { - String url = refProp.getStringValue("asdc.serviceUrl"); - String catalogUrl = refProp.getStringValue("asdc.catalog.url"); - String serviceUUID = getServiceUUIDFromServiceInvariantID(invariantServiceUUID); - String serviceDetailUrl = url + "/" + serviceUUID + "/metadata"; + public CldsServiceData getCldsServiceDataWithAlarmConditions(String invariantServiceUuid) throws Exception { + String url = refProp.getStringValue("sdc.serviceUrl"); + String catalogUrl = refProp.getStringValue("sdc.catalog.url"); + String serviceUuid = getServiceUuidFromServiceInvariantId(invariantServiceUuid); + String serviceDetailUrl = url + "/" + serviceUuid + "/metadata"; String responseStr = getCldsServicesOrResourcesBasedOnURL(serviceDetailUrl, false); ObjectMapper objectMapper = new ObjectMapper(); CldsServiceData cldsServiceData = new CldsServiceData(); if (responseStr != null) { - CldsAsdcServiceDetail cldsAsdcServiceDetail = objectMapper.readValue(responseStr, CldsAsdcServiceDetail.class); - cldsServiceData.setServiceUUID(cldsAsdcServiceDetail.getUuid()); - cldsServiceData.setServiceInvariantUUID(cldsAsdcServiceDetail.getInvariantUUID()); - - // To remove duplicate resources from serviceDetail and add valid vfs to service - if (cldsAsdcServiceDetail != null && cldsAsdcServiceDetail.getResources() != null) { - List cldsAsdcResourceList = removeDuplicateAsdcResourceInstances(cldsAsdcServiceDetail.getResources()); - if (cldsAsdcResourceList != null && cldsAsdcResourceList.size() > 0) { + CldsSdcServiceDetail cldsSdcServiceDetail = objectMapper.readValue(responseStr, CldsSdcServiceDetail.class); + cldsServiceData.setServiceUUID(cldsSdcServiceDetail.getUuid()); + cldsServiceData.setServiceInvariantUUID(cldsSdcServiceDetail.getInvariantUUID()); + + // To remove duplicate resources from serviceDetail and add valid + // vfs to service + if (cldsSdcServiceDetail != null && cldsSdcServiceDetail.getResources() != null) { + List cldsSdcResourceList = removeDuplicateSdcResourceInstances( + cldsSdcServiceDetail.getResources()); + if (cldsSdcResourceList != null && cldsSdcResourceList.size() > 0) { List cldsVfDataList = new ArrayList<>(); - for (CldsAsdcResource currCldsAsdcResource : cldsAsdcResourceList) { - if (currCldsAsdcResource != null && currCldsAsdcResource.getResoucreType() != null && currCldsAsdcResource.getResoucreType().equalsIgnoreCase("VF")) { + for (CldsSdcResource currCldsSdcResource : cldsSdcResourceList) { + if (currCldsSdcResource != null && currCldsSdcResource.getResoucreType() != null + && currCldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { CldsVfData currCldsVfData = new CldsVfData(); - currCldsVfData.setVfName(currCldsAsdcResource.getResourceInstanceName()); - currCldsVfData.setVfInvariantResourceUUID(currCldsAsdcResource.getResourceInvariantUUID()); + currCldsVfData.setVfName(currCldsSdcResource.getResourceInstanceName()); + currCldsVfData.setVfInvariantResourceUUID(currCldsSdcResource.getResourceInvariantUUID()); cldsVfDataList.add(currCldsVfData); } } @@ -395,35 +448,47 @@ public class SdcCatalogServices { private void getAllVfcForVfList(List cldsVfDataList, String catalogUrl) throws IOException { // todo : refact this.. if (cldsVfDataList != null && cldsVfDataList.size() > 0) { - List allAsdcResources = getAllAsdcResources(); - String resourceVFType = "VF"; - List allVfResources = getAllAsdcVForVFCResourcesBasedOnResourceType(resourceVFType, allAsdcResources); - String resourceVFCType = "VFC"; - List allVfcResources = getAllAsdcVForVFCResourcesBasedOnResourceType(resourceVFCType, allAsdcResources); + List allVfResources = getAllSdcVForVFCResourcesBasedOnResourceType( + RESOURCE_VF_TYPE); + List allVfcResources = getAllSdcVForVFCResourcesBasedOnResourceType( + RESOURCE_VFC_TYPE); for (CldsVfData currCldsVfData : cldsVfDataList) { if (currCldsVfData != null && currCldsVfData.getVfInvariantResourceUUID() != null) { - String resourceUUID = getResourceUUIDFromResourceInvariantUUID(currCldsVfData.getVfInvariantResourceUUID(), allVfResources); - if (resourceUUID != null) { - String vfResourceUUIDUrl = catalogUrl + "resources" + "/" + resourceUUID + "/metadata"; - String vfResponse = getCldsServicesOrResourcesBasedOnURL(vfResourceUUIDUrl, false); + String resourceUuid = getResourceUuidFromResourceInvariantUuid( + currCldsVfData.getVfInvariantResourceUUID(), allVfResources); + if (resourceUuid != null) { + String vfResourceUuidUrl = catalogUrl + "resources" + "/" + resourceUuid + "/metadata"; + String vfResponse = getCldsServicesOrResourcesBasedOnURL(vfResourceUuidUrl, false); if (vfResponse != null) { - List vfcDataListFromVfResponse = getVFCDataListFromVfResponse(vfResponse); + // Below 2 line are to get the KPI(field path) data + // associated with the VF's + List cldsVfKPIDataList = getFieldPathFromVF(vfResponse); + currCldsVfData.setCldsKPIList(cldsVfKPIDataList); + + List vfcDataListFromVfResponse = getVfcDataListFromVfResponse(vfResponse); if (vfcDataListFromVfResponse != null) { currCldsVfData.setCldsVfcs(vfcDataListFromVfResponse); if (vfcDataListFromVfResponse.size() > 0) { - // To get artifacts for every VFC and get alarm conditions from artifact + // To get artifacts for every VFC and get + // alarm conditions from artifact for (CldsVfcData currCldsVfcData : vfcDataListFromVfResponse) { - if (currCldsVfcData != null && currCldsVfcData.getVfcInvariantResourceUUID() != null) { - String resourceVFCUUID = getResourceUUIDFromResourceInvariantUUID(currCldsVfcData.getVfcInvariantResourceUUID(), allVfcResources); - if (resourceVFCUUID != null) { - String vfcResourceUUIDUrl = catalogUrl + "resources" + "/" + resourceVFCUUID + "/metadata"; - String vfcResponse = getCldsServicesOrResourcesBasedOnURL(vfcResourceUUIDUrl, false); + if (currCldsVfcData != null + && currCldsVfcData.getVfcInvariantResourceUUID() != null) { + String resourceVfcUuid = getResourceUuidFromResourceInvariantUuid( + currCldsVfcData.getVfcInvariantResourceUUID(), allVfcResources); + if (resourceVfcUuid != null) { + String vfcResourceUuidUrl = catalogUrl + "resources" + "/" + + resourceVfcUuid + "/metadata"; + String vfcResponse = getCldsServicesOrResourcesBasedOnURL( + vfcResourceUuidUrl, false); if (vfcResponse != null) { - List alarmCondtionsFromVfc = getAlarmCondtionsFromVfc(vfcResponse); + List alarmCondtionsFromVfc = getAlarmCondtionsFromVfc( + vfcResponse); currCldsVfcData.setCldsAlarmConditions(alarmCondtionsFromVfc); } } else { - logger.info("No resourceVFC UUID found for given invariantID:" + currCldsVfcData.getVfcInvariantResourceUUID()); + logger.info("No resourceVFC UUID found for given invariantID:" + + currCldsVfcData.getVfcInvariantResourceUUID()); } } } @@ -431,14 +496,15 @@ public class SdcCatalogServices { } } } else { - logger.info("No resourceUUID found for given invariantREsourceUUID:" + currCldsVfData.getVfInvariantResourceUUID()); + logger.info("No resourceUUID found for given invariantREsourceUUID:" + + currCldsVfData.getVfInvariantResourceUUID()); } } } } } - private List getVFCDataListFromVfResponse(String vfResponse) throws IOException { + private List getVfcDataListFromVfResponse(String vfResponse) throws IOException { ObjectMapper mapper = new ObjectMapper(); ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse); ArrayNode vfcArrayNode = (ArrayNode) vfResponseNode.get("resources"); @@ -450,9 +516,9 @@ public class SdcCatalogServices { TextNode resourceTypeNode = (TextNode) currVfcNode.get("resoucreType"); if (resourceTypeNode != null && resourceTypeNode.textValue().equalsIgnoreCase("VFC")) { TextNode vfcResourceName = (TextNode) currVfcNode.get("resourceInstanceName"); - TextNode vfcInvariantResourceUUID = (TextNode) currVfcNode.get("resourceInvariantUUID"); + TextNode vfcInvariantResourceUuid = (TextNode) currVfcNode.get("resourceInvariantUUID"); currCldsVfcData.setVfcName(vfcResourceName.textValue()); - currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUUID.textValue()); + currCldsVfcData.setVfcInvariantResourceUUID(vfcInvariantResourceUuid.textValue()); cldsVfcDataList.add(currCldsVfcData); } } @@ -501,6 +567,75 @@ public class SdcCatalogServices { return cldsAlarmConditionList; } + // Method to get the artifact for any particular VF + private List getFieldPathFromVF(String vfResponse) throws JsonProcessingException, IOException { + List cldsVfKPIDataList = new ArrayList(); + ObjectMapper mapper = new ObjectMapper(); + ObjectNode vfResponseNode = (ObjectNode) mapper.readTree(vfResponse); + ArrayNode artifactsArrayNode = (ArrayNode) vfResponseNode.get("artifacts"); + + if (artifactsArrayNode != null && artifactsArrayNode.size() > 0) { + for (int index = 0; index < artifactsArrayNode.size(); index++) { + ObjectNode currArtifactNode = (ObjectNode) artifactsArrayNode.get(index); + TextNode artifactUrlNode = (TextNode) currArtifactNode.get("artifactURL"); + TextNode artifactNameNode = (TextNode) currArtifactNode.get("artifactName"); + String artifactName = ""; + if (artifactNameNode != null) { + artifactName = artifactNameNode.textValue(); + artifactName = artifactName.substring(artifactName.lastIndexOf(".") + 1); + } + if (artifactUrlNode != null && artifactName != null && !artifactName.isEmpty() + && artifactName.equalsIgnoreCase("csv")) { + String responsesFromArtifactUrl = getResponsesFromArtifactUrl(artifactUrlNode.textValue()); + cldsVfKPIDataList.addAll(parseCsvToGetFieldPath(responsesFromArtifactUrl)); + logger.info(responsesFromArtifactUrl); + } + } + } + return cldsVfKPIDataList; + } + + private CldsVfKPIData convertCsvRecordToKpiData(CSVRecord record) { + if (record.size() < 6) { + logger.debug("invalid csv field path Record,total columns less than 6: " + record); + return null; + } + + if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3)) + || StringUtils.isBlank(record.get(5))) { + logger.debug("Invalid csv field path Record,one of column is having blank value : " + record); + return null; + } + + CldsVfKPIData cldsVfKPIData = new CldsVfKPIData(); + cldsVfKPIData.setNfNamingCode(record.get(0).trim()); + cldsVfKPIData.setNfNamingValue(record.get(1).trim()); + + cldsVfKPIData.setFieldPath(record.get(2).trim()); + cldsVfKPIData.setFieldPathValue(record.get(3).trim()); + + cldsVfKPIData.setThresholdName(record.get(4).trim()); + cldsVfKPIData.setThresholdValue(record.get(5).trim()); + return cldsVfKPIData; + + } + + // Method to get the artifactURL Data and set the CldsVfKPIData node + private List parseCsvToGetFieldPath(String allFieldPathValues) throws IOException { + List cldsVfKPIDataList = new ArrayList(); + Reader alarmReader = new StringReader(allFieldPathValues); + Iterable records = CSVFormat.RFC4180.parse(alarmReader); + if (records != null) { + for (CSVRecord record : records) { + CldsVfKPIData kpiData = this.convertCsvRecordToKpiData(record); + if (kpiData != null) { + cldsVfKPIDataList.add(kpiData); + } + } + } + return cldsVfKPIDataList; + } + private void processRecord(List cldsAlarmConditionList, CSVRecord record) { if (record == null) { return; @@ -509,7 +644,8 @@ public class SdcCatalogServices { logger.debug("invalid csv alarm Record,total columns less than 5: " + record); return; } - if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3)) || StringUtils.isBlank(record.get(4))) { + if (StringUtils.isBlank(record.get(1)) || StringUtils.isBlank(record.get(3)) + || StringUtils.isBlank(record.get(4))) { logger.debug("invalid csv alarm Record,one of column is having blank value : " + record); return; } @@ -520,8 +656,8 @@ public class SdcCatalogServices { cldsAlarmConditionList.add(cldsAlarmCondition); } - private String getResponsesFromArtifactUrl(String artifactsUrl) throws IOException { - String hostUrl = refProp.getStringValue("asdc.hostUrl"); + public String getResponsesFromArtifactUrl(String artifactsUrl) throws IOException { + String hostUrl = refProp.getStringValue("sdc.hostUrl"); artifactsUrl = artifactsUrl.replaceAll("\"", ""); String artifactUrl = hostUrl + artifactsUrl; logger.info("value of artifactURl:" + artifactUrl); @@ -531,22 +667,23 @@ public class SdcCatalogServices { } /** - * Service to services/resources/artifacts from asdc.Pass alarmConditions as true to get alarmconditons from artifact url and else it is false + * Service to services/resources/artifacts from sdc.Pass alarmConditions as + * true to get alarmconditons from artifact url and else it is false * * @param url * @param alarmConditions * @return * @throws IOException */ - private String getCldsServicesOrResourcesBasedOnURL(String url, boolean alarmConditions) throws IOException { + public String getCldsServicesOrResourcesBasedOnURL(String url, boolean alarmConditions) { String responseStr; try { url = removeUnwantedBracesFromString(url); URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); - String basicAuth = SdcReq.getAsdcBasicAuth(refProp); - conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool"); + String basicAuth = SdcReq.getSdcBasicAuth(refProp); + conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool"); conn.setRequestProperty("Authorization", basicAuth); conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); conn.setRequestMethod("GET"); @@ -565,11 +702,12 @@ public class SdcCatalogServices { } responseStr = response.toString(); in.close(); + return responseStr; } catch (Exception e) { - logger.error("Exception occured :" + e.getMessage()); - throw e; + logger.error("Exception occurred :", e); + return ""; } - return responseStr; + } /** @@ -586,40 +724,42 @@ public class SdcCatalogServices { ObjectNode globalPropsJson; if (cldsServiceData != null && cldsServiceData.getServiceUUID() != null) { - /** - * Objectnode to save all byservice, byvf , byvfc and byalarm nodes - */ + // Objectnode to save all byservice, byvf , byvfc and byalarm nodes ObjectNode byIdObjectNode = mapper.createObjectNode(); - /** - * To create vf ResourceUUID node with serviceInvariantUUID - * - */ - ObjectNode invariantUUIDObjectNodeWithVF = createVFObjectNodeByServiceInvariantUUID(mapper, cldsServiceData); - byIdObjectNode.putPOJO("byService", invariantUUIDObjectNodeWithVF); - /** - * To create byVf and vfcResourceNode with vfResourceUUID - */ - ObjectNode vfcObjectNodeByVfUUID = createVFCObjectNodeByVfUUID(mapper, cldsServiceData.getCldsVfs()); - byIdObjectNode.putPOJO("byVf", vfcObjectNodeByVfUUID); + // To create vf ResourceUUID node with serviceInvariantUUID + ObjectNode invariantUuidObjectNodeWithVF = createVFObjectNodeByServiceInvariantUUID(mapper, + cldsServiceData); + byIdObjectNode.putPOJO("byService", invariantUuidObjectNodeWithVF); + // To create byVf and vfcResourceNode with vfResourceUUID + ObjectNode vfcObjectNodeByVfUuid = createVFCObjectNodeByVfUuid(mapper, cldsServiceData.getCldsVfs()); + byIdObjectNode.putPOJO("byVf", vfcObjectNodeByVfUuid); - /** - * To create byVfc and alarmCondition with vfcResourceUUID - */ - ObjectNode vfcResourceUUIDObjectNode = mapper.createObjectNode(); + // To create byKpi + ObjectNode kpiObjectNode = mapper.createObjectNode(); if (cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) { for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) { if (currCldsVfData != null) { - createAlarmCondObjectNodeByVfcUUID(mapper, vfcResourceUUIDObjectNode, currCldsVfData.getCldsVfcs()); + createKPIObjectNodeByVfUUID(mapper, kpiObjectNode, currCldsVfData.getCldsKPIList()); } } } - byIdObjectNode.putPOJO("byVfc", vfcResourceUUIDObjectNode); + byIdObjectNode.putPOJO("byKpi", kpiObjectNode); - /** - * To create byAlarmCondition with alarmConditionKey - */ + // To create byVfc and alarmCondition with vfcResourceUUID + ObjectNode vfcResourceUuidObjectNode = mapper.createObjectNode(); + if (cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) { + for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) { + if (currCldsVfData != null) { + createAlarmCondObjectNodeByVfcUuid(mapper, vfcResourceUuidObjectNode, + currCldsVfData.getCldsVfcs()); + } + } + } + byIdObjectNode.putPOJO("byVfc", vfcResourceUuidObjectNode); + + // To create byAlarmCondition with alarmConditionKey List allAlarmConditions = getAllAlarmConditionsFromCldsServiceData(cldsServiceData); ObjectNode alarmCondObjectNodeByAlarmKey = createAlarmCondObjectNodeByAlarmKey(mapper, allAlarmConditions); @@ -631,7 +771,7 @@ public class SdcCatalogServices { logger.info("valuie of objNode:" + globalPropsJson); } else { /** - * to create json with total properties when no serviceUUID passed + * to create json with total properties when no serviceUUID passed */ globalPropsJson = (ObjectNode) mapper.readValue(globalProps, JsonNode.class); } @@ -639,13 +779,16 @@ public class SdcCatalogServices { return totalPropsStr; } - private List getAllAlarmConditionsFromCldsServiceData(CldsServiceData cldsServiceData) { + public List getAllAlarmConditionsFromCldsServiceData(CldsServiceData cldsServiceData) { List alarmCondList = new ArrayList<>(); - if (cldsServiceData != null && cldsServiceData.getCldsVfs() != null && cldsServiceData.getCldsVfs().size() > 0) { + if (cldsServiceData != null && cldsServiceData.getCldsVfs() != null + && cldsServiceData.getCldsVfs().size() > 0) { for (CldsVfData currCldsVfData : cldsServiceData.getCldsVfs()) { - if (currCldsVfData != null && currCldsVfData.getCldsVfcs() != null && currCldsVfData.getCldsVfcs().size() > 0) { + if (currCldsVfData != null && currCldsVfData.getCldsVfcs() != null + && currCldsVfData.getCldsVfcs().size() > 0) { for (CldsVfcData currCldsVfcData : currCldsVfData.getCldsVfcs()) { - if (currCldsVfcData != null && currCldsVfcData.getCldsAlarmConditions() != null && currCldsVfcData.getCldsAlarmConditions().size() > 0) { + if (currCldsVfcData != null && currCldsVfcData.getCldsAlarmConditions() != null + && currCldsVfcData.getCldsAlarmConditions().size() > 0) { for (CldsAlarmCondition currCldsAlarmCondition : currCldsVfcData.getCldsAlarmConditions()) { if (currCldsAlarmCondition != null) { alarmCondList.add(currCldsAlarmCondition); @@ -659,7 +802,8 @@ public class SdcCatalogServices { return alarmCondList; } - private ObjectNode createAlarmCondObjectNodeByAlarmKey(ObjectMapper mapper, List cldsAlarmCondList) { + private ObjectNode createAlarmCondObjectNodeByAlarmKey(ObjectMapper mapper, + List cldsAlarmCondList) { ObjectNode alarmCondKeyNode = mapper.createObjectNode(); if (cldsAlarmCondList != null && cldsAlarmCondList.size() > 0) { @@ -681,39 +825,66 @@ public class SdcCatalogServices { } private ObjectNode createVFObjectNodeByServiceInvariantUUID(ObjectMapper mapper, CldsServiceData cldsServiceData) { - ObjectNode invariantUUIDObjectNode = mapper.createObjectNode(); + ObjectNode invariantUuidObjectNode = mapper.createObjectNode(); ObjectNode vfObjectNode = mapper.createObjectNode(); - ObjectNode vfUUIDNode = mapper.createObjectNode(); + ObjectNode vfUuidNode = mapper.createObjectNode(); List cldsVfsList = cldsServiceData.getCldsVfs(); if (cldsVfsList != null && cldsVfsList.size() > 0) { for (CldsVfData currCldsVfData : cldsVfsList) { if (currCldsVfData != null) { - vfUUIDNode.put(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName()); + vfUuidNode.put(currCldsVfData.getVfInvariantResourceUUID(), currCldsVfData.getVfName()); } } } else { - vfUUIDNode.put("", ""); + vfUuidNode.put("", ""); } - vfObjectNode.putPOJO("vf", vfUUIDNode); - invariantUUIDObjectNode.putPOJO(cldsServiceData.getServiceInvariantUUID(), vfObjectNode); - return invariantUUIDObjectNode; + vfObjectNode.putPOJO("vf", vfUuidNode); + invariantUuidObjectNode.putPOJO(cldsServiceData.getServiceInvariantUUID(), vfObjectNode); + return invariantUuidObjectNode; } - private void createAlarmCondObjectNodeByVfcUUID(ObjectMapper mapper, ObjectNode vfcResourceUUIDObjectNode, List cldsVfcDataList) { + private void createKPIObjectNodeByVfUUID(ObjectMapper mapper, ObjectNode vfResourceUUIDObjectNode, + List cldsVfKPIDataList) { + if (cldsVfKPIDataList != null && cldsVfKPIDataList.size() > 0) { + for (CldsVfKPIData currCldsVfKPIData : cldsVfKPIDataList) { + if (currCldsVfKPIData != null) { + ObjectNode thresholdNameObjectNode = mapper.createObjectNode(); + + ObjectNode fieldPathObjectNode = mapper.createObjectNode(); + ObjectNode nfNamingCodeNode = mapper.createObjectNode(); + + fieldPathObjectNode.put(currCldsVfKPIData.getFieldPathValue(), + currCldsVfKPIData.getFieldPathValue()); + nfNamingCodeNode.put(currCldsVfKPIData.getNfNamingValue(), currCldsVfKPIData.getNfNamingValue()); + + thresholdNameObjectNode.putPOJO("fieldPath", fieldPathObjectNode); + thresholdNameObjectNode.putPOJO("nfNamingCode", nfNamingCodeNode); + + vfResourceUUIDObjectNode.putPOJO(currCldsVfKPIData.getThresholdValue(), thresholdNameObjectNode); + } + } + } + } + + private void createAlarmCondObjectNodeByVfcUuid(ObjectMapper mapper, ObjectNode vfcResourceUUIDObjectNode, + List cldsVfcDataList) { ObjectNode alarmCondContsObjectNode = mapper.createObjectNode(); ObjectNode alarmCondNode = mapper.createObjectNode(); - // alarmCondNode.put("", ""); + // alarmCondNode.put("", ""); if (cldsVfcDataList != null && cldsVfcDataList.size() > 0) { for (CldsVfcData currCldsVfcData : cldsVfcDataList) { if (currCldsVfcData != null) { - if (currCldsVfcData.getCldsAlarmConditions() != null && currCldsVfcData.getCldsAlarmConditions().size() > 0) { + if (currCldsVfcData.getCldsAlarmConditions() != null + && currCldsVfcData.getCldsAlarmConditions().size() > 0) { for (CldsAlarmCondition currCldsAlarmCondition : currCldsVfcData.getCldsAlarmConditions()) { - alarmCondNode.put(currCldsAlarmCondition.getAlarmConditionKey(), currCldsAlarmCondition.getAlarmConditionKey()); + alarmCondNode.put(currCldsAlarmCondition.getAlarmConditionKey(), + currCldsAlarmCondition.getAlarmConditionKey()); } alarmCondContsObjectNode.putPOJO("alarmCondition", alarmCondNode); } alarmCondContsObjectNode.putPOJO("alarmCondition", alarmCondNode); - vfcResourceUUIDObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(), alarmCondContsObjectNode); + vfcResourceUUIDObjectNode.putPOJO(currCldsVfcData.getVfcInvariantResourceUUID(), + alarmCondContsObjectNode); } } } else { @@ -723,48 +894,51 @@ public class SdcCatalogServices { } } - private ObjectNode createVFCObjectNodeByVfUUID(ObjectMapper mapper, List cldsVfDataList) { + private ObjectNode createVFCObjectNodeByVfUuid(ObjectMapper mapper, List cldsVfDataList) { ObjectNode vfUUIDObjectNode = mapper.createObjectNode(); if (cldsVfDataList != null && cldsVfDataList.size() > 0) { for (CldsVfData currCldsVfData : cldsVfDataList) { if (currCldsVfData != null) { ObjectNode vfcObjectNode = mapper.createObjectNode(); - ObjectNode vfcUUIDNode = mapper.createObjectNode(); + ObjectNode vfcUuidNode = mapper.createObjectNode(); if (currCldsVfData.getCldsVfcs() != null && currCldsVfData.getCldsVfcs().size() > 0) { for (CldsVfcData currCldsVfcData : currCldsVfData.getCldsVfcs()) { - vfcUUIDNode.put(currCldsVfcData.getVfcInvariantResourceUUID(), currCldsVfcData.getVfcName()); + vfcUuidNode.put(currCldsVfcData.getVfcInvariantResourceUUID(), + currCldsVfcData.getVfcName()); } } else { - vfcUUIDNode.put("", ""); + vfcUuidNode.put("", ""); } - vfcObjectNode.putPOJO("vfc", vfcUUIDNode); + vfcObjectNode.putPOJO("vfc", vfcUuidNode); vfUUIDObjectNode.putPOJO(currCldsVfData.getVfInvariantResourceUUID(), vfcObjectNode); } } } else { - ObjectNode vfcUUIDNode = mapper.createObjectNode(); - vfcUUIDNode.put("", ""); + ObjectNode vfcUuidNode = mapper.createObjectNode(); + vfcUuidNode.put("", ""); ObjectNode vfcObjectNode = mapper.createObjectNode(); - vfcObjectNode.putPOJO("vfc", vfcUUIDNode); + vfcObjectNode.putPOJO("vfc", vfcUuidNode); vfUUIDObjectNode.putPOJO("", vfcObjectNode); } return vfUUIDObjectNode; } - public String getArtifactIdIfArtifactAlreadyExists(CldsAsdcServiceDetail cldsAsdcServiceDetail, String artifactName) { - String artifactUUId = null; + public String getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail CldsSdcServiceDetail, String artifactName) { + String artifactUuid = null; boolean artifactxists = false; - if (cldsAsdcServiceDetail != null && cldsAsdcServiceDetail.getResources() != null && cldsAsdcServiceDetail.getResources().size() > 0) { - for (CldsAsdcResource currCldsAsdcResource : cldsAsdcServiceDetail.getResources()) { + if (CldsSdcServiceDetail != null && CldsSdcServiceDetail.getResources() != null + && CldsSdcServiceDetail.getResources().size() > 0) { + for (CldsSdcResource currCldsSdcResource : CldsSdcServiceDetail.getResources()) { if (artifactxists) { break; } - if (currCldsAsdcResource != null && currCldsAsdcResource.getArtifacts() != null && currCldsAsdcResource.getArtifacts().size() > 0) { - for (CldsAsdcArtifact currCldsAsdcArtifact : currCldsAsdcResource.getArtifacts()) { - if (currCldsAsdcArtifact != null && currCldsAsdcArtifact.getArtifactName() != null) { - if (currCldsAsdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) { - artifactUUId = currCldsAsdcArtifact.getArtifactUUID(); + if (currCldsSdcResource != null && currCldsSdcResource.getArtifacts() != null + && currCldsSdcResource.getArtifacts().size() > 0) { + for (CldsSdcArtifact currCldsSdcArtifact : currCldsSdcResource.getArtifacts()) { + if (currCldsSdcArtifact != null && currCldsSdcArtifact.getArtifactName() != null) { + if (currCldsSdcArtifact.getArtifactName().equalsIgnoreCase(artifactName)) { + artifactUuid = currCldsSdcArtifact.getArtifactUUID(); artifactxists = true; break; } @@ -773,27 +947,25 @@ public class SdcCatalogServices { } } } - return artifactUUId; + return artifactUuid; } - public String updateControlLoopStatusToDCAE(String dcaeUrl, String invariantResourceUUID, String invariantServiceUUID, String artifactName) { - String baseUrl = refProp.getStringValue("asdc.serviceUrl"); - String basicAuth = SdcReq.getAsdcBasicAuth(refProp); - String postStatusData = "{ \n" + - "\"event\" : \"" + "Created" + "\",\n" + - "\"serviceUUID\" : \"" + invariantServiceUUID + "\",\n" + - "\"resourceUUID\" :\"" + invariantResourceUUID + "\",\n" + - "\"artifactName\" : \"" + artifactName + "\",\n" + - "} \n"; + public String updateControlLoopStatusToDcae(String dcaeUrl, String invariantResourceUuid, + String invariantServiceUuid, String artifactName) { + String baseUrl = refProp.getStringValue("sdc.serviceUrl"); + String basicAuth = SdcReq.getSdcBasicAuth(refProp); + String postStatusData = "{ \n" + "\"event\" : \"" + "Created" + "\",\n" + "\"serviceUUID\" : \"" + + invariantServiceUuid + "\",\n" + "\"resourceUUID\" :\"" + invariantResourceUuid + "\",\n" + + "\"artifactName\" : \"" + artifactName + "\",\n" + "} \n"; try { String url = baseUrl; - if (invariantServiceUUID != null) { + if (invariantServiceUuid != null) { url = dcaeUrl + "/closed-loops"; } URL urlObj = new URL(url); HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection(); - conn.setRequestProperty("X-ONAP-InstanceID", "CLAMP-Tool"); + conn.setRequestProperty(refProp.getStringValue("sdc.InstanceID"), "CLAMP-Tool"); conn.setRequestProperty("Authorization", basicAuth); conn.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); conn.setRequestMethod("POST"); @@ -811,54 +983,40 @@ public class SdcCatalogServices { return resp; } } catch (Exception e) { - logger.error("not able to ger any service information from asdc for uuid:" + invariantServiceUUID); + logger.error("not able to ger any service information from sdc for uuid:" + invariantServiceUuid); } return ""; } /** - * To get all asdc VF/VFC Resources basic info + * To get all sdc VF/VFC Resources basic info * * @return * @throws IOException */ - private List getAllAsdcVForVFCResourcesBasedOnResourceType(String resourceType, List allAsdcResources) throws IOException { - List allAsdcVFResources = new ArrayList<>(); - if (allAsdcResources != null && allAsdcResources.size() > 0) { - for (CldsAsdcResourceBasicInfo currResource : allAsdcResources) { - if (currResource != null && currResource.getResourceType() != null && currResource.getResourceType().equalsIgnoreCase(resourceType)) { - allAsdcVFResources.add(currResource); - } - } - } - return allAsdcVFResources; + private List getAllSdcVForVFCResourcesBasedOnResourceType(String resourceType) + throws IOException { + List allSdcResourceVFCBasicInfo = new ArrayList(); + String catalogUrl = refProp.getStringValue("sdc.catalog.url"); + String resourceUrl = catalogUrl + "resources?resourceType=" + resourceType; + String allSdcVFCResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false); + + allSdcResourceVFCBasicInfo = getAllSdcResourcesListFromJson(allSdcVFCResources); + return removeDuplicateSdcResourceBasicInfo(allSdcResourceVFCBasicInfo); } - private String getResourceUUIDFromResourceInvariantUUID(String resourceInvariantUUID, List resourceInfoList) throws IOException { - String resourceUUID = null; + private String getResourceUuidFromResourceInvariantUuid(String resourceInvariantUUID, + List resourceInfoList) throws IOException { + String resourceUuid = null; if (resourceInfoList != null && resourceInfoList.size() > 0) { - for (CldsAsdcResourceBasicInfo currResource : resourceInfoList) { + for (CldsSdcResourceBasicInfo currResource : resourceInfoList) { if (currResource != null && currResource.getInvariantUUID() != null && currResource.getUuid() != null && currResource.getInvariantUUID().equalsIgnoreCase(resourceInvariantUUID)) { - resourceUUID = currResource.getUuid(); + resourceUuid = currResource.getUuid(); break; } } } - return resourceUUID; - } - - /** - * To get all asdc Resources basic info - * - * @return - * @throws IOException - */ - private List getAllAsdcResources() throws IOException { - String catalogUrl = refProp.getStringValue("asdc.catalog.url"); - String resourceUrl = catalogUrl + "resources"; - String allAsdcResources = getCldsServicesOrResourcesBasedOnURL(resourceUrl, false); - List allAsdcResourceBasicInfo = getAllAsdcResourcesListFromJson(allAsdcResources); - return removeDuplicateAsdcResourceBasicInfo(allAsdcResourceBasicInfo); + return resourceUuid; } } diff --git a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java index 93b6e954..47a4ddc8 100644 --- a/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java +++ b/src/main/java/org/onap/clamp/clds/client/SdcSendReqDelegate.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 AT&T Intellectual Property. All rights * reserved. * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. + * 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 + * + * 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============================================ * =================================================================== @@ -23,67 +23,71 @@ package org.onap.clamp.clds.client; +import java.util.List; + +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.camunda.bpm.engine.delegate.JavaDelegate; import org.onap.clamp.clds.client.req.SdcReq; -import org.onap.clamp.clds.model.CldsAsdcServiceDetail; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.onap.clamp.clds.model.DcaeEvent; import org.onap.clamp.clds.model.prop.Global; import org.onap.clamp.clds.model.prop.ModelProperties; import org.onap.clamp.clds.model.refprop.RefProp; -import org.camunda.bpm.engine.delegate.DelegateExecution; -import org.camunda.bpm.engine.delegate.JavaDelegate; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import java.util.List; +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; /** * Send control loop model to dcae proxy. */ public class SdcSendReqDelegate implements JavaDelegate { - // currently uses the java.util.logging.Logger like the Camunda engine - private static final Logger logger = LoggerFactory.getLogger(SdcSendReqDelegate.class); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcSendReqDelegate.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); @Autowired - private RefProp refProp; + private RefProp refProp; @Autowired - private SdcCatalogServices asdcCatalogServices; + private SdcCatalogServices sdcCatalogServices; - private String baseUrl; - private String artifactType; - private String locationArtifactType; - private String artifactLabel; - private String locationArtifactLabel; + private String baseUrl; + private String artifactType; + private String locationArtifactType; + private String artifactLabel; + private String locationArtifactLabel; /** - * Perform activity. Send to asdc proxy. + * Perform activity. Send to sdc proxy. * * @param execution */ + @Override public void execute(DelegateExecution execution) throws Exception { String userid = (String) execution.getVariable("userid"); logger.info("userid=" + userid); - String docText = (String) execution.getVariable("docText"); - String artifactName = execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX; + String docText = new String((byte[]) execution.getVariable("docText")); + String artifactName = (String) execution.getVariable("controlName") + DcaeEvent.ARTIFACT_NAME_SUFFIX; execution.setVariable("artifactName", artifactName); - getAsdcAttributes(); + getSdcAttributes((String) execution.getVariable("controlName")); ModelProperties prop = ModelProperties.create(execution); String bluprintPayload = SdcReq.formatBlueprint(refProp, prop, docText); - String formatttedAsdcReq = SdcReq.formatAsdcReq(bluprintPayload, artifactName, artifactLabel, artifactType); - if (formatttedAsdcReq != null) { - execution.setVariable("formattedArtifactReq", formatttedAsdcReq.getBytes()); + String formatttedSdcReq = SdcReq.formatSdcReq(bluprintPayload, artifactName, artifactLabel, artifactType); + if (formatttedSdcReq != null) { + execution.setVariable("formattedArtifactReq", formatttedSdcReq.getBytes()); } - List asdcReqUrlsList = SdcReq.getAsdcReqUrlsList(prop, baseUrl, asdcCatalogServices, execution); + List sdcReqUrlsList = SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, execution); - String asdcLocationsPayload = SdcReq.formatAsdcLocationsReq(prop, artifactName); - String locationArtifactName = execution.getVariable("controlName") + "-location.json"; - String formattedAsdcLocationReq = SdcReq.formatAsdcReq(asdcLocationsPayload, locationArtifactName, locationArtifactLabel, locationArtifactType); - if (formattedAsdcLocationReq != null) { - execution.setVariable("formattedLocationReq", formattedAsdcLocationReq.getBytes()); + String sdcLocationsPayload = SdcReq.formatSdcLocationsReq(prop, artifactName); + String locationArtifactName = (String) execution.getVariable("controlName") + "-location.json"; + String formattedSdcLocationReq = SdcReq.formatSdcReq(sdcLocationsPayload, locationArtifactName, + locationArtifactLabel, locationArtifactType); + if (formattedSdcLocationReq != null) { + execution.setVariable("formattedLocationReq", formattedSdcLocationReq.getBytes()); } String serviceInvariantUUID = getServiceInvariantUUIDFromProps(prop); - uploadToAsdc(prop, serviceInvariantUUID, userid, asdcReqUrlsList, formatttedAsdcReq, formattedAsdcLocationReq, artifactName, locationArtifactName); + uploadToSdc(prop, serviceInvariantUUID, userid, sdcReqUrlsList, formatttedSdcReq, formattedSdcLocationReq, + artifactName, locationArtifactName); } private String getServiceInvariantUUIDFromProps(ModelProperties props) { @@ -97,42 +101,53 @@ public class SdcSendReqDelegate implements JavaDelegate { return invariantUUID; } - private void uploadToAsdc(ModelProperties prop, String serviceInvariantUUID, String userid, List asdcReqUrlsList, String formatttedAsdcReq, String formattedAsdcLocationReq, String artifactName, String locationArtifactName) throws Exception { + private void uploadToSdc(ModelProperties prop, String serviceInvariantUUID, String userid, + List sdcReqUrlsList, String formatttedSdcReq, String formattedSdcLocationReq, String artifactName, + String locationArtifactName) throws Exception { logger.info("userid=" + userid); - if (asdcReqUrlsList != null && asdcReqUrlsList.size() > 0) { - for (String url : asdcReqUrlsList) { + if (sdcReqUrlsList != null && sdcReqUrlsList.size() > 0) { + for (String url : sdcReqUrlsList) { if (url != null) { - String originalServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID); + String originalServiceUUID = sdcCatalogServices + .getServiceUuidFromServiceInvariantId(serviceInvariantUUID); logger.info("ServiceUUID used before upload in url:" + originalServiceUUID); - String asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(originalServiceUUID); - CldsAsdcServiceDetail cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation); - String uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, artifactName); - // Upload artifacts to asdc + String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(originalServiceUUID); + CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices + .getCldsSdcServiceDetailFromJson(sdcServicesInformation); + String uploadedArtifactUUID = sdcCatalogServices + .getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail, artifactName); + // Upload artifacts to sdc String updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url; - String responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formatttedAsdcReq); - logger.info("value of asdc Response of uploading to asdc :" + responseStr); - String updatedServiceUUID = asdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID); + String responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl, + formatttedSdcReq); + logger.info("value of sdc Response of uploading to sdc :" + responseStr); + String updatedServiceUUID = sdcCatalogServices + .getServiceUuidFromServiceInvariantId(serviceInvariantUUID); if (!originalServiceUUID.equalsIgnoreCase(updatedServiceUUID)) { url = url.replace(originalServiceUUID, updatedServiceUUID); } logger.info("ServiceUUID used after upload in ulr:" + updatedServiceUUID); - asdcServicesInformation = asdcCatalogServices.getAsdcServicesInformation(updatedServiceUUID); - cldsAsdcServiceDetail = asdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation); - uploadedArtifactUUID = asdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(cldsAsdcServiceDetail, locationArtifactName); - // To send location information also to asdc + sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(updatedServiceUUID); + CldsSdcServiceDetail = sdcCatalogServices.getCldsSdcServiceDetailFromJson(sdcServicesInformation); + uploadedArtifactUUID = sdcCatalogServices.getArtifactIdIfArtifactAlreadyExists(CldsSdcServiceDetail, + locationArtifactName); + // To send location information also to sdc updateUrl = uploadedArtifactUUID != null ? url + "/" + uploadedArtifactUUID : url; - responseStr = asdcCatalogServices.uploadArtifactToAsdc(prop, userid, updateUrl, formattedAsdcLocationReq); - logger.info("value of asdc Response of uploading location to asdc :" + responseStr); + responseStr = sdcCatalogServices.uploadArtifactToSdc(prop, userid, updateUrl, + formattedSdcLocationReq); + logger.info("value of sdc Response of uploading location to sdc :" + responseStr); } } } } - private void getAsdcAttributes() { - baseUrl = refProp.getStringValue("asdc.serviceUrl"); - artifactLabel = refProp.getStringValue("asdc.artifactLabel"); - locationArtifactLabel = refProp.getStringValue("asdc.locationArtifactLabel"); - artifactType = refProp.getStringValue("asdc.artifactType"); - locationArtifactType = refProp.getStringValue("asdc.locationArtifactType"); + private void getSdcAttributes(String controlName) { + baseUrl = refProp.getStringValue("sdc.serviceUrl"); + artifactLabel = SdcReq + .normalizeResourceInstanceName(refProp.getStringValue("sdc.artifactLabel") + "-" + controlName); + locationArtifactLabel = SdcReq + .normalizeResourceInstanceName(refProp.getStringValue("sdc.locationArtifactLabel") + "-" + controlName); + artifactType = refProp.getStringValue("sdc.artifactType"); + locationArtifactType = refProp.getStringValue("sdc.locationArtifactType"); } } diff --git a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java index 45f17164..8a31a3b9 100644 --- a/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java +++ b/src/main/java/org/onap/clamp/clds/client/req/SdcReq.java @@ -5,16 +5,16 @@ * Copyright (C) 2017 AT&T Intellectual Property. All rights * reserved. * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. + * 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 + * + * 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============================================ * =================================================================== @@ -23,6 +23,28 @@ package org.onap.clamp.clds.client.req; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Base64; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.codec.digest.DigestUtils; +import org.camunda.bpm.engine.delegate.DelegateExecution; +import org.onap.clamp.clds.client.SdcCatalogServices; +import org.onap.clamp.clds.model.CldsSdcResource; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; +import org.onap.clamp.clds.model.prop.Global; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.model.prop.StringMatch; +import org.onap.clamp.clds.model.prop.Tca; +import org.onap.clamp.clds.model.refprop.RefProp; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; @@ -31,29 +53,13 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.dataformat.yaml.snakeyaml.Yaml; -import org.onap.clamp.clds.client.SdcCatalogServices; -import org.onap.clamp.clds.model.CldsAsdcResource; -import org.onap.clamp.clds.model.CldsAsdcServiceDetail; -import org.onap.clamp.clds.model.prop.Global; -import org.onap.clamp.clds.model.prop.ModelProperties; -import org.onap.clamp.clds.model.prop.StringMatch; -import org.onap.clamp.clds.model.prop.Tca; -import org.onap.clamp.clds.model.refprop.RefProp; -import org.apache.commons.codec.digest.DigestUtils; -import org.camunda.bpm.engine.delegate.DelegateExecution; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.util.*; -import java.util.Map.Entry; -import java.util.logging.Logger; /** - * Construct a Asdc request given CLDS objects. + * Construct a Sdc request given CLDS objects. */ public class SdcReq { - // currently uses the java.util.logging.Logger like the Camunda engine - private static final Logger logger = Logger.getLogger(SdcReq.class.getName()); + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(SdcReq.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); /** * @param refProp @@ -72,14 +78,15 @@ public class SdcReq { String yamlvalue = getYamlvalue(docText); String updatedBlueprint = ""; - StringMatch stringMatch = prop.getStringMatch(); - Tca tca = prop.getTca(); + StringMatch stringMatch = prop.getType(StringMatch.class); + Tca tca = prop.getType(Tca.class); if (stringMatch.isFound()) { prop.setCurrentModelElementId(stringMatch.getId()); ObjectMapper objectMapper = new ObjectMapper(); ObjectNode serviceConfigurations = objectMapper.createObjectNode(); - StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch); + StringMatchPolicyReq.appendServiceConfigurations(refProp, service, serviceConfigurations, stringMatch, + prop); logger.info("Value of serviceConfigurations:" + serviceConfigurations); ObjectNode servConfNode = (ObjectNode) serviceConfigurations.get("serviceConfigurations"); @@ -111,15 +118,15 @@ public class SdcReq { // Serialiaze Yaml file Map loadedYaml = (Map) yaml.load(yamlValue); // Get node templates information from Yaml - Map nodeTemplates = (Map) loadedYaml.get("node_templates"); + Map nodeTemplates = loadedYaml.get("node_templates"); logger.info("value of NodeTemplates:" + nodeTemplates); // Get StringMatch Object information from node templates of Yaml - Map smObject = (Map) nodeTemplates.get("SM"); + Map smObject = nodeTemplates.get("SM"); logger.info("value of StringMatch:" + smObject); // Get Properties Object information from stringmatch of Yaml - Map propsObject = (Map) smObject.get("properties"); + Map propsObject = smObject.get("properties"); logger.info("value of PropsObject:" + propsObject); String deploymentJsonObject = propsObject.get("deployment_JSON"); @@ -154,15 +161,15 @@ public class SdcReq { // Serialiaze Yaml file Map loadedYaml = (Map) yaml.load(yamlValue); // Get node templates information from Yaml - Map nodeTemplates = (Map) loadedYaml.get("node_templates"); + Map nodeTemplates = loadedYaml.get("node_templates"); logger.info("value of NodeTemplates:" + nodeTemplates); // Get Tca Object information from node templates of Yaml - Map tcaObject = (Map) nodeTemplates.get("MTCA"); + Map tcaObject = nodeTemplates.get("MTCA"); logger.info("value of Tca:" + tcaObject); // Get Properties Object information from tca of Yaml - Map propsObject = (Map) tcaObject.get("properties"); + Map propsObject = tcaObject.get("properties"); logger.info("value of PropsObject:" + propsObject); - String deploymentJsonObject = (String) propsObject.get("deployment_JSON"); + String deploymentJsonObject = propsObject.get("deployment_JSON"); logger.info("value of deploymentJson:" + deploymentJsonObject); ObjectMapper mapper = new ObjectMapper(); @@ -182,7 +189,7 @@ public class SdcReq { return blueprint; } - public static String formatAsdcLocationsReq(ModelProperties prop, String artifactName) { + public static String formatSdcLocationsReq(ModelProperties prop, String artifactName) { ObjectMapper objectMapper = new ObjectMapper(); Global global = prop.getGlobal(); List locationsList = global.getLocation(); @@ -198,7 +205,7 @@ public class SdcReq { return locationJsonFormat; } - public static String formatAsdcReq(String payloadData, String artifactName, String artifactLabel, + public static String formatSdcReq(String payloadData, String artifactName, String artifactLabel, String artifactType) throws IOException { logger.info("artifact=" + payloadData); String base64Artifact = base64Encode(payloadData); @@ -208,7 +215,7 @@ public class SdcReq { + "} \n"; } - public static String getAsdcReqUrl(ModelProperties prop, String url) { + public static String getSdcReqUrl(ModelProperties prop, String url) { Global globalProps = prop.getGlobal(); String serviceUUID = ""; String resourceInstanceName = ""; @@ -234,7 +241,7 @@ public class SdcReq { * @return * @throws Exception */ - public static List getAsdcReqUrlsList(ModelProperties prop, String baseUrl, + public static List getSdcReqUrlsList(ModelProperties prop, String baseUrl, SdcCatalogServices sdcCatalogServices, DelegateExecution execution) throws Exception { // TODO : refact and regroup with very similar code List urlList = new ArrayList<>(); @@ -244,18 +251,21 @@ public class SdcReq { String serviceInvariantUUID = globalProps.getService(); execution.setVariable("serviceInvariantUUID", serviceInvariantUUID); List resourceVfList = globalProps.getResourceVf(); - String serviceUUID = sdcCatalogServices.getServiceUUIDFromServiceInvariantID(serviceInvariantUUID); - String asdcServicesInformation = sdcCatalogServices.getAsdcServicesInformation(serviceUUID); - CldsAsdcServiceDetail cldsAsdcServiceDetail = sdcCatalogServices.getCldsAsdcServiceDetailFromJson(asdcServicesInformation); - if (cldsAsdcServiceDetail != null && resourceVfList != null) { - List cldsAsdcResourcesList = cldsAsdcServiceDetail.getResources(); - if (cldsAsdcResourcesList != null && cldsAsdcResourcesList.size() > 0) { - for (CldsAsdcResource cldsAsdcResource : cldsAsdcResourcesList) { - if (cldsAsdcResource != null && cldsAsdcResource.getResoucreType() != null - && cldsAsdcResource.getResoucreType().equalsIgnoreCase("VF")) { - if (resourceVfList.contains(cldsAsdcResource.getResourceInvariantUUID())) { - String normalizedResourceInstanceName = normalizeResourceInstanceName(cldsAsdcResource.getResourceInstanceName()); - String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + normalizedResourceInstanceName + "/artifacts"; + String serviceUUID = sdcCatalogServices.getServiceUuidFromServiceInvariantId(serviceInvariantUUID); + String sdcServicesInformation = sdcCatalogServices.getSdcServicesInformation(serviceUUID); + CldsSdcServiceDetail CldsSdcServiceDetail = sdcCatalogServices + .getCldsSdcServiceDetailFromJson(sdcServicesInformation); + if (CldsSdcServiceDetail != null && resourceVfList != null) { + List CldsSdcResourcesList = CldsSdcServiceDetail.getResources(); + if (CldsSdcResourcesList != null && CldsSdcResourcesList.size() > 0) { + for (CldsSdcResource CldsSdcResource : CldsSdcResourcesList) { + if (CldsSdcResource != null && CldsSdcResource.getResoucreType() != null + && CldsSdcResource.getResoucreType().equalsIgnoreCase("VF")) { + if (resourceVfList.contains(CldsSdcResource.getResourceInvariantUUID())) { + String normalizedResourceInstanceName = normalizeResourceInstanceName( + CldsSdcResource.getResourceInstanceName()); + String svcUrl = baseUrl + "/" + serviceUUID + "/resourceInstances/" + + normalizedResourceInstanceName + "/artifacts"; urlList.add(svcUrl); } } @@ -269,8 +279,8 @@ public class SdcReq { /** * "Normalize" the resource instance name: - Remove spaces, underscores, - * dashes, and periods. - make lower case This is required by ASDC when - * using the resource instance name to upload an artifact. + * dashes, and periods. - make lower case This is required by SDC when using + * the resource instance name to upload an artifact. * * @param inText * @return @@ -323,15 +333,15 @@ public class SdcReq { } /** - * Return ASDC id and pw as a HTTP Basic Auth string (for example: Basic + * Return SDC id and pw as a HTTP Basic Auth string (for example: Basic * dGVzdDoxMjM0NTY=). * * @return */ - public static String getAsdcBasicAuth(RefProp refProp) { - String asdcId = refProp.getStringValue("asdc.serviceUsername"); - String asdcPw = refProp.getStringValue("asdc.servicePassword"); - String idPw = base64Encode(asdcId + ":" + asdcPw); + public static String getSdcBasicAuth(RefProp refProp) { + String sdcId = refProp.getStringValue("sdc.serviceUsername"); + String sdcPw = refProp.getStringValue("sdc.servicePassword"); + String idPw = base64Encode(sdcId + ":" + sdcPw); return "Basic " + idPw; } diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java new file mode 100644 index 00000000..48f90170 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcArtifact.java @@ -0,0 +1,112 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class CldsSdcArtifact { + + private String artifactName; + private String artifactType; + private String artifactUrl; + private String artifactDescription; + private String artifactTimeout; + private String artifactChecksum; + private String artifactUuid; + private String artifactVersion; + private String generatedFromUuid; + + public String getArtifactName() { + return artifactName; + } + + public void setArtifactName(String artifactName) { + this.artifactName = artifactName; + } + + public String getArtifactType() { + return artifactType; + } + + public void setArtifactType(String artifactType) { + this.artifactType = artifactType; + } + + public String getArtifactURL() { + return artifactUrl; + } + + public void setArtifactURL(String artifactURL) { + this.artifactUrl = artifactURL; + } + + public String getArtifactDescription() { + return artifactDescription; + } + + public void setArtifactDescription(String artifactDescription) { + this.artifactDescription = artifactDescription; + } + + public String getArtifactTimeout() { + return artifactTimeout; + } + + public void setArtifactTimeout(String artifactTimeout) { + this.artifactTimeout = artifactTimeout; + } + + public String getArtifactChecksum() { + return artifactChecksum; + } + + public void setArtifactChecksum(String artifactChecksum) { + this.artifactChecksum = artifactChecksum; + } + + public String getArtifactUUID() { + return artifactUuid; + } + + public void setArtifactUUID(String artifactUUID) { + this.artifactUuid = artifactUUID; + } + + public String getArtifactVersion() { + return artifactVersion; + } + + public void setArtifactVersion(String artifactVersion) { + this.artifactVersion = artifactVersion; + } + + public String getGeneratedFromUUID() { + return generatedFromUuid; + } + + public void setGeneratedFromUUID(String generatedFromUUID) { + this.generatedFromUuid = generatedFromUUID; + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java new file mode 100644 index 00000000..7fa741c8 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcResource.java @@ -0,0 +1,135 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model; + +import java.math.BigDecimal; +import java.util.List; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class CldsSdcResource implements Comparable { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcResource.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + + private String resourceInstanceName; + private String resourceName; + private String resourceInvariantUuid; + private String resourceVersion; + private String resoucreType; + private String resourceUuid; + private List artifacts; + + public String getResourceInstanceName() { + return resourceInstanceName; + } + + public void setResourceInstanceName(String resourceInstanceName) { + this.resourceInstanceName = resourceInstanceName; + } + + public String getResourceName() { + return resourceName; + } + + public void setResourceName(String resourceName) { + this.resourceName = resourceName; + } + + public String getResourceInvariantUUID() { + return resourceInvariantUuid; + } + + public void setResourceInvariantUUID(String resourceInvariantUUID) { + this.resourceInvariantUuid = resourceInvariantUUID; + } + + public String getResourceVersion() { + return resourceVersion; + } + + public void setResourceVersion(String resourceVersion) { + this.resourceVersion = resourceVersion; + } + + public String getResoucreType() { + return resoucreType; + } + + public void setResoucreType(String resoucreType) { + this.resoucreType = resoucreType; + } + + public String getResourceUUID() { + return resourceUuid; + } + + public void setResourceUUID(String resourceUUID) { + this.resourceUuid = resourceUUID; + } + + public List getArtifacts() { + return artifacts; + } + + public void setArtifacts(List artifacts) { + this.artifacts = artifacts; + } + + @Override + public int compareTo(CldsSdcResource in) { + // Compares this object with the specified object for order. + // Returns a negative integer, zero, or a positive integer as this + // object is less than, equal to, or greater than the specified object. + + // first compare based on name + int rtn = resourceInstanceName.compareToIgnoreCase(in.resourceInstanceName); + + if (rtn == 0) { + BigDecimal myVersion = convertVersion(resourceVersion); + BigDecimal inVersion = convertVersion(in.resourceVersion); + rtn = myVersion.compareTo(inVersion); + } + return rtn; + } + + /** + * Convert version String into a BigDecimal + * + * @param versionText + * @return + */ + private BigDecimal convertVersion(String versionText) { + BigDecimal rtn = new BigDecimal(0.0); + try { + rtn = new BigDecimal(versionText); + } catch (NumberFormatException nfe) { + logger.warn("SDC version=" + versionText + " is not decimal for name=" + resourceInstanceName); + } + return rtn; + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java new file mode 100644 index 00000000..80fa787e --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcResourceBasicInfo.java @@ -0,0 +1,164 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model; + +import java.math.BigDecimal; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class CldsSdcResourceBasicInfo implements Comparable { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcResourceBasicInfo.class); + protected static final EELFLogger metricsLogger = EELFManager.getInstance().getMetricsLogger(); + + private String uuid; + private String invariantUUID; + private String name; + private String version; + private String toscaModelURL; + private String category; + private String subCategory; + private String resourceType; + private String lifecycleState; + private String lastUpdaterUserId; + + @Override + public int compareTo(CldsSdcResourceBasicInfo in) { + // Compares this object with the specified object for order. + // Returns a negative integer, zero, or a positive integer as this + // object is less than, equal to, or greater than the specified object. + // first compare based on name + int rtn = name.compareToIgnoreCase(in.name); + + if (rtn == 0) { + BigDecimal myVersion = convertVersion(version); + BigDecimal inVersion = convertVersion(in.version); + rtn = myVersion.compareTo(inVersion); + } + return rtn; + } + + /** + * Convert version String into a BigDecimal + * + * @param version + * @return + */ + private BigDecimal convertVersion(String version) { + BigDecimal rtn = new BigDecimal(0.0); + try { + rtn = new BigDecimal(version); + } catch (NumberFormatException nfe) { + logger.warn("SDC version=" + version + " is not decimal for name=" + name); + } + return rtn; + } + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getInvariantUUID() { + return invariantUUID; + } + + public void setInvariantUUID(String invariantUUID) { + this.invariantUUID = invariantUUID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getToscaModelURL() { + return toscaModelURL; + } + + public void setToscaModelURL(String toscaModelURL) { + this.toscaModelURL = toscaModelURL; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getSubCategory() { + return subCategory; + } + + public void setSubCategory(String subCategory) { + this.subCategory = subCategory; + } + + public String getResourceType() { + return resourceType; + } + + public void setResourceType(String resourceType) { + this.resourceType = resourceType; + } + + public String getLifecycleState() { + return lifecycleState; + } + + public void setLifecycleState(String lifecycleState) { + this.lifecycleState = lifecycleState; + } + + public String getLastUpdaterUserId() { + return lastUpdaterUserId; + } + + public void setLastUpdaterUserId(String lastUpdaterUserId) { + this.lastUpdaterUserId = lastUpdaterUserId; + } + + public EELFLogger getLOGGER() { + return logger; + } +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java new file mode 100644 index 00000000..551418b7 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceDetail.java @@ -0,0 +1,142 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model; + +import java.util.List; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties(ignoreUnknown = true) +public class CldsSdcServiceDetail { + + private String uuid; + private String invariantUUID; + private String name; + private String version; + private String toscaModelURL; + private String category; + private String lifecycleState; + private String lastUpdaterUserId; + private String distributionStatus; + private String lastUpdaterFullName; + private List resources; + private List artifacts; + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getInvariantUUID() { + return invariantUUID; + } + + public void setInvariantUUID(String invariantUUID) { + this.invariantUUID = invariantUUID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getToscaModelURL() { + return toscaModelURL; + } + + public void setToscaModelURL(String toscaModelURL) { + this.toscaModelURL = toscaModelURL; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getLifecycleState() { + return lifecycleState; + } + + public void setLifecycleState(String lifecycleState) { + this.lifecycleState = lifecycleState; + } + + public String getLastUpdaterUserId() { + return lastUpdaterUserId; + } + + public void setLastUpdaterUserId(String lastUpdaterUserId) { + this.lastUpdaterUserId = lastUpdaterUserId; + } + + public String getDistributionStatus() { + return distributionStatus; + } + + public void setDistributionStatus(String distributionStatus) { + this.distributionStatus = distributionStatus; + } + + public String getLastUpdaterFullName() { + return lastUpdaterFullName; + } + + public void setLastUpdaterFullName(String lastUpdaterFullName) { + this.lastUpdaterFullName = lastUpdaterFullName; + } + + public List getResources() { + return resources; + } + + public void setResources(List resources) { + this.resources = resources; + } + + public List getArtifacts() { + return artifacts; + } + + public void setArtifacts(List artifacts) { + this.artifacts = artifacts; + } + +} diff --git a/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java new file mode 100644 index 00000000..175dc753 --- /dev/null +++ b/src/main/java/org/onap/clamp/clds/model/CldsSdcServiceInfo.java @@ -0,0 +1,153 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.model; + +import java.math.BigDecimal; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; + +public class CldsSdcServiceInfo implements Comparable { + + protected static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcServiceInfo.class); + protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger(); + + private String uuid; + private String invariantUUID; + private String name; + private String version; + private String toscaModelURL; + private String category; + private String lifecycleState; + private String lastUpdaterUserId; + private String distributionStatus; + + public String getUuid() { + return uuid; + } + + public void setUuid(String uuid) { + this.uuid = uuid; + } + + public String getInvariantUUID() { + return invariantUUID; + } + + public void setInvariantUUID(String invariantUUID) { + this.invariantUUID = invariantUUID; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } + + public String getToscaModelURL() { + return toscaModelURL; + } + + public void setToscaModelURL(String toscaModelURL) { + this.toscaModelURL = toscaModelURL; + } + + public String getCategory() { + return category; + } + + public void setCategory(String category) { + this.category = category; + } + + public String getLifecycleState() { + return lifecycleState; + } + + public void setLifecycleState(String lifecycleState) { + this.lifecycleState = lifecycleState; + } + + public String getLastUpdaterUserId() { + return lastUpdaterUserId; + } + + public void setLastUpdaterUserId(String lastUpdaterUserId) { + this.lastUpdaterUserId = lastUpdaterUserId; + } + + public String getDistributionStatus() { + return distributionStatus; + } + + public void setDistributionStatus(String distributionStatus) { + this.distributionStatus = distributionStatus; + } + + /** + * Compare using name and then version. Version is converted to a decimal. + */ + @Override + public int compareTo(CldsSdcServiceInfo in) { + // Compares this object with the specified object for order. + // Returns a negative integer, zero, or a positive integer as this + // object is less than, equal to, or greater than the specified object. + // first compare based on name + int rtn = name.compareToIgnoreCase(in.name); + + if (rtn == 0) { + BigDecimal myVersion = convertVersion(version); + BigDecimal inVersion = convertVersion(in.version); + rtn = myVersion.compareTo(inVersion); + } + + return rtn; + } + + /** + * Convert version String into a BigDecimal + * + * @param versionText + * @return + */ + private BigDecimal convertVersion(String versionText) { + try { + return new BigDecimal(versionText); + } catch (NumberFormatException nfe) { + logger.warn("SDC version=" + versionText + " is not decimal for name=" + name); + } + return new BigDecimal(0.0); + } + +} diff --git a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java index f4d693fe..e7cb5c85 100644 --- a/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java +++ b/src/test/java/org/onap/clamp/clds/client/req/SdcReqTest.java @@ -27,8 +27,8 @@ import org.camunda.bpm.engine.delegate.DelegateExecution; import org.junit.Assert; import org.junit.Test; import org.onap.clamp.clds.client.SdcCatalogServices; -import org.onap.clamp.clds.model.CldsAsdcResource; -import org.onap.clamp.clds.model.CldsAsdcServiceDetail; +import org.onap.clamp.clds.model.CldsSdcResource; +import org.onap.clamp.clds.model.CldsSdcServiceDetail; import org.onap.clamp.clds.model.prop.Global; import org.onap.clamp.clds.model.prop.ModelProperties; @@ -38,50 +38,47 @@ import java.util.List; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -/** - * Created by Julien Bertozzi on 6/20/17. - */ public class SdcReqTest { String baseUrl = "AYBABTU"; String serviceInvariantUUID = "serviceInvariantUUID"; @Test - public void getAsdcReqUrlsListNoGlobalPropTest() throws Exception { + public void getSdcReqUrlsListNoGlobalPropTest() throws Exception { ModelProperties prop = mock(ModelProperties.class); SdcCatalogServices sdcCatalogServices = mock(SdcCatalogServices.class); DelegateExecution delegateExecution = mock(DelegateExecution.class); Global global = mock(Global.class); - CldsAsdcServiceDetail cldsAsdcServiceDetail = mock(CldsAsdcServiceDetail.class); - CldsAsdcResource cldsAsdcResource = mock(CldsAsdcResource.class); - List cldsAsdcResources = new ArrayList<>(); - cldsAsdcResources.add(cldsAsdcResource); + CldsSdcServiceDetail CldsSdcServiceDetail = mock(CldsSdcServiceDetail.class); + CldsSdcResource CldsSdcResource = mock(CldsSdcResource.class); + List CldsSdcResources = new ArrayList<>(); + CldsSdcResources.add(CldsSdcResource); List resourceVf = new ArrayList<>(); resourceVf.add(serviceInvariantUUID); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); when(prop.getGlobal()).thenReturn(global); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); when(global.getService()).thenReturn(serviceInvariantUUID); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(sdcCatalogServices.getCldsAsdcServiceDetailFromJson(null)).thenReturn(cldsAsdcServiceDetail); + when(sdcCatalogServices.getCldsSdcServiceDetailFromJson(null)).thenReturn(CldsSdcServiceDetail); when(global.getResourceVf()).thenReturn(new ArrayList<>()); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsAsdcServiceDetail.getResources()).thenReturn(cldsAsdcResources); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + when(CldsSdcServiceDetail.getResources()).thenReturn(CldsSdcResources); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); - when(cldsAsdcResource.getResoucreType()).thenReturn("VF"); - Assert.assertTrue(SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); + when(CldsSdcResource.getResoucreType()).thenReturn("VF"); + Assert.assertTrue(SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution).isEmpty()); when(global.getResourceVf()).thenReturn(resourceVf); - when(cldsAsdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID); - when(cldsAsdcResource.getResourceInstanceName()).thenReturn("Resource instance name"); + when(CldsSdcResource.getResourceInvariantUUID()).thenReturn(serviceInvariantUUID); + when(CldsSdcResource.getResourceInstanceName()).thenReturn("Resource instance name"); List expected = new ArrayList<>(); expected.add("AYBABTU/null/resourceInstances/resourceinstancename/artifacts"); - Assert.assertEquals(expected, SdcReq.getAsdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution)); + Assert.assertEquals(expected, SdcReq.getSdcReqUrlsList(prop, baseUrl, sdcCatalogServices, delegateExecution)); } } diff --git a/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java new file mode 100644 index 00000000..159e66ac --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/SdcCatalogServicesIT.java @@ -0,0 +1,289 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.it; + +import static org.junit.Assert.assertTrue; + +import java.util.LinkedList; +import java.util.List; + +import org.apache.commons.io.IOUtils; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mockito; +import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.SdcCatalogServices; +import org.onap.clamp.clds.model.CldsAlarmCondition; +import org.onap.clamp.clds.model.CldsSdcResource; +import org.onap.clamp.clds.model.CldsSdcResourceBasicInfo; +import org.onap.clamp.clds.model.CldsSdcServiceInfo; +import org.onap.clamp.clds.model.CldsServiceData; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +/** + * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE + * Delegates in test. + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class SdcCatalogServicesIT extends AbstractIT { + @Autowired + private SdcCatalogServices sdcCatalogWired = new SdcCatalogServices(); + + @Test + public void removeDuplicateServicesTest() throws Exception { + SdcCatalogServices catalogServices = new SdcCatalogServices(); + List rawCldsSdcServiceList = new LinkedList(); + + CldsSdcServiceInfo service1a = new CldsSdcServiceInfo(); + service1a.setName("service1"); + service1a.setVersion("1.0"); + service1a.setInvariantUUID("invariantUUID1.0"); + rawCldsSdcServiceList.add(service1a); + rawCldsSdcServiceList.add(service1a); + + CldsSdcServiceInfo service1b = new CldsSdcServiceInfo(); + service1b.setName("service1"); + service1b.setVersion("1.1"); + service1b.setInvariantUUID("invariantUUID1.1"); + rawCldsSdcServiceList.add(service1b); + + CldsSdcServiceInfo service1c = new CldsSdcServiceInfo(); + service1c.setName("service1"); + service1c.setVersion("1.2"); + service1c.setInvariantUUID("invariantUUID1.2"); + rawCldsSdcServiceList.add(service1c); + + CldsSdcServiceInfo service2 = new CldsSdcServiceInfo(); + service2.setName("service2"); + service2.setVersion("1.0"); + service2.setInvariantUUID("invariantUUID2.0"); + rawCldsSdcServiceList.add(service2); + + List resultList = catalogServices.removeDuplicateServices(rawCldsSdcServiceList); + + assertTrue(resultList.size() == 2); + + CldsSdcServiceInfo res1, res2; + if ("service1".equals(resultList.get(0).getName())) { + res1 = resultList.get(0); + res2 = resultList.get(1); + } else { + res1 = resultList.get(1); + res2 = resultList.get(0); + } + + assertTrue("service1".equals(res1.getName())); + assertTrue("1.2".equals(res1.getVersion())); + + assertTrue("service2".equals(res2.getName())); + assertTrue("1.0".equals(res2.getVersion())); + + } + + @Test + public void removeDuplicateSdcResourceInstancesTest() { + SdcCatalogServices catalogServices = new SdcCatalogServices(); + List rawCldsSdcResourceList = new LinkedList(); + + CldsSdcResource sdcResource1a = new CldsSdcResource(); + sdcResource1a.setResourceInstanceName("resource1"); + sdcResource1a.setResourceVersion("1.0"); + rawCldsSdcResourceList.add(sdcResource1a); + + CldsSdcResource sdcResource1b = new CldsSdcResource(); + sdcResource1b.setResourceInstanceName("resource1"); + sdcResource1b.setResourceVersion("1.1"); + rawCldsSdcResourceList.add(sdcResource1b); + + CldsSdcResource sdcResource1c = new CldsSdcResource(); + sdcResource1c.setResourceInstanceName("resource1"); + sdcResource1c.setResourceVersion("1.2"); + rawCldsSdcResourceList.add(sdcResource1c); + + CldsSdcResource sdcResource2 = new CldsSdcResource(); + sdcResource2.setResourceInstanceName("resource2"); + sdcResource2.setResourceVersion("1.0"); + rawCldsSdcResourceList.add(sdcResource2); + + List resultList = catalogServices.removeDuplicateSdcResourceInstances(rawCldsSdcResourceList); + + CldsSdcResource res1, res2; + if ("resource1".equals(resultList.get(0).getResourceInstanceName())) { + res1 = resultList.get(0); + res2 = resultList.get(1); + } else { + res1 = resultList.get(1); + res2 = resultList.get(0); + } + + assertTrue("resource1".equals(res1.getResourceInstanceName())); + assertTrue("1.2".equals(res1.getResourceVersion())); + + assertTrue("resource2".equals(res2.getResourceInstanceName())); + assertTrue("1.0".equals(res2.getResourceVersion())); + + } + + @Test + public void removeDuplicateSdcResourceBasicInfoTest() { + + SdcCatalogServices catalogServices = new SdcCatalogServices(); + List rawCldsSdcResourceList = new LinkedList(); + + CldsSdcResourceBasicInfo sdcResource1a = new CldsSdcResourceBasicInfo(); + sdcResource1a.setName("resource1"); + sdcResource1a.setVersion("1.0"); + rawCldsSdcResourceList.add(sdcResource1a); + + CldsSdcResourceBasicInfo sdcResource1b = new CldsSdcResourceBasicInfo(); + sdcResource1b.setName("resource1"); + sdcResource1b.setVersion("1.1"); + rawCldsSdcResourceList.add(sdcResource1b); + + CldsSdcResourceBasicInfo sdcResource1c = new CldsSdcResourceBasicInfo(); + sdcResource1c.setName("resource1"); + sdcResource1c.setVersion("1.2"); + rawCldsSdcResourceList.add(sdcResource1c); + + CldsSdcResourceBasicInfo sdcResource2 = new CldsSdcResourceBasicInfo(); + sdcResource2.setName("resource2"); + sdcResource2.setVersion("1.0"); + rawCldsSdcResourceList.add(sdcResource2); + + List resultList = catalogServices + .removeDuplicateSdcResourceBasicInfo(rawCldsSdcResourceList); + + CldsSdcResourceBasicInfo res1, res2; + if ("resource1".equals(resultList.get(0).getName())) { + res1 = resultList.get(0); + res2 = resultList.get(1); + } else { + res1 = resultList.get(1); + res2 = resultList.get(0); + } + + assertTrue("resource1".equals(res1.getName())); + assertTrue("1.2".equals(res1.getVersion())); + + assertTrue("resource2".equals(res2.getName())); + assertTrue("1.0".equals(res2.getVersion())); + + } + + @Test + public void getServiceUuidFromServiceInvariantIdTest() throws Exception { + SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired); + Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")); + + // Try the vcts4 version 1.0, this one should be replaced by 1.1 so it + // should not exist, returning empty string + String resUuidVcts4Null = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9b"); + assertTrue("".equals(resUuidVcts4Null)); + + // Try the vcts4 version 1.1, this one should be there as it replaces + // the vcts4 v1.0 + String resUuidVcts4Latest = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); + assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(resUuidVcts4Latest)); + + // Try the vcts5 version 1.0, this one should be there + String resUuidVcts5 = aSpy.getServiceUuidFromServiceInvariantId("a33ed748-3477-4434-b3f3-b5560f5e7d8c"); + assertTrue("29018914-966c-442d-9d08-251b9dc45b7f".equals(resUuidVcts5)); + + // try one that does not exist at all + String resUuidUnknown = aSpy.getServiceUuidFromServiceInvariantId("testuuid"); + assertTrue("".equals(resUuidUnknown)); + + } + + @Test + public void getCldsServiceDataWithAlarmConditionsTest() throws Exception { + SdcCatalogServices aSpy = Mockito.spy(sdcCatalogWired); + Mockito.when(aSpy.getSdcServicesInformation(null)).thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServicesListExample.json"), "UTF-8")); + + // This invariant uuid is the one from vcts4 v1.1 + String serviceResourceDetailUrl = refProp.getStringValue("sdc.serviceUrl") + + "/29018914-966c-442d-9d08-251b9dc45b8f/metadata"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(serviceResourceDetailUrl, false)) + .thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcServiceDetailsExample.json"), + "UTF-8")); + + String resourceDetailUrl = refProp.getStringValue("sdc.catalog.url") + + "resources/585822c7-4027-4f84-ba50-e9248606f136/metadata"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(resourceDetailUrl, false)) + .thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcResourceDetailsExample.json"), + "UTF-8")); + + String securityRulesDetailUrl = refProp.getStringValue("sdc.catalog.url") + + "resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/metadata"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(securityRulesDetailUrl, false)).thenReturn( + IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcSecurityRules.json"), + "UTF-8")); + + String cinderVolumeDetailUrl = refProp.getStringValue("sdc.catalog.url") + + "resources/b4288e07-597a-44a2-aa98-ad36e551a39d/metadata"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(cinderVolumeDetailUrl, false)).thenReturn( + IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcCinderVolume.json"), + "UTF-8")); + + String vfcGenericDetailUrl = refProp.getStringValue("sdc.catalog.url") + + "resources/2c8f1219-8000-4001-aa13-496a0396d40f/metadata"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(vfcGenericDetailUrl, false)).thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCGenericWithAlarms.json"), "UTF-8")); + + String csvDetailUrl = "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153"; + Mockito.when(aSpy.getResponsesFromArtifactUrl(csvDetailUrl)).thenReturn(IOUtils.toString( + SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcMeasurementsList.csv"), "UTF-8")); + + String csvAlarmsDetailUrl = "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392"; + Mockito.when(aSpy.getResponsesFromArtifactUrl(csvAlarmsDetailUrl)).thenReturn(IOUtils + .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcAlarmsList.csv"), "UTF-8")); + + String allVfResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VF"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfResourcesDetailUrl, false)).thenReturn(IOUtils + .toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFResources.json"), "UTF-8")); + + String allVfcResourcesDetailUrl = refProp.getStringValue("sdc.catalog.url") + "resources?resourceType=VFC"; + Mockito.when(aSpy.getCldsServicesOrResourcesBasedOnURL(allVfcResourcesDetailUrl, false)).thenReturn( + IOUtils.toString(SdcCatalogServicesIT.class.getResourceAsStream("/example/sdc/sdcVFCResources.json"), + "UTF-8")); + + CldsServiceData cldsServiceData = aSpy + .getCldsServiceDataWithAlarmConditions("a33ed748-3477-4434-b3f3-b5560f5e7d9c"); + assertTrue("a33ed748-3477-4434-b3f3-b5560f5e7d9c".equals(cldsServiceData.getServiceInvariantUUID())); + assertTrue("29018914-966c-442d-9d08-251b9dc45b8f".equals(cldsServiceData.getServiceUUID())); + assertTrue(cldsServiceData.getCldsVfs().size() == 1); + + List alarmsList = aSpy.getAllAlarmConditionsFromCldsServiceData(cldsServiceData); + assertTrue(alarmsList.size() == 6); + + } + +} diff --git a/src/test/java/org/onap/clamp/clds/it/SdcIT.java b/src/test/java/org/onap/clamp/clds/it/SdcIT.java new file mode 100644 index 00000000..0d8acbff --- /dev/null +++ b/src/test/java/org/onap/clamp/clds/it/SdcIT.java @@ -0,0 +1,87 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP CLAMP + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights + * reserved. + * ================================================================================ + * 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============================================ + * =================================================================== + * ECOMP is a trademark and service mark of AT&T Intellectual Property. + */ + +package org.onap.clamp.clds.it; + +import org.onap.clamp.clds.AbstractIT; +import org.onap.clamp.clds.client.req.SdcReq; +import org.onap.clamp.clds.model.CldsEvent; +import org.onap.clamp.clds.model.prop.ModelProperties; +import org.onap.clamp.clds.transform.TransformUtil; +import org.onap.clamp.clds.model.refprop.RefProp; +import org.onap.clamp.clds.client.SdcCatalogServices; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; +import org.junit.BeforeClass; +import org.springframework.beans.factory.annotation.Autowired; + +/** + * Test DCAE API in org.onap.clamp.ClampDesigner.client package - replicate DCAE Delegates in test. + */ +@RunWith(SpringRunner.class) +@SpringBootTest +public class SdcIT extends AbstractIT { + @Autowired + private RefProp refProp; + + @Autowired + private SdcCatalogServices sdcCatalogServices; + + @BeforeClass + public static void oneTimeSetUp() { + System.setProperty("AJSC_CONF_HOME", System.getProperty("user.dir") + "/src/test/resources/"); + } + + @Test + public void testBlueprint() throws Exception { + String modelProp = TransformUtil.getResourceAsString("example/modelProp.json"); + String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnProp.json"); + String modelName = "example-model06"; + String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756"; + String docText = TransformUtil.getResourceAsString("example/templateProp.json"); + ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, true, modelBpmnProp, modelProp); + String blueprint = SdcReq.formatBlueprint(refProp, prop, docText); + System.out.println("blueprint=" + blueprint); + //assertEquals(blueprint, ""); + } + + + @Test + public void testTcaBlueprint() throws Exception { + String modelProp = TransformUtil.getResourceAsString("example/modelPropForPolicy.json"); + String modelBpmnProp = TransformUtil.getResourceAsString("example/modelBpmnPropForPolicy.json"); + String modelName = "example-model06"; + String controlName = "ClosedLoop-FRWL-SIG04-1582f840-test-test-1234-005056a9d756"; + + String docText = TransformUtil.getResourceAsString("example/templatePropForTca.json"); + + ModelProperties prop = new ModelProperties(modelName, controlName, CldsEvent.ACTION_SUBMIT, true, modelBpmnProp, modelProp); + String blueprint = SdcReq.formatBlueprint(refProp, prop, docText); + + System.out.println("blueprint=" + blueprint); + //assertEquals(blueprint, ""); + } +} diff --git a/src/test/resources/example/sdc/sdcAlarmsList.csv b/src/test/resources/example/sdc/sdcAlarmsList.csv new file mode 100644 index 00000000..247dcd9a --- /dev/null +++ b/src/test/resources/example/sdc/sdcAlarmsList.csv @@ -0,0 +1,13 @@ +,EventSourceType,,AlarmCondition,Severity + +eventType,VPMS,alarmCondition,SwRestart,CRITICAL + +eventType,VPMS,alarmCondition,SwRestart,WARNING + +eventType,VPMS,alarmCondition,SwRestart,OK + +eventType,VPMS,alarmCondition,IsAlive,CRITICAL + +eventType,VPMS,alarmCondition,IsAlive,WARNING + +eventType,VPMS,alarmCondition,IsAlive,OK diff --git a/src/test/resources/example/sdc/sdcCinderVolume.json b/src/test/resources/example/sdc/sdcCinderVolume.json new file mode 100644 index 00000000..b5ffe646 --- /dev/null +++ b/src/test/resources/example/sdc/sdcCinderVolume.json @@ -0,0 +1,15 @@ +{ + "uuid": "b4288e07-597a-44a2-aa98-ad36e551a39d", + "invariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2", + "name": "CinderVolume", + "version": "5.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b4288e07-597a-44a2-aa98-ad36e551a39d/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003", + "lastUpdaterFullName": "Jimmy Hendrix", + "toscaResourceName": "org.openecomp.resource.vfc.nodes.heat.cinder.Volume", + "description": "Represents a server-local block storage device that provides persistent storage to guest virtual machines. " +} \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcMeasurementsList.csv b/src/test/resources/example/sdc/sdcMeasurementsList.csv new file mode 100644 index 00000000..c04a3489 --- /dev/null +++ b/src/test/resources/example/sdc/sdcMeasurementsList.csv @@ -0,0 +1,17 @@ +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRAATTCBRA')].Value,thresholdName,PMRAATTCBRA ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRASUCCCBRA')].Value,thresholdName,PMRASUCCCBRA ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEAUTO')].Value,thresholdName,PMCELLDOWNTIMEAUTO ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEMAN')].Value,thresholdName,PMCELLDOWNTIMEMAN ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABATT')].Value,thresholdName,PMRRCCONNESTABATT ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABSUCC')].Value,thresholdName,PMRRCCONNESTABSUCC ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEAUTO')].Value,thresholdName,PMCELLDOWNTIMEAUTO ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMCELLDOWNTIMEMAN')].Value,thresholdName,PMCELLDOWNTIMEMAN ,nfNamingCode,ENBE + +fieldPath,$.event.measurementsForVfScalingFields.additionalMeasurements[*].arrayOfFields[?(@.Name == 'PMRRCCONNESTABFAILCELLLATENCY')].Value,thresholdName,PMRRCCONNESTABFAILCELLLATENCY,nfNamingCode,ENBE \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcResourceDetailsExample.json b/src/test/resources/example/sdc/sdcResourceDetailsExample.json new file mode 100644 index 00000000..6087d020 --- /dev/null +++ b/src/test/resources/example/sdc/sdcResourceDetailsExample.json @@ -0,0 +1,126 @@ +{ + "uuid": "585822c7-4027-4f84-ba50-e9248606f136", + "invariantUUID": "585822c7-4027-4f84-ba50-e9248606f134", + "name": "resourceName-1", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/585822c7-4027-4f84-ba50-e9248606f136/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743", + "lastUpdaterFullName": "Three ASDCMech", + "toscaResourceName": "org.openecomp.resource.vf.ClampDev", + "resources": + [ + { + "resourceInstanceName": "abstract_virc_fe_be_0", + "resourceName": "CLAMP-Dev-nodes.virc_fe_be_0", + "resourceInvariantUUID": "133dd665-fca8-4e8b-8126-9e74a8d23bf5", + "resourceVersion": "1.0", + "resoucreType": "CVFC", + "resourceUUID": "a0475018-1e7e-4ddd-8bee-33cbf958c2e6" + }, + + { + "resourceInstanceName": "virc_fe_be_RSG", + "resourceName": "SecurityRules", + "resourceInvariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3", + "resourceVersion": "1.0", + "resoucreType": "VFC", + "resourceUUID": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5" + }, + + { + "resourceInstanceName": "abstract_virc_fe_be_1", + "resourceName": "CLAMP-Dev-nodes.virc_fe_be_1", + "resourceInvariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6", + "resourceVersion": "1.0", + "resoucreType": "VFC", + "resourceUUID": "2c8f1219-8000-4001-aa13-496a0396d40f" + }, + + { + "resourceInstanceName": "virc_fe_be_volume_1", + "resourceName": "CinderVolume", + "resourceInvariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2", + "resourceVersion": "5.0", + "resoucreType": "VFC", + "resourceUUID": "b4288e07-597a-44a2-aa98-ad36e551a39d" + }, + + { + "resourceInstanceName": "virc_fe_be_volume_0", + "resourceName": "CinderVolume", + "resourceInvariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2", + "resourceVersion": "5.0", + "resoucreType": "VFC", + "resourceUUID": "b4288e07-597a-44a2-aa98-ad36e551a39d" + } + ], + + "artifacts": + [ + { + "artifactName": "vf-license-model.xml", + "artifactType": "VF_LICENSE", + "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/16ec4971-5f3d-4f29-b22e-4c9ede6fdd97", + "artifactDescription": "VF license file", + "artifactChecksum": "MGUwM2MzZmMyNTBhNzlmNjY2NjJmMTk1MjMwNjRlNzY=", + "artifactUUID": "16ec4971-5f3d-4f29-b22e-4c9ede6fdd97", + "artifactVersion": "1", + "artifactLabel": "vflicense", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "base_fe_be.yaml", + "artifactType": "HEAT", + "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/18fd7704-9fe7-40c6-bde2-a1753111a1af", + "artifactDescription": "created from csar", + "artifactTimeout": 60, + "artifactChecksum": "NTUyYjdlMDA1MGNmOGViZjA4OWQyOWEzNGU3NDM4OTk=", + "artifactUUID": "18fd7704-9fe7-40c6-bde2-a1753111a1af", + "artifactVersion": "2", + "artifactLabel": "heat1", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "vendor-license-model.xml", + "artifactType": "VENDOR_LICENSE", + "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/7ad72757-b35e-4084-954d-9f9d447f7a98", + "artifactDescription": " Vendor license file", + "artifactChecksum": "ZTFlYWYxYmEzY2ZiMmZmMDMyNWEyMmM2ZjI4ZjM1NTY=", + "artifactUUID": "7ad72757-b35e-4084-954d-9f9d447f7a98", + "artifactVersion": "1", + "artifactLabel": "vendorlicense", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "user_data.sh", + "artifactType": "HEAT_ARTIFACT", + "artifactURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/artifacts/dff5a82d-5456-4653-87e5-4a8c52a9a67b", + "artifactDescription": "created from csar", + "artifactChecksum": "NmUyYjBmYzk5MDk3Mjc0NWNhZGU2ZGY1ZTE3YmU3ZjU=", + "artifactUUID": "dff5a82d-5456-4653-87e5-4a8c52a9a67b", + "artifactVersion": "1", + "artifactLabel": "heatartifact2", + "artifactGroupType": "DEPLOYMENT" + }, + { + "artifactName": "eNodeB_Thresholds.csv", + "artifactType": "OTHER", + "artifactURL": "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/artifacts/d57ac7ec-f3c3-4793-983a-c75ac3a43153", + "artifactDescription": "kpis with nfNamingCode", + "artifactChecksum": "YTc1MDU0ZDFhODUwMGM5YmIwM2FmMWUzMmRiY2NlMGI=", + "artifactUUID": "d57ac7ec-f3c3-4793-983a-c75ac3a43153", + "artifactVersion": "1", + "artifactLabel": "kpis", + "artifactGroupType": "DEPLOYMENT" + } + ], + + "description": "Description" +} \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcSecurityRules.json b/src/test/resources/example/sdc/sdcSecurityRules.json new file mode 100644 index 00000000..07930a28 --- /dev/null +++ b/src/test/resources/example/sdc/sdcSecurityRules.json @@ -0,0 +1,15 @@ +{ + "uuid": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5", + "invariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3", + "name": "SecurityRules", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/toscaModel", + "category": "Generic", + "subCategory": "Rules", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003", + "lastUpdaterFullName": "Jimmy Hendrix", + "toscaResourceName": "org.openecomp.resource.vfc.rules.nodes.heat.network.neutron.SecurityRules", + "description": "Configuration of policy rules to be applied on ports." +} \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcServiceDetailsExample.json b/src/test/resources/example/sdc/sdcServiceDetailsExample.json new file mode 100644 index 00000000..820c6ca5 --- /dev/null +++ b/src/test/resources/example/sdc/sdcServiceDetailsExample.json @@ -0,0 +1,230 @@ +{ + "uuid": "29018914-966c-442d-9d08-251b9dc45b8f", + "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9c", + "name": "vcts3", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535", + "lastUpdaterFullName": "MONICA LAZER", + "toscaResourceName": "org.openecomp.resource.vf.Vcts3", + "resources": + [ + { + "resourceInstanceName": "vCTS_port_0", + "resourceName": "NeutronPort", + "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8", + "resourceVersion": "1.0", + "resoucreType": "CP", + "resourceUUID": "fdf0a74a-4942-4af0-9395-7bce23670662" + }, + + { + "resourceInstanceName": "vCTS", + "resourceName": "Vcts3.nodes.heat.vCTS_server", + "resourceInvariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80", + "resourceVersion": "1.0", + "resoucreType": "VFC", + "resourceUUID": "ab168037-e654-4990-a188-e5d2f25a8768", + "artifacts": + [ + { + "artifactName": "Fault-alarms-SDC-Albino-vCTS2.csv", + "artifactType": "SNMP_TRAP", + "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/resourceInstances/vcts/artifacts/b4f583b4-da0c-4bf8-81fb-415ebcd78cd4", + "artifactDescription": "Artifact created from csar", + "artifactChecksum": "NjI1ZTEyM2YxYWFhZThlMzZkNjAwZmNmMjEwNjZmMDQ=", + "artifactUUID": "b4f583b4-da0c-4bf8-81fb-415ebcd78cd4", + "artifactVersion": "1", + "artifactLabel": "faultalarmssdcalbinovcts2csv", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "nagios2.csv", + "artifactType": "SNMP_TRAP", + "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/resourceInstances/vcts/artifacts/b1b86435-1de8-4d4a-8f69-f583a7417396", + "artifactDescription": "Artifact created from csar", + "artifactChecksum": "NzZlYTY1MmVjN2YyYWJlNWZkODIwYzBlNTFlYzg0NTA=", + "artifactUUID": "b1b86435-1de8-4d4a-8f69-f583a7417396", + "artifactVersion": "1", + "artifactLabel": "nagios2csv", + "artifactGroupType": "DEPLOYMENT" + } + ] + }, + + { + "resourceInstanceName": "resource-1", + "resourceInvariantUUID": "585822c7-4027-4f84-ba50-e9248606f134", + "resourceName": "resourceName-1", + "resoucreType": "VF", + "resourceUUID": "585822c7-4027-4f84-ba50-e9248606f136", + "resourceVersion": "3.0", + "category": "category", + "artifacts": + [ + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Meta data for VFModule", + "artifactName": "vnf-module-artifact.json", + "artifactType": "VF_MODULES_METADATA", + "artifactURL": "vnf-module-artifact.json", + "artifactUUID": "VfArtifact-UUID2", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Nimbus Heat OAM", + "artifactName": "hot-nimbus-oam_v1.0.yaml", + "artifactTimeout": 100, + "artifactType": "HEAT", + "artifactURL": "hot-nimbus-oam_v1.0.yaml", + "artifactUUID": "Artifact-UUID1", + "artifactVersion": "1.0", + "generatedArtifact": "EnvArtifact-UUID2", + "relatedArtifact": + [ + "NestedArtifact-UUID3", + "ScriptArtifact-UUID1" + ] + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Nimbus Heat ENV OAM", + "artifactName": "hot-nimbus-oam_v1.0.env", + "artifactType": "HEAT_ENV", + "artifactURL": "hot-nimbus-oam_v1.0.env", + "artifactUUID": "EnvArtifact-UUID2", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Nested OAM", + "artifactName": "nested-oam_v1.0.yaml", + "artifactTimeout": 10, + "artifactType": "HEAT_NESTED", + "artifactURL": "nested-oam_v1.0.yaml", + "artifactUUID": "NestedArtifact-UUID3", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Nested PSM", + "artifactName": "nested-psm_v1.0.yaml", + "artifactTimeout": 10, + "artifactType": "HEAT_NESTED", + "artifactURL": "nested-psm_v1.0.yaml", + "artifactUUID": "NestedArtifact-UUID4", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Script for Nimbus", + "artifactName": "cloud-nimbus.sh", + "artifactType": "HEAT_ARTIFACT", + "artifactURL": "cloud-nimbus.sh", + "artifactUUID": "ScriptNimbusArtifact-UUID1", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Script for OAM", + "artifactName": "mount_iso_script.sh", + "artifactType": "HEAT_ARTIFACT", + "artifactURL": "mount_iso_script.sh", + "artifactUUID": "ScriptArtifact-UUID1", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Heat Vol for OAM", + "artifactName": "hot-nimbus-oam-volumes_v1.0.yaml", + "artifactTimeout": 10, + "artifactType": "HEAT_VOL", + "artifactURL": "hot-nimbus-oam-volumes_v1.0.yaml", + "artifactUUID": "VolumeArtifact-UUID1", + "artifactVersion": "1.0", + "generatedArtifact": "VolumeEnvArtifact-UUID1", + "relatedArtifact": + [ + "NestedArtifact-UUID4" + ] + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Heat Env Vol for OAM", + "artifactName": "hot-nimbus-oam-volumes_v1.0.env", + "artifactType": "HEAT_ENV", + "artifactURL": "hot-nimbus-oam-volumes_v1.0.env", + "artifactUUID": "VolumeEnvArtifact-UUID1", + "artifactVersion": "1.0" + }, + + { + "artifactChecksum": "CheckSum", + "artifactDescription": "Meta data for VFModule", + "artifactName": "att_nimbus_vsaegw_ht_base_v13_0728v1.yaml", + "artifactTimeout": 100, + "artifactType": "HEAT", + "artifactURL": "att_nimbus_vsaegw_ht_base_v13_0728v1.yaml", + "artifactUUID": "HeatArtifactE2E-UUIDTest", + "artifactVersion": "1.0" + } + ] + } + ], + + "artifacts": + [ + { + "artifactName": "vf-license-model.xml", + "artifactType": "VF_LICENSE", + "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/f8fb4591-5387-4424-8e7b-e31cb34a8cc1", + "artifactDescription": "VF license file", + "artifactChecksum": "NDkxZjBiYTA3YzE4YzQ2NzVjNjU4ZjE5YTI2YzY2YjM=", + "artifactUUID": "f8fb4591-5387-4424-8e7b-e31cb34a8cc1", + "artifactVersion": "1", + "artifactLabel": "vflicense", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "base_TEST.yaml", + "artifactType": "HEAT", + "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/ced9f553-a9bf-48e9-bd67-7f17162665ee", + "artifactDescription": "created from csar", + "artifactTimeout": 60, + "artifactChecksum": "NGVlN2MwZmE0MjU1MTZlNmRlOTMxZmM1NGZlMDk3ZDE=", + "artifactUUID": "ced9f553-a9bf-48e9-bd67-7f17162665ee", + "artifactVersion": "1", + "artifactLabel": "heat1", + "artifactGroupType": "DEPLOYMENT" + }, + + { + "artifactName": "vendor-license-model.xml", + "artifactType": "VENDOR_LICENSE", + "artifactURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8f/artifacts/a34232d1-60ee-4dda-add8-fbc14531ac24", + "artifactDescription": " Vendor license file", + "artifactChecksum": "OGEwYzI2Njk2YzI4YTVjMzdhMTI5ODNkNjQxMWIzZWU=", + "artifactUUID": "a34232d1-60ee-4dda-add8-fbc14531ac24", + "artifactVersion": "1", + "artifactLabel": "vendorlicense", + "artifactGroupType": "DEPLOYMENT" + } + ], + + "description": "for CLAMP" +} \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcServicesListExample.json b/src/test/resources/example/sdc/sdcServicesListExample.json new file mode 100644 index 00000000..3c1277a4 --- /dev/null +++ b/src/test/resources/example/sdc/sdcServicesListExample.json @@ -0,0 +1,35 @@ +[ + { + "uuid": "29018914-966c-442d-9d08-251b9dc45b8e", + "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9b", + "name": "vcts4", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", + "category": "Application L4+", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535", + "distributionStatus":"DISTRIBUTED" + }, + { + "uuid": "29018914-966c-442d-9d08-251b9dc45b8f", + "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9c", + "name": "vcts4", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", + "category": "Application L4+", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535", + "distributionStatus":"DISTRIBUTED" + }, + { + "uuid": "29018914-966c-442d-9d08-251b9dc45b7f", + "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d8c", + "name": "vcts5", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", + "category": "Application L4+", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535", + "distributionStatus":"DISTRIBUTED" + } +] \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json b/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json new file mode 100644 index 00000000..0f9cf637 --- /dev/null +++ b/src/test/resources/example/sdc/sdcVFCGenericWithAlarms.json @@ -0,0 +1,60 @@ +{ + "uuid": "2c8f1219-8000-4001-aa13-496a0396d40f", + "invariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6", + "name": "CLAMP-Dev-nodes.virc_fe_be_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "CVFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740", + "lastUpdaterFullName": "Zero ASDCMech", + "toscaResourceName": "org.openecomp.resource.vfc.ClampDev.abstract.nodes.virc_fe_be_1", + "resources": + [ + { + "resourceInstanceName": "virc_fe_be_virc_fe_be_management_0_port", + "resourceName": "NeutronPort", + "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8", + "resourceVersion": "5.0", + "resoucreType": "CP", + "resourceUUID": "045f3be0-7398-455b-8f0d-8eff2062a187" + }, + + { + "resourceInstanceName": "virc_fe_be_virc_fe_be_data_1_port", + "resourceName": "NeutronPort", + "resourceInvariantUUID": "10428340-a673-4377-8696-af579a2e67a8", + "resourceVersion": "5.0", + "resoucreType": "CP", + "resourceUUID": "045f3be0-7398-455b-8f0d-8eff2062a187" + }, + + { + "resourceInstanceName": "virc_fe_be", + "resourceName": "ClampDev.nodes.heat.virc_fe_be", + "resourceInvariantUUID": "e81d960d-794c-4d86-bbc4-31a2f86141ed", + "resourceVersion": "1.0", + "resoucreType": "VFC", + "resourceUUID": "d7646638-2572-4a94-b497-c028ac15f9ca" + } + ], + + "artifacts": + [ + { + "artifactName": "Fault-alarms-ASDC-vprobes-vLB.csv", + "artifactType": "SNMP_TRAP", + "artifactURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/resourceInstances/virc_fe_be/artifacts/5138e316-0237-49aa-817a-b3d8eaf77392", + "artifactDescription": "Artifact created from csar", + "artifactChecksum": "YWY2ZTY5NjhlOTU0YjQyZThhNTIyOGFmNzI1NTRiYzQ=", + "artifactUUID": "5138e316-0237-49aa-817a-b3d8eaf77392", + "artifactVersion": "1", + "artifactLabel": "faultalarmsasdcvprobesvlbcsv", + "artifactGroupType": "DEPLOYMENT" + } + ], + + "description": "Complex node type that is used as nested type in VF" +} \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcVFCResources.json b/src/test/resources/example/sdc/sdcVFCResources.json new file mode 100644 index 00000000..be2ee46d --- /dev/null +++ b/src/test/resources/example/sdc/sdcVFCResources.json @@ -0,0 +1,2445 @@ +[ + { + "uuid": "ab168037-e654-4990-a188-e5d2f25a8768", + "invariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80", + "name": "Vcts3.nodes.heat.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b3538c76-7d58-4e15-9a06-b51b32101965/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "da3c740a-e8af-4b85-a487-b4961b040fa3", + "invariantUUID": "2a477fa7-ac1b-4a62-baa1-e94c764d736b", + "name": "ScpTestVsp.nodes.fe_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/da3c740a-e8af-4b85-a487-b4961b040fa3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "b31696d9-ad41-4cb5-bbdd-3e67845204f3", + "invariantUUID": "2b07e8fa-998d-4311-8ec0-61b86c798de9", + "name": "VpeBvRenana.nodes.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b31696d9-ad41-4cb5-bbdd-3e67845204f3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "25b74ab6-565b-424f-bb57-b434bb2944a0", + "invariantUUID": "ed69ed4f-80cd-48b5-86d5-4b5de21041be", + "name": "VpeBvRenana.nodes.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/25b74ab6-565b-424f-bb57-b434bb2944a0/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "c13dc4c4-f4cb-4a54-9198-5bce42c5df02", + "invariantUUID": "6a828e59-cbee-4dc2-aa67-ee35a6eafd50", + "name": "Dev2devnfod.nodes.VF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c13dc4c4-f4cb-4a54-9198-5bce42c5df02/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "08e94ce5-79e8-4873-9221-eb9e869ac679", + "invariantUUID": "da9ea806-971a-4338-bee7-6feeea270d8a", + "name": "Vprobe.nodes.vprobe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/08e94ce5-79e8-4873-9221-eb9e869ac679/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "0d8f93f5-780e-47de-9b03-52ab31cb83d1", + "invariantUUID": "ce47044b-a00e-43d3-8aae-df047e6abe2e", + "name": "Vprobe.nodes.vLB", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/0d8f93f5-780e-47de-9b03-52ab31cb83d1/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "9140709a-d6a9-4690-b102-6fa96a696ce9", + "invariantUUID": "0c3d1be0-f4d8-4b0a-8cc8-05989de29dfc", + "name": "Dev2devnfod1207.nodes.VF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/9140709a-d6a9-4690-b102-6fa96a696ce9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "6607c9fc-dc1d-4a89-ac57-b6b18fc79b69", + "invariantUUID": "7a17e445-0400-40bf-8bf6-91105996e19e", + "name": "Dev2devnfodvf.nodes.VF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/6607c9fc-dc1d-4a89-ac57-b6b18fc79b69/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "3cb0c46c-af73-4420-ae5c-d4816b314980", + "invariantUUID": "0e332f76-d6f8-4e16-b2eb-bb1ccadec523", + "name": "volume", + "version": "4.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3cb0c46c-af73-4420-ae5c-d4816b314980/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "b4288e07-597a-44a2-aa98-ad36e551a39d", + "invariantUUID": "61dc85d2-5e17-480e-a71f-8f6d59a0ead2", + "name": "CinderVolume", + "version": "5.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b4288e07-597a-44a2-aa98-ad36e551a39d/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "156d628f-f515-4f58-bfb0-210632717ce3", + "invariantUUID": "cdafff07-0bbb-45f6-8a48-46ed2c98f29c", + "name": "VfDemor.nodes.heat.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/156d628f-f515-4f58-bfb0-210632717ce3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "28eeb6ce-2349-4c07-80ad-f0aacbf67028", + "invariantUUID": "ae71f982-2393-4fd7-8a69-c0050880e7c5", + "name": "Dev2devipassign2407.nodes.heat.pd_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/28eeb6ce-2349-4c07-80ad-f0aacbf67028/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "f89e37a8-c5c0-4c0c-a034-f6c0ad8dd83f", + "invariantUUID": "59061740-4700-4800-83f1-0427f1ed1b8c", + "name": "Vmme1710.nodes.heat.ncb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f89e37a8-c5c0-4c0c-a034-f6c0ad8dd83f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "8263c4c5-555e-4b73-9210-ddc8dd7e42f8", + "invariantUUID": "a7b9db4c-685a-416c-a2ed-7711b1492cd3", + "name": "VnfcVspTest.nodes.heat.rdn", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/8263c4c5-555e-4b73-9210-ddc8dd7e42f8/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "dd7218d7-5760-4834-b78a-33edf5eb22e7", + "invariantUUID": "47be1ccb-856d-4d95-9722-f9d1913fe9df", + "name": "VnfcVspTest.nodes.heat.prx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/dd7218d7-5760-4834-b78a-33edf5eb22e7/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "10906cdf-dbec-405a-a513-7ed2090a5adb", + "invariantUUID": "746709d9-38fb-40af-88b0-856f6fadeb02", + "name": "VfExample.nodes.heat.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/10906cdf-dbec-405a-a513-7ed2090a5adb/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "e0ee89f0-175b-47d8-8258-1ac6ea6d52a8", + "invariantUUID": "a0d6e34d-c260-46ff-a55f-79fbce461ec2", + "name": "Vmme1710.nodes.heat.fsb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e0ee89f0-175b-47d8-8258-1ac6ea6d52a8/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "e45c5438-0528-4a3d-bfa4-644b2343537c", + "invariantUUID": "cd1aa4fc-94bb-4e23-86b4-0e7b89c8cab8", + "name": "Vmme1710.nodes.heat.gpb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e45c5438-0528-4a3d-bfa4-644b2343537c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "76e5e6b8-baad-4e5e-b535-29a2ba4cb605", + "invariantUUID": "c76ccbe5-7087-4eb4-a0ff-2edd7d9a392c", + "name": "ContrailV2VirtualMachineInterface", + "version": "6.0", + "toscaModelURL": "/sdc/v1/catalog/resources/76e5e6b8-baad-4e5e-b535-29a2ba4cb605/toscaModel", + "category": "Generic", + "subCategory": "Network Elements", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "2b4c437e-9034-4ec3-b6f9-9309022673cf", + "invariantUUID": "39584568-5d64-4c63-9007-46b205ea4db8", + "name": "MadhuMdns.nodes.heat.dns", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2b4c437e-9034-4ec3-b6f9-9309022673cf/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "56cef7d0-af8c-4f18-80a2-e9aaf4366838", + "invariantUUID": "fab9a189-6bfa-4dfa-a4fe-2bfa4ff4e71b", + "name": "Alinavsp.nodes.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/56cef7d0-af8c-4f18-80a2-e9aaf4366838/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "d7646638-2572-4a94-b497-c028ac15f9ca", + "invariantUUID": "e81d960d-794c-4d86-bbc4-31a2f86141ed", + "name": "ClampDev.nodes.heat.virc_fe_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d7646638-2572-4a94-b497-c028ac15f9ca/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "b58f9c1a-ad21-459d-9efa-a8924147cb90", + "invariantUUID": "a13cd6b9-c46e-4830-88ab-2b1c710a3b51", + "name": "sang_AR", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b58f9c1a-ad21-459d-9efa-a8924147cb90/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "27307a62-8512-4aeb-a0ad-e8e88643c2ba", + "invariantUUID": "91d1bde6-eb8e-4786-b7e6-193453662014", + "name": "SangVsp.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/27307a62-8512-4aeb-a0ad-e8e88643c2ba/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "b0322a5d-b664-4c47-9827-9d7c0ca2201b", + "invariantUUID": "745995d0-6bf0-49d4-895f-32d554a7c333", + "name": "vnfConfiguration", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b0322a5d-b664-4c47-9827-9d7c0ca2201b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "fd0e3baa-fef7-4096-be2f-a73fea2f1360", + "invariantUUID": "4aca7e14-e2e4-4aeb-868e-aaaecea0cc5d", + "name": "SangVsp.nodes.heat.prx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fd0e3baa-fef7-4096-be2f-a73fea2f1360/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "a12dad87-6120-412f-8a53-c5bb88be89a3", + "invariantUUID": "84a7c06f-b3a7-448b-8777-626776b0b6bd", + "name": "Vmme1710.nodes.heat.vlc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a12dad87-6120-412f-8a53-c5bb88be89a3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "a14e3bbd-b04b-4924-817c-b4d13bfd8fe2", + "invariantUUID": "e205948e-5043-4cab-851d-e9e37f68736f", + "name": "VfExample.nodes.heat.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a14e3bbd-b04b-4924-817c-b4d13bfd8fe2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "a902ec74-9415-4d5c-a14e-f0861a272407", + "invariantUUID": "40894528-2703-4652-86d0-463ac2af8c80", + "name": "NewVendorMdns.nodes.heat.dns", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a902ec74-9415-4d5c-a14e-f0861a272407/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "82646e24-0e94-416a-aae2-9df4b2aa6217", + "invariantUUID": "a966f23a-ce65-4ef1-8d9f-718510852415", + "name": "SangVsp.nodes.heat.rdn", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/82646e24-0e94-416a-aae2-9df4b2aa6217/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "d87ce222-309b-46ab-9be9-c2d6ef7fe65e", + "invariantUUID": "37fcd63a-2d6e-4c42-8d63-183711976f9b", + "name": "multiFlavorVFC", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d87ce222-309b-46ab-9be9-c2d6ef7fe65e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "c01c047d-395f-44fa-a34f-dc3f9c51c92c", + "invariantUUID": "23f8cb05-885d-4423-bae0-0d043f3c350c", + "name": "WebApplication", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c01c047d-395f-44fa-a34f-dc3f9c51c92c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "5fc1e5d4-1015-4614-b486-8727eb5e388b", + "invariantUUID": "19bf4492-3bdb-4d62-966d-2e2498e1891c", + "name": "Root", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5fc1e5d4-1015-4614-b486-8727eb5e388b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "61214be3-e560-44cc-877b-d484bcc2ee79", + "invariantUUID": "88a9f65b-94a0-4530-a17e-adaada70838d", + "name": "BlockStorage", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/61214be3-e560-44cc-877b-d484bcc2ee79/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "efb54bab-a842-48b3-842a-dffb000acf1f", + "invariantUUID": "cb2574f8-0b75-4ea1-8517-acba650ba72f", + "name": "Database", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/efb54bab-a842-48b3-842a-dffb000acf1f/toscaModel", + "category": "Generic", + "subCategory": "Database", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "4066e7da-0dba-4d0b-b74c-c30446ed277e", + "invariantUUID": "75c5fbc6-4366-4163-af9c-1a43bdb90425", + "name": "AbstractSubstitute", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4066e7da-0dba-4d0b-b74c-c30446ed277e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "b39e436d-47b0-4509-95d6-8a63e2c722d1", + "invariantUUID": "0790aa94-5b47-4100-b26a-4cabd9639698", + "name": "ObjectStorage", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b39e436d-47b0-4509-95d6-8a63e2c722d1/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "94b8f588-624c-4e61-9ead-32aaadd8cf65", + "invariantUUID": "57eecece-2079-4a5d-9627-4fde30434552", + "name": "ContrailNetworkRules", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/94b8f588-624c-4e61-9ead-32aaadd8cf65/toscaModel", + "category": "Generic", + "subCategory": "Rules", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "fa17c264-7f19-4919-a1d4-aab5c53b9c32", + "invariantUUID": "b0a7ddd2-429e-493c-ba05-fe9440b49b54", + "name": "SoftwareComponent", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fa17c264-7f19-4919-a1d4-aab5c53b9c32/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "76ba485f-50a3-480d-895e-5c319191bc11", + "invariantUUID": "cf3ccc9c-b6ea-468e-8eef-f45479978fc1", + "name": "Allotedresource", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/76ba485f-50a3-480d-895e-5c319191bc11/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "1909a305-e032-46ce-9278-c751659958cc", + "invariantUUID": "aa9abf65-5a91-4c6f-814e-47b5fa06ccbd", + "name": "Allotted resource 123456", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/1909a305-e032-46ce-9278-c751659958cc/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VFC", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "64fb42a4-7c3d-415b-afd0-1949abef550a", + "invariantUUID": "3bbcb293-24ff-4370-b46a-9233c92c1469", + "name": "ContrailAbstractSubstitute", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/64fb42a4-7c3d-415b-afd0-1949abef550a/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "c3ed93e4-4955-4100-8f4b-c9472cb3f28f", + "invariantUUID": "29e31a72-10c4-453d-99e6-76e0fe0f7a99", + "name": "Tuesdayvsp.nodes.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c3ed93e4-4955-4100-8f4b-c9472cb3f28f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "a71b3246-b54e-4646-bd6f-d5a11d4878df", + "invariantUUID": "b91e1d84-c9de-4a37-994a-b10949a14004", + "name": "Monitoringvsp.nodes.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a71b3246-b54e-4646-bd6f-d5a11d4878df/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "d36283cc-7d52-4893-8f72-fbffbbe17857", + "invariantUUID": "87802076-8649-4581-a540-b103ab15bd22", + "name": "Application", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d36283cc-7d52-4893-8f72-fbffbbe17857/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "2ef832aa-25f1-4f5a-b6d4-a6ee90011918", + "invariantUUID": "86ed816c-447f-477f-9810-4c07c7356c2e", + "name": "LoadBalancer", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2ef832aa-25f1-4f5a-b6d4-a6ee90011918/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "31060494-0c59-4c15-b4f4-34900d73b803", + "invariantUUID": "4950496e-6e75-47fb-8746-4895887a6d03", + "name": "Compute", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/31060494-0c59-4c15-b4f4-34900d73b803/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "d57e57d2-e3c6-470d-8d16-e6ea05f536c5", + "invariantUUID": "dd31d2de-0a7f-4198-8966-3a04100fbfe3", + "name": "SecurityRules", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d57e57d2-e3c6-470d-8d16-e6ea05f536c5/toscaModel", + "category": "Generic", + "subCategory": "Rules", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "db9360b9-0edb-43e1-8cf0-00bb90b7c2be", + "invariantUUID": "651f273d-7e1d-410c-bd88-cf8c9f713454", + "name": "ContrailV2NetworkRules", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/db9360b9-0edb-43e1-8cf0-00bb90b7c2be/toscaModel", + "category": "Generic", + "subCategory": "Rules", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "503948a9-03bb-4738-8464-c6e21da10792", + "invariantUUID": "477a2abf-10b6-4777-bd50-afdcbbe59d54", + "name": "Vtsbc1.nodes.heat.module_2_perimeta_sw_b_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/503948a9-03bb-4738-8464-c6e21da10792/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e4514d83-9708-427f-a62b-f996e426ba58", + "invariantUUID": "5886b184-53c2-475b-8e75-b38696c10b8a", + "name": "GlobalCompute", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e4514d83-9708-427f-a62b-f996e426ba58/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "3ab24991-cf93-4d40-9468-52d233d36ad6", + "invariantUUID": "fb26e1e2-d7b0-4809-86e6-1ea31c5c6a4a", + "name": "FcgiOs.nodes.heat.modular_1_cgi_frwl_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3ab24991-cf93-4d40-9468-52d233d36ad6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "930aab76-fc52-43dd-8f19-e2ce11503bb5", + "invariantUUID": "f66c1a6b-2ad5-43dd-8cc9-1924f7eaad0f", + "name": "Vtsbc1.nodes.heat.vlan_subinterface_dual", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/930aab76-fc52-43dd-8f19-e2ce11503bb5/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "fca030db-0a4b-4873-94d2-20ea6b8f259f", + "invariantUUID": "124d05ac-8bbc-4510-94d7-c6418ee25864", + "name": "Vtsbc1.nodes.heat.module_2_perimeta_sw_a_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fca030db-0a4b-4873-94d2-20ea6b8f259f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "bc74b1ae-11f7-4550-8c25-e528e749d2ea", + "invariantUUID": "8c0c60ea-b468-4288-9aea-3232b5e7cce7", + "name": "Ronytestcsar.nodes.arb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bc74b1ae-11f7-4550-8c25-e528e749d2ea/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "624a7da1-68ce-4b95-9d50-6a07d645e421", + "invariantUUID": "7ed55927-5274-461f-8ba5-76abdcf609a8", + "name": "Vftest54.nodes.heat.vdns", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/624a7da1-68ce-4b95-9d50-6a07d645e421/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "0c19272a-b2a2-4ffe-a6e7-ce3a683f23fc", + "invariantUUID": "effff7eb-737b-496d-8e23-8e31efe67dc4", + "name": "VmmscEca.nodes.heat.arb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/0c19272a-b2a2-4ffe-a6e7-ce3a683f23fc/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "az2497" + }, + + { + "uuid": "46887197-fec9-4cf5-9207-e6e7f4a6cf3a", + "invariantUUID": "1b8a54a2-b1ff-441c-9c6e-3aa83773e67c", + "name": "VfVolumeGroup.nodes.heat.sm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/46887197-fec9-4cf5-9207-e6e7f4a6cf3a/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "563ca30e-8e6f-4456-b1c0-d1a5b6b052aa", + "invariantUUID": "876fe041-c25a-4e71-bbd3-ce18d1951974", + "name": "1607MogMultiMembersVolume.nodes.heat.sm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/563ca30e-8e6f-4456-b1c0-d1a5b6b052aa/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "2437819c-3f2e-4ae8-9427-b41463a63a21", + "invariantUUID": "6ec6862d-1e49-479b-b792-0b02a26cf9a6", + "name": "VfModule2.nodes.heat.eca_trx", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2437819c-3f2e-4ae8-9427-b41463a63a21/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6", + "invariantUUID": "cdc19c35-bcac-4f78-a7a6-c216b374f5a3", + "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3c9b6ec9-2b6a-4c81-96cd-f3e5c0264ae6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "612317df-67b5-487f-b592-44f5e682b0a9", + "invariantUUID": "3bae7612-b50d-48ed-8ae7-b6f17521395b", + "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/612317df-67b5-487f-b592-44f5e682b0a9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "77b6934c-353e-407e-aa1e-6f1288cb3969", + "invariantUUID": "adb87b9e-4bc2-4e96-8b1a-6176240f02a8", + "name": "VmogVnf1.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/77b6934c-353e-407e-aa1e-6f1288cb3969/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "48a5a370-d91d-4bdd-a1a0-8d82eedcced8", + "invariantUUID": "514ba932-1b32-447b-8655-f3a356047172", + "name": "VfModules.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/48a5a370-d91d-4bdd-a1a0-8d82eedcced8/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "1450f9c2-b491-4ac6-a388-db4e0752a58f", + "invariantUUID": "5dc27c39-2540-4a2c-881c-5dab7859bbe8", + "name": "AppcTest.nodes.heat.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1450f9c2-b491-4ac6-a388-db4e0752a58f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "311a159d-ea0b-494c-97dd-52683df85faf", + "invariantUUID": "3c28e9d7-8ccf-4249-9eab-878d6cd84dfa", + "name": "Ixlt1Os.nodes.heat.its", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/311a159d-ea0b-494c-97dd-52683df85faf/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "4902fae4-7f42-43c5-9472-fe12eca3f510", + "invariantUUID": "60d87328-e9fd-474e-aa3e-791f23e7c0fa", + "name": "VfVolumeGroup.nodes.heat.cm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4902fae4-7f42-43c5-9472-fe12eca3f510/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "a82e5a26-463c-4b17-9d6e-16ea1f8c0dde", + "invariantUUID": "dfd14d20-8d28-4ad1-a824-dd75d282f97b", + "name": "VfVolumeGroup.nodes.heat.ps", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a82e5a26-463c-4b17-9d6e-16ea1f8c0dde/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "d852ce5c-c883-41a1-88f9-167b8b4ff197", + "invariantUUID": "18f3b7e1-3dfe-4299-982a-b510c64fbfba", + "name": "1607MogMultiMembersVolume.nodes.heat.ps", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d852ce5c-c883-41a1-88f9-167b8b4ff197/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "b299bd46-66c1-4954-af45-2fe3188f5c5e", + "invariantUUID": "41aa2e0e-f003-4a03-9e9b-5dbcc968b1df", + "name": "VfModulesVmmsc.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b299bd46-66c1-4954-af45-2fe3188f5c5e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "f80f5252-2ecb-41e3-84d5-936586ae0a3a", + "invariantUUID": "d90ae454-bc1c-44ef-a680-74b6a09d3123", + "name": "VfModules.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f80f5252-2ecb-41e3-84d5-936586ae0a3a/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "9e4b96d7-5701-413e-8461-4cac258365ca", + "invariantUUID": "1a81fcd0-d62c-4ba3-b988-40a1a5986cb0", + "name": "TestPort.nodes.heat.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/9e4b96d7-5701-413e-8461-4cac258365ca/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "4d2bfb6f-9276-447b-b145-7f7856af9a6c", + "invariantUUID": "32a90486-5e0d-4977-b445-a9a165295841", + "name": "VmogVnf1.nodes.heat.pps", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4d2bfb6f-9276-447b-b145-7f7856af9a6c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "a614b20e-9c45-4163-b673-38f0068c5365", + "invariantUUID": "160c57a3-d87f-4f7f-a38a-7ecf6b48d42b", + "name": "Vmmsc.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a614b20e-9c45-4163-b673-38f0068c5365/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "fbad0868-45e9-433b-ada7-070e88c09672", + "invariantUUID": "8242ebe6-8333-4e4a-a997-31a391cbcc1f", + "name": "VmogVnf1.nodes.heat.mba", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fbad0868-45e9-433b-ada7-070e88c09672/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e50cbfd4-a860-441b-b1ff-c654c3222ad6", + "invariantUUID": "03c1f631-d057-4246-b276-2a0e18119a21", + "name": "Pxtc.nodes.heat.mon", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e50cbfd4-a860-441b-b1ff-c654c3222ad6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "21aaf7bf-5af9-4b1a-9850-f4a5e95f185e", + "invariantUUID": "9bc1d654-b663-4170-89f2-e8dabb6d2342", + "name": "VmogVnf1.nodes.heat.ppd", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/21aaf7bf-5af9-4b1a-9850-f4a5e95f185e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "9d4a37d7-3c9b-4dad-abb6-26b50b15da8b", + "invariantUUID": "419651d6-45e9-453a-95cd-4f9f0934fa9c", + "name": "Pxtc.nodes.heat.adm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/9d4a37d7-3c9b-4dad-abb6-26b50b15da8b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "bb8fddbf-e011-4fed-9f36-181478f4e56c", + "invariantUUID": "552c6aa1-0a27-45f7-a0e5-9a380a592ad4", + "name": "TestPort.nodes.heat.fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bb8fddbf-e011-4fed-9f36-181478f4e56c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "2bb496fb-6ede-42e0-957e-bd80fa2e8aa1", + "invariantUUID": "2a6f0a0e-2a76-43d1-9489-3ad4fdf82cdc", + "name": "Runtime", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2bb496fb-6ede-42e0-957e-bd80fa2e8aa1/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "a5226541-363b-4d78-8f52-06d421795457", + "invariantUUID": "3b05cf5e-5120-4aef-a213-f3d984c83efe", + "name": "TestPort.nodes.fe_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a5226541-363b-4d78-8f52-06d421795457/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "f58b4bcf-baec-4c11-a6d0-0e92d4629fd2", + "invariantUUID": "603b02a9-afa2-487b-a8c1-90c84c21d4cf", + "name": "Vpe.nodes.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f58b4bcf-baec-4c11-a6d0-0e92d4629fd2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "30db70cc-17b8-4c39-a848-5f629e9a929e", + "invariantUUID": "2a3100da-581e-438a-915c-3c67ecbe8f9c", + "name": "AppcTest.nodes.fe_0", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/30db70cc-17b8-4c39-a848-5f629e9a929e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "52398d14-90d0-4d3a-ac84-10b525e79e3c", + "invariantUUID": "8f061343-5507-4232-ba34-4933bb2b85d3", + "name": "Fdnt.nodes.heat.mod_vmsi_dnt_fw_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/52398d14-90d0-4d3a-ac84-10b525e79e3c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "d0deff85-ca52-4c86-8ca7-a02deddba983", + "invariantUUID": "c62a62a8-f021-4e22-85b9-45a19ddd8597", + "name": "Vtsbc1.nodes.heat.module_1_perimeta_sw_a_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d0deff85-ca52-4c86-8ca7-a02deddba983/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "25f77df9-f94a-4458-9699-5f483167f700", + "invariantUUID": "8d8675b4-88f8-43ad-aeed-3cb2e96d8f67", + "name": "DBMS", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/25f77df9-f94a-4458-9699-5f483167f700/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "1ce8b11c-589c-4359-9caa-590a43fb53ec", + "invariantUUID": "e4d4a041-38f9-416b-a97d-56eaca20cb88", + "name": "WebServer", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1ce8b11c-589c-4359-9caa-590a43fb53ec/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "f27b3a9c-b815-42fe-83c6-da86c18a63a6", + "invariantUUID": "0d4bec79-e600-4647-a9a6-35d1f1dd0802", + "name": "Fdnt1.nodes.heat.mod_vmsi_dnt_fw_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f27b3a9c-b815-42fe-83c6-da86c18a63a6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "c63814fe-9d50-4283-8229-ede6a5961de9", + "invariantUUID": "b9ffe743-22ae-4bdc-a36a-0fd7cdab97ff", + "name": "Mazav.nodes.heat.mod_vmsi_dnt_fw_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c63814fe-9d50-4283-8229-ede6a5961de9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "23f4bcc5-c6e1-4fdd-b45b-29eb3f82af2f", + "invariantUUID": "62545a84-126c-4563-b72b-7414cb2db617", + "name": "Fdnt1234.nodes.heat.mod_vmsi_dnt_fw_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/23f4bcc5-c6e1-4fdd-b45b-29eb3f82af2f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e63ef8ed-d40d-4b5f-99da-898fbe4b051b", + "invariantUUID": "f747ebd4-8c02-4653-b919-7fd894450970", + "name": "Vtsbc1.nodes.heat.module_1_perimeta_sw_b_child", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e63ef8ed-d40d-4b5f-99da-898fbe4b051b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "292d2d83-c33b-4c22-8341-4401194a6499", + "invariantUUID": "b27f9b4b-2188-4edb-9e05-83680b5462b2", + "name": "VfModules1.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/292d2d83-c33b-4c22-8341-4401194a6499/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "af51c072-1754-4db3-97be-179ab7433295", + "invariantUUID": "b615bc4f-c4e3-4381-9467-f6674f4fe5ce", + "name": "VfModules1.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/af51c072-1754-4db3-97be-179ab7433295/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5ec9fb9f-fa32-48e8-a317-8be839e15d30", + "invariantUUID": "ed2acd41-d9f5-475b-b696-9ff2ac93714e", + "name": "VmmscEca.nodes.arb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5ec9fb9f-fa32-48e8-a317-8be839e15d30/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "az2497" + }, + + { + "uuid": "3a8230f1-dd86-42f8-9d73-c239bc5c74e8", + "invariantUUID": "d7070c39-94e0-48f5-befc-c3b02a2dc1ec", + "name": "VfModulesVmmsc.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3a8230f1-dd86-42f8-9d73-c239bc5c74e8/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5658235d-6a1e-47fe-8e5f-9e081a11b713", + "invariantUUID": "7da4de5f-f610-4b0a-a57f-e76bf05e676e", + "name": "TestPort.nodes.fe_0", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5658235d-6a1e-47fe-8e5f-9e081a11b713/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "d4979513-3719-4076-bbc1-5a4fe040ddc6", + "invariantUUID": "54f5d6e1-0290-473f-b7ef-ae5e31cd9985", + "name": "Vpe.nodes.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d4979513-3719-4076-bbc1-5a4fe040ddc6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "a450b1ba-2d69-44e7-8934-1d21952ba6c9", + "invariantUUID": "350c8017-ab5a-4633-bbe0-e7bbf71f0887", + "name": "TestConsol.nodes.fe_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a450b1ba-2d69-44e7-8934-1d21952ba6c9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "c0bd2a8b-9dc3-4819-8ab1-11175ae06ef1", + "invariantUUID": "427b34d8-ca6d-4c94-8e4f-06d63a1e24eb", + "name": "NovaServer", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c0bd2a8b-9dc3-4819-8ab1-11175ae06ef1/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "5f6ccc29-6f6c-41cf-b995-73c58e7278d2", + "invariantUUID": "044d46c6-e6ae-4569-b7b4-3d0f626612de", + "name": "1607MogMultiMembersVolume.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5f6ccc29-6f6c-41cf-b995-73c58e7278d2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5d6fdb58-1166-41b6-aab7-260e494ccc58", + "invariantUUID": "04c36447-22a8-4039-a7ae-fe134907061e", + "name": "ContrailCompute", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5d6fdb58-1166-41b6-aab7-260e494ccc58/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "jh0003" + }, + + { + "uuid": "57d4264b-3175-4a31-9515-f23c0318930f", + "invariantUUID": "8e3f2465-5f4f-4c9e-9b84-5db3d5d6a3f8", + "name": "VmogVnf1.nodes.heat.pcm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/57d4264b-3175-4a31-9515-f23c0318930f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "dcd62b53-a045-4864-9ed3-aaf722fec10a", + "invariantUUID": "046a066f-8398-4271-aa1a-4ccdd46c892f", + "name": "VfModuleLdsa.nodes.heat.ltm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/dcd62b53-a045-4864-9ed3-aaf722fec10a/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "aa00977d-ff67-473a-acb8-bb24db037a0b", + "invariantUUID": "989ae5c8-e9b9-4e14-b609-1fde2ad4e165", + "name": "TestConsol.nodes.fe_0", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/aa00977d-ff67-473a-acb8-bb24db037a0b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "cb08bf67-6fc9-44ae-ae31-ab619cfd94af", + "invariantUUID": "7555d6be-ef04-4812-b58c-b00eda9e1a1b", + "name": "AppcTest.nodes.fe_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/cb08bf67-6fc9-44ae-ae31-ab619cfd94af/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "cc3a0064-e9d4-421e-ba14-ce340adb7ed9", + "invariantUUID": "341b0751-e9b7-4f80-935e-30aef979ea71", + "name": "VfModules.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/cc3a0064-e9d4-421e-ba14-ce340adb7ed9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "1f927980-bd8d-4a0c-8002-8f550e52efbe", + "invariantUUID": "d9f0237f-acaa-411f-843c-952d4d746d9f", + "name": "Vmmsc.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1f927980-bd8d-4a0c-8002-8f550e52efbe/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "6d1669d1-be78-47e7-aed4-d5a2267c81d4", + "invariantUUID": "b2a066b5-0062-482a-af23-9e1426f7d388", + "name": "VfVolumeGroup.nodes.heat.pd", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/6d1669d1-be78-47e7-aed4-d5a2267c81d4/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "bd9e5061-40dc-42ca-8d77-c606a24c8bfd", + "invariantUUID": "a8cf5282-4c83-4540-8515-c315328af01d", + "name": "VfNoLicense.nodes.pcm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bd9e5061-40dc-42ca-8d77-c606a24c8bfd/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "68ea026e-c604-47b5-9cd1-524a58714a14", + "invariantUUID": "d0aa37ea-a1f8-41dc-9b5f-7e54f4d7a2f3", + "name": "VfNoLicense.nodes.pps", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/68ea026e-c604-47b5-9cd1-524a58714a14/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "bc3a8aae-7f94-4dac-b819-d37a077a08fc", + "invariantUUID": "0df5de75-3a9e-439a-8d03-e989ca7bfe16", + "name": "ScpTestVsp.nodes.fe_0", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bc3a8aae-7f94-4dac-b819-d37a077a08fc/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "8ba3f710-58d4-4d60-9384-1dad449d381a", + "invariantUUID": "4a34455c-b9c0-48ca-90ac-debf986ac028", + "name": "VfDemor.nodes.vmx_vre", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/8ba3f710-58d4-4d60-9384-1dad449d381a/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "0a09e932-9fde-4e52-b7e3-2e542b61faa0", + "invariantUUID": "dd97be59-be12-4749-b8ca-1bf0d7336573", + "name": "ScpTestVsp.nodes.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/0a09e932-9fde-4e52-b7e3-2e542b61faa0/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "fa6ca25b-4578-4093-b8a2-031cb8f1f481", + "invariantUUID": "c88282f0-608d-4aef-b12f-dda9474f55f9", + "name": "VscpaasTest2.nodes.fe_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fa6ca25b-4578-4093-b8a2-031cb8f1f481/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "f11a8681-ab58-4f0d-8387-76ecdfa31073", + "invariantUUID": "2a94a311-f6bb-48b6-a458-e4b1a724bfc7", + "name": "VscpaasTest2.nodes.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f11a8681-ab58-4f0d-8387-76ecdfa31073/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "4b1cca9b-23a0-4037-aaf3-ce5cd7c91851", + "invariantUUID": "98e3949f-1047-4cd8-9b8b-6b6c55d51f74", + "name": "Vprobe.nodes.vLBAgent", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4b1cca9b-23a0-4037-aaf3-ce5cd7c91851/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "17ed7b78-1ffb-4864-a2ec-b6666a5fed16", + "invariantUUID": "2a6de403-c5b7-44ea-a398-ae78d53fb31a", + "name": "VpeAvRenana.nodes.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/17ed7b78-1ffb-4864-a2ec-b6666a5fed16/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "ab89b69b-b92b-4e34-b1db-a6378d709241", + "invariantUUID": "dbb9b18d-e3ea-48cf-bcbd-81d8d4b22d72", + "name": "Vmmsc.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ab89b69b-b92b-4e34-b1db-a6378d709241/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "d45694e4-ed86-4a44-a644-5a8a3ff89397", + "invariantUUID": "3eb4d8e0-2b85-4b74-bad3-2e4406f50d4d", + "name": "VfModules1.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d45694e4-ed86-4a44-a644-5a8a3ff89397/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5c7fd7c0-fc79-4309-bb03-85388cae45a8", + "invariantUUID": "7ff3e308-cf42-47ae-afc3-ecd5ef9823c0", + "name": "VmmscEca.nodes.heat.eca", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5c7fd7c0-fc79-4309-bb03-85388cae45a8/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "az2497" + }, + + { + "uuid": "f739ea35-7bd4-42ed-b9ee-1e0fd2017c72", + "invariantUUID": "ce4127ef-2564-40e6-b62e-6be7758f46a7", + "name": "Pxtc.nodes.heat.ddc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f739ea35-7bd4-42ed-b9ee-1e0fd2017c72/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "f2339431-f3ab-41c9-90c4-6c2c958e1b06", + "invariantUUID": "40ab991d-ad0c-4adb-9f2a-0f2eef8bb880", + "name": "VfModules1.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f2339431-f3ab-41c9-90c4-6c2c958e1b06/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "15728e01-7076-4765-8002-95154ad29d5f", + "invariantUUID": "9814209f-7b9d-4b21-8968-f6a3638b107c", + "name": "1607Mog.nodes.heat.cm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/15728e01-7076-4765-8002-95154ad29d5f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "ab168037-e654-4990-a188-e5d2f25a8768", + "invariantUUID": "ef673ad3-2d81-47b7-99c2-bdc69ae79d80", + "name": "Vcts3.nodes.heat.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ab168037-e654-4990-a188-e5d2f25a8768/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "e1d7eb6a-646d-4906-9981-44ed892dc01c", + "invariantUUID": "78245f38-b99a-49a8-ac5b-56737ad686db", + "name": "VfModulesVmmsc.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e1d7eb6a-646d-4906-9981-44ed892dc01c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "74c527c6-edb7-4bbe-a63c-d2daf5a12db0", + "invariantUUID": "18bc94d2-2be1-46e9-bd70-ded327b1324e", + "name": "VfModule2.nodes.heat.mmsc", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/74c527c6-edb7-4bbe-a63c-d2daf5a12db0/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "345459d0-ba42-45ba-9eb0-cc56e4f35ea9", + "invariantUUID": "5362b258-b867-4e98-a3c4-138c6d444c69", + "name": "VfModule2.nodes.heat.nems_be", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/345459d0-ba42-45ba-9eb0-cc56e4f35ea9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "bc40b750-56ab-4c6b-8e15-412f9be0178f", + "invariantUUID": "ab769637-063f-41fd-927d-771a1913235b", + "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bc40b750-56ab-4c6b-8e15-412f9be0178f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "3ff3d87f-c55f-4b4c-a8ae-29931d910359", + "invariantUUID": "5af2c63a-1b3e-42a5-ab4b-07e97d1dcbd2", + "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3ff3d87f-c55f-4b4c-a8ae-29931d910359/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "2c8f1219-8000-4001-aa13-496a0396d40f", + "invariantUUID": "096ff622-d7ea-4482-b7fe-8c7d99e7d7c6", + "name": "CLAMP-Dev-nodes.virc_fe_be_1", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2c8f1219-8000-4001-aa13-496a0396d40f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "d8a2de8a-27d8-491c-bbb9-da779a4da7c6", + "invariantUUID": "0b4d158e-c20e-4630-b515-3ecda2ad05a4", + "name": "VfModules.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d8a2de8a-27d8-491c-bbb9-da779a4da7c6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "d544d6a6-4fcc-42db-97f6-e8cccc69c5ee", + "invariantUUID": "cd4a433e-cf76-4652-a6b8-59e657e0c5a0", + "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d544d6a6-4fcc-42db-97f6-e8cccc69c5ee/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5d6e7129-d7c8-41b8-ae2a-5f1688162c7c", + "invariantUUID": "350d9877-894a-4ce4-a899-48df9428ff88", + "name": "Vieccf.nodes.heat.iox", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5d6e7129-d7c8-41b8-ae2a-5f1688162c7c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "fcc6655e-7074-48de-89ef-ef6e4a5705e3", + "invariantUUID": "6dd080e4-372c-44cc-8c25-868d45f2e959", + "name": "VfModule2.nodes.heat.nems_fe", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fcc6655e-7074-48de-89ef-ef6e4a5705e3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "400cab12-2d1e-4a2c-a33a-d9d7b3262dd1", + "invariantUUID": "9ebca51b-16d0-423c-8e5f-4472c1888029", + "name": "VmogVnf1.nodes.heat.mbt", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/400cab12-2d1e-4a2c-a33a-d9d7b3262dd1/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "a068d0c0-06c6-4b58-bc99-6ac910700edb", + "invariantUUID": "f2e37302-fd97-48d7-bbdb-f0caaab5fe03", + "name": "1607Mog.nodes.heat.pd", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a068d0c0-06c6-4b58-bc99-6ac910700edb/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "c2e88763-87a9-4d33-b598-7811ae3f87d2", + "invariantUUID": "9d16cf01-c244-42c8-bcfe-faf108069e84", + "name": "VfModulesVmmsc.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c2e88763-87a9-4d33-b598-7811ae3f87d2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "de861add-3f4a-4526-9754-8bcb69d0fd0e", + "invariantUUID": "67560771-ffcb-46fb-a40c-0e1dee74f43a", + "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/de861add-3f4a-4526-9754-8bcb69d0fd0e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "4514b4e5-f163-4011-87fd-445f4366e3c2", + "invariantUUID": "91c638ef-49f5-4366-8749-cda8a33ed41e", + "name": "VfModules.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4514b4e5-f163-4011-87fd-445f4366e3c2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "3679d10e-a1a2-46a4-97b3-4056a0920e7b", + "invariantUUID": "d272aa71-398a-4eff-ab00-6a4281b41c92", + "name": "Pxtc.nodes.heat.mda", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3679d10e-a1a2-46a4-97b3-4056a0920e7b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "f905ca32-dac5-4337-a1d7-cc2bca86b407", + "invariantUUID": "acbb7a13-7ae7-4ac7-b0e4-23314cbc65e2", + "name": "Vmmsc.nodes.heat.mmsc", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f905ca32-dac5-4337-a1d7-cc2bca86b407/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "ee10af8a-c8bf-4455-808e-5550050d4ea9", + "invariantUUID": "e74db59b-72fb-4734-9d48-40d8c47d292a", + "name": "VfModulesVmmsc.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ee10af8a-c8bf-4455-808e-5550050d4ea9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "771ca169-bfac-4306-9748-b2ae804852f9", + "invariantUUID": "ae627e8b-374b-41ac-9efb-25672099c7dd", + "name": "Vscp0502.nodes.heat.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/771ca169-bfac-4306-9748-b2ae804852f9/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "72682bb7-94ca-47a7-9917-826f62e3d00d", + "invariantUUID": "7bb2f20e-10af-485b-9c7c-9fba2c016856", + "name": "1607Mog.nodes.heat.sm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/72682bb7-94ca-47a7-9917-826f62e3d00d/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "1fa641db-1d77-4242-8d0b-c0aa5f88fe2e", + "invariantUUID": "22464824-fcbe-4760-9aa7-f2d110e5c0f8", + "name": "1607MogMultiMembersVolume.nodes.heat.cm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1fa641db-1d77-4242-8d0b-c0aa5f88fe2e/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "897dcb54-bb55-4311-8c0e-b663781d7e4f", + "invariantUUID": "c223adda-e48d-487d-98e8-654bbb8268af", + "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.lb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/897dcb54-bb55-4311-8c0e-b663781d7e4f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "a60c5230-8201-4b50-84a8-c905128c2bc2", + "invariantUUID": "59399b2e-66ed-4823-aa27-189fdb466045", + "name": "AppcTest.nodes.heat.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/a60c5230-8201-4b50-84a8-c905128c2bc2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "173c32b5-44c8-4404-ba18-32d9de49afae", + "invariantUUID": "c247493b-15a4-47af-bb6b-c664cb5a4d37", + "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/173c32b5-44c8-4404-ba18-32d9de49afae/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "59aa2d42-db52-438c-a69c-0b97a193abcd", + "invariantUUID": "31fc926f-cfc5-42bd-8955-42e68c113902", + "name": "TestConsol.nodes.heat.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/59aa2d42-db52-438c-a69c-0b97a193abcd/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "0e6509c9-7d35-4daf-9086-9fe30fdd1275", + "invariantUUID": "9516ad03-b122-4738-ad6d-d9c2166cd75a", + "name": "VmmscAic30MultiMembersMultiGroupsVolume.nodes.heat.nems_fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/0e6509c9-7d35-4daf-9086-9fe30fdd1275/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e541a64c-9de7-4c71-b827-eb0f4d319e62", + "invariantUUID": "9952957d-d266-406e-ab7d-23a7fc154ea0", + "name": "1607MogMultiMembersVolume.nodes.heat.pd", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e541a64c-9de7-4c71-b827-eb0f4d319e62/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "5e448cd9-6dbd-4c31-98f2-caeceaf5efa7", + "invariantUUID": "3a97ded5-e8fc-42fa-b244-a6f91b610e08", + "name": "VfModule2.nodes.heat.lb", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5e448cd9-6dbd-4c31-98f2-caeceaf5efa7/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "d5c6a462-9d9a-46d4-a0b2-485300f34f0c", + "invariantUUID": "635abeeb-d903-44a8-9135-5d26e1ee41a1", + "name": "VmogVnf1.nodes.heat.psm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d5c6a462-9d9a-46d4-a0b2-485300f34f0c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "8678abfe-8cbd-42f2-aa78-ca47a1beaa14", + "invariantUUID": "4d02c8a5-e141-4d01-94ec-7a3b94afda97", + "name": "VmmscAic30MultiMembersMultiGroupsVolumeCs.nodes.heat.eca_trx", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/8678abfe-8cbd-42f2-aa78-ca47a1beaa14/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "1c469da0-298f-41ea-94a2-aef82264e1e7", + "invariantUUID": "91530a04-e1f6-4242-abd2-f20630e1fa8f", + "name": "1607Mog.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1c469da0-298f-41ea-94a2-aef82264e1e7/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "c29e22e2-1a09-4164-a9a2-72d0e3f5df5b", + "invariantUUID": "a0e5c360-f0e7-4b8d-ac97-969b9dc5b187", + "name": "Vmmsc.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c29e22e2-1a09-4164-a9a2-72d0e3f5df5b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "986b76dc-aca7-45b1-919c-398b770d5504", + "invariantUUID": "cd2f22e1-e21e-474b-a506-1bb4365aa106", + "name": "AppcTest.nodes.heat.fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/986b76dc-aca7-45b1-919c-398b770d5504/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "606f6c2b-a411-4644-a183-5487e3aed612", + "invariantUUID": "d67b05d1-119c-47a3-8b20-2babb53b42b3", + "name": "Vpe.nodes.heat.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/606f6c2b-a411-4644-a183-5487e3aed612/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "00695bbf-fa3f-47e4-96d7-973700a66f4f", + "invariantUUID": "d26ce6ce-b1f8-4cdc-955d-e2272563cff6", + "name": "TestPort.nodes.heat.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/00695bbf-fa3f-47e4-96d7-973700a66f4f/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "d94275b4-ccfa-4096-bd7b-dd45ff6e84f2", + "invariantUUID": "56a1b1c7-6a6f-402b-890f-8e3a1cc56feb", + "name": "Vieccf.nodes.heat.plt", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d94275b4-ccfa-4096-bd7b-dd45ff6e84f2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "8beb2fe4-672e-46c3-8650-e2065ea429ea", + "invariantUUID": "be756449-fd9d-4889-83ad-41ff26a82f09", + "name": "Pxtc.nodes.heat.mts", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/8beb2fe4-672e-46c3-8650-e2065ea429ea/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "c4b4f162-a616-45c6-b229-9833a78a46fd", + "invariantUUID": "b502eeb1-091c-41cf-b4ba-52f9ab6ecfcc", + "name": "Vpe.nodes.heat.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c4b4f162-a616-45c6-b229-9833a78a46fd/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "95e982cd-551d-49b2-9600-04f1328b9ab5", + "invariantUUID": "26813b60-5437-4780-aaaa-9705b9d30357", + "name": "TestConsol.nodes.heat.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/95e982cd-551d-49b2-9600-04f1328b9ab5/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "8316c6e3-7791-42cb-80fb-e57ed0809be6", + "invariantUUID": "5ca065b5-c2e3-4561-9dc6-58fc84c8398c", + "name": "Vscp0502.nodes.heat.smp", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/8316c6e3-7791-42cb-80fb-e57ed0809be6/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "49cc354b-ea2e-48a9-a6b8-d414e6991898", + "invariantUUID": "b94ec614-4972-4355-ab2f-3c7068714581", + "name": "Ronytestcsar.nodes.heat.arb", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/49cc354b-ea2e-48a9-a6b8-d414e6991898/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "cc0048fb-a464-4407-9907-5e760684bc7b", + "invariantUUID": "06aff944-cdab-42cd-a5a3-f2c2c65df4b2", + "name": "TestConsol.nodes.heat.fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/cc0048fb-a464-4407-9907-5e760684bc7b/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "bc1dea1b-5753-4d17-af6f-ac6050b3e281", + "invariantUUID": "76d0ef26-6721-4f11-ba1a-04c93e7154c3", + "name": "Vieccf.nodes.heat.app", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bc1dea1b-5753-4d17-af6f-ac6050b3e281/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "0b894e43-6d45-4c3d-95dd-2e80228055f3", + "invariantUUID": "ca679ac7-9d4b-4da1-8912-a262c5599692", + "name": "VfVolumeGroup.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/0b894e43-6d45-4c3d-95dd-2e80228055f3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "2bb1e047-fa3b-41f5-9d29-ebbdbf01857c", + "invariantUUID": "988032f2-873e-4273-9075-17ffd47f0a7f", + "name": "VfModules1.nodes.heat.nems_be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2bb1e047-fa3b-41f5-9d29-ebbdbf01857c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "05c82d0d-826b-458c-8c81-9572298522a3", + "invariantUUID": "6e577da6-377d-46fb-84c0-3bfa4778062f", + "name": "Vscp0502.nodes.heat.fe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/05c82d0d-826b-458c-8c81-9572298522a3/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "c6809100-9349-4f98-a066-55b6f0cb8650", + "invariantUUID": "4d48d18e-baa3-41bb-8a07-3c553db1fbab", + "name": "Ronytestcsar.nodes.heat.eca", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c6809100-9349-4f98-a066-55b6f0cb8650/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "abe50ede-b86c-415f-9f5f-235200433b51", + "invariantUUID": "c3cbaff7-a657-44d5-a0b3-cc65599b4fa8", + "name": "Csartest.nodes.heat.ltm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/abe50ede-b86c-415f-9f5f-235200433b51/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ss8214" + }, + + { + "uuid": "3ce1be04-57ad-4deb-bdba-b18447374a88", + "invariantUUID": "b08eef7d-1dd5-4996-9171-7822b48e9a9d", + "name": "Vprobe.nodes.qrouter", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3ce1be04-57ad-4deb-bdba-b18447374a88/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "f6406bba-b64c-4211-aaee-773cde6e7d54", + "invariantUUID": "490345fc-f6fe-49a6-b18d-6dcacca02a7e", + "name": "VscpaasTest2.nodes.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f6406bba-b64c-4211-aaee-773cde6e7d54/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "d48751e4-07de-4208-9307-7ecb775fe7ca", + "invariantUUID": "ca0ae539-78d1-461a-a7ff-3dd663c85e2d", + "name": "pnf-test", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d48751e4-07de-4208-9307-7ecb775fe7ca/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "cdb99a41-e2ee-4b59-9107-13f0b2282ccc", + "invariantUUID": "6a828e59-cbee-4dc2-aa67-ee35a6eafd50", + "name": "Dev2devnfod.nodes.VF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/cdb99a41-e2ee-4b59-9107-13f0b2282ccc/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "99b9dce6-ed85-4d76-aed9-40c020ba4607", + "invariantUUID": "c9e5dab6-eba5-4cc2-abff-305f8f508da1", + "name": "py-port-test", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/99b9dce6-ed85-4d76-aed9-40c020ba4607/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "acf4e0fa-17f9-4ac8-9fb2-2301cf942fcf", + "invariantUUID": "02cd4db0-a29b-4318-9b3b-a123b9103b85", + "name": "VfNoLicense.nodes.ppd", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/acf4e0fa-17f9-4ac8-9fb2-2301cf942fcf/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "fb6a8f39-84be-49a2-b551-26ce99ee6853", + "invariantUUID": "501e3f78-ae62-4551-bc47-a9afa8f29034", + "name": "ScpTestVsp.nodes.be", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fb6a8f39-84be-49a2-b551-26ce99ee6853/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "b09ec9ff-af66-4bdc-82d4-01a918e8e3ca", + "invariantUUID": "02d284b6-feb3-4762-be9b-8f6955f6b0b9", + "name": "SdWanTestVsp.nodes.DUMMY_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b09ec9ff-af66-4bdc-82d4-01a918e8e3ca/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "83256b0a-cb38-45de-b5f0-d2d4390f543d", + "invariantUUID": "c291bec4-fe31-4e6d-9126-f5ce104b84d1", + "name": "Sangeetha.nodes.vCTS_server", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/83256b0a-cb38-45de-b5f0-d2d4390f543d/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "16ba1289-5f91-4f07-914a-d2456d11c673", + "invariantUUID": "aafce2ad-8d15-4f53-88f5-9b3a1662f14e", + "name": "VpeAvRenana.nodes.vmx_vpfe", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/16ba1289-5f91-4f07-914a-d2456d11c673/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "93fe78c8-1350-4b1f-ac5f-ede411b992a0", + "invariantUUID": "a11f76ed-0f0a-4093-9c94-5f5eb6c450b5", + "name": "VfNoLicense.nodes.psm", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/93fe78c8-1350-4b1f-ac5f-ede411b992a0/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "1e5eafc0-1888-4247-9762-9ebd1383d0ae", + "invariantUUID": "076ddfc3-8a9d-4289-b71e-a707d359b149", + "name": "VnfcVspTest.nodes.heat.oam", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1e5eafc0-1888-4247-9762-9ebd1383d0ae/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "01faf05a-70b9-442f-be62-9884ea4cdf33", + "invariantUUID": "cd5937cc-37ef-4a85-ba10-2568628d4c1b", + "name": "VfDemor.nodes.vmx_vpfe", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/01faf05a-70b9-442f-be62-9884ea4cdf33/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "4583652c-e066-4a5c-88b8-fbcdd8619d2c", + "invariantUUID": "216e59ce-6940-4085-949e-9b47d9756383", + "name": "VfDemor.nodes.heat.vmx_vre", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4583652c-e066-4a5c-88b8-fbcdd8619d2c/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "16f02038-00f6-4a11-ab98-2a2154e98924", + "invariantUUID": "479cf5fc-8df3-49ec-9e85-da7899420b61", + "name": "VscpaasTest2.nodes.fe_0", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/16f02038-00f6-4a11-ab98-2a2154e98924/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VFC", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + } +] \ No newline at end of file diff --git a/src/test/resources/example/sdc/sdcVFResources.json b/src/test/resources/example/sdc/sdcVFResources.json new file mode 100644 index 00000000..a8f32195 --- /dev/null +++ b/src/test/resources/example/sdc/sdcVFResources.json @@ -0,0 +1,1574 @@ +[ + { + "uuid": "585822c7-4027-4f84-ba50-e9248606f136", + "invariantUUID": "585822c7-4027-4f84-ba50-e9248606f134", + "name": "resourceName-1", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/585822c7-4027-4f84-ba50-e9248606f136/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "56389a7d-86db-49e1-aada-62aebf023f23", + "invariantUUID": "18a2c267-50a9-42ae-a3ec-4d55dd6df225", + "name": "shayVF", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/56389a7d-86db-49e1-aada-62aebf023f23/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ss8214" + }, + + { + "uuid": "2ce2fe72-7f8d-4184-87e6-5fd7aa650acd", + "invariantUUID": "9aa658ae-8f6d-49bc-810d-8a544d6b12f2", + "name": "Dev2DevNFODVf_17_July", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2ce2fe72-7f8d-4184-87e6-5fd7aa650acd/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sw594b" + }, + + { + "uuid": "ae841bc4-6534-4d12-b8a4-ddd07a062a7e", + "invariantUUID": "926f6d60-bf84-46c4-9ed7-f0bb774e5184", + "name": "Sangeetha", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/ae841bc4-6534-4d12-b8a4-ddd07a062a7e/toscaModel", + "category": "DCAE Component", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "ss8214" + }, + + { + "uuid": "0c940638-618b-450e-aa99-b991a3200d1a", + "invariantUUID": "2d4d1e44-14f7-41e0-a37a-f8a6507c86f6", + "name": "Eli", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/0c940638-618b-450e-aa99-b991a3200d1a/toscaModel", + "category": "Allotted Resource", + "subCategory": "Contrail Route", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "el489u" + }, + + { + "uuid": "91854bc8-534f-4249-899c-bbdc06f83436", + "invariantUUID": "5e9c180a-44f1-45ce-a7bc-95b493ae9fd3", + "name": "CLAMP-Dev", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/91854bc8-534f-4249-899c-bbdc06f83436/toscaModel", + "category": "Generic", + "subCategory": "Network Elements", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "168b696d-8ed5-41ff-8158-b8adadfcedfa", + "invariantUUID": "9429f628-f58d-492e-aa97-de9bd9f98043", + "name": "ariel_test_vf001", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/168b696d-8ed5-41ff-8158-b8adadfcedfa/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "290603da-0c41-4120-b737-f800c6031a58", + "invariantUUID": "f22a9390-6d25-4fa7-a1dd-8d0121f6aacf", + "name": "VF-example", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/290603da-0c41-4120-b737-f800c6031a58/toscaModel", + "category": "Network L2-3", + "subCategory": "LAN Connectors", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "271b4961-e4dc-42d5-8c0c-4da8685973ac", + "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d", + "name": "vf_AR", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/271b4961-e4dc-42d5-8c0c-4da8685973ac/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "b109217b-c959-4228-b30d-8f376668174c", + "invariantUUID": "5d616289-3563-48d8-b41a-15a633d5f03c", + "name": "Map Microservice", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/b109217b-c959-4228-b30d-8f376668174c/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "44b0a91c-8d63-4304-a637-2eda78a86023", + "invariantUUID": "9b2e7539-b183-4a59-82ea-842494fe19e0", + "name": "enrich snmp", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/44b0a91c-8d63-4304-a637-2eda78a86023/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "418a2ea5-6a8a-4498-9d0f-602a809552d6", + "invariantUUID": "58d0e85f-3161-47c9-981d-3cbcf1be56b6", + "name": "renana", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/418a2ea5-6a8a-4498-9d0f-602a809552d6/toscaModel", + "category": "Application L4+", + "subCategory": "Media Servers", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "13ae8064-344f-4d67-acd2-810516927f48", + "invariantUUID": "69b75e6e-a839-4a91-93d7-821610517cb5", + "name": "Dror1", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/13ae8064-344f-4d67-acd2-810516927f48/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "6510ee54-2ccb-406c-a006-8a67b589eecd", + "invariantUUID": "2ef1c565-6a85-424e-80ab-8efe14fefe9f", + "name": "SD-WAN-Test-VSP", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/6510ee54-2ccb-406c-a006-8a67b589eecd/toscaModel", + "category": "Network L2-3", + "subCategory": "WAN Connectors", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "c3c0a9e1-bcda-4b46-a7d6-3916ea3fc1ca", + "invariantUUID": "21052af3-0f73-4f82-af68-03123ed49d41", + "name": "rrrr", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c3c0a9e1-bcda-4b46-a7d6-3916ea3fc1ca/toscaModel", + "category": "Allotted Resource", + "subCategory": "IP Mux Demux", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ys278k" + }, + + { + "uuid": "10b535db-b01b-4a4b-aeef-97423d2d2093", + "invariantUUID": "761ed279-e5ff-43e2-8a05-b160224b7f54", + "name": "StringMatchingMS", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/10b535db-b01b-4a4b-aeef-97423d2d2093/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "5ea777fc-a3fe-4688-aefd-b1297bd36381", + "invariantUUID": "6d1eb2c8-ae57-4d32-bd63-b47fd503aafb", + "name": "map snmp", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/5ea777fc-a3fe-4688-aefd-b1297bd36381/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "8d366342-8cfa-431b-82ca-013f7f06af50", + "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d", + "name": "vf_AR", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/8d366342-8cfa-431b-82ca-013f7f06af50/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "CERTIFICATION_IN_PROGRESS", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "a804fb4e-33ce-4000-963f-d270a0593de2", + "invariantUUID": "6eb4b1ca-75ac-454b-a145-1ea27157bfac", + "name": "IP_Mux_Demux", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/a804fb4e-33ce-4000-963f-d270a0593de2/toscaModel", + "category": "Allotted Resource", + "subCategory": "IP Mux Demux", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "le056g" + }, + + { + "uuid": "9bed9e17-7bfa-4a92-9474-3bcf7187e206", + "invariantUUID": "853a6d9a-3004-462c-9142-631eb777a16c", + "name": "newShayVFMCT", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/9bed9e17-7bfa-4a92-9474-3bcf7187e206/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ss8214" + }, + + { + "uuid": "cae08b64-2784-4883-8dd0-747f6ebb94c4", + "invariantUUID": "3d51584c-aa2e-454a-a17a-970b51bbd668", + "name": "VES Collector Lisa", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/cae08b64-2784-4883-8dd0-747f6ebb94c4/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "lr0306" + }, + + { + "uuid": "d06b73ef-b908-44cd-8c17-11f1366c4f93", + "invariantUUID": "0ad06008-5ecc-4a24-a123-74fc23d7bf89", + "name": "shaytookmyvf", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/d06b73ef-b908-44cd-8c17-11f1366c4f93/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "11ff4510-008f-4818-87aa-d22e1b26d03e", + "invariantUUID": "5d138333-7a0f-432b-ad74-009a308c91c5", + "name": "VF- DemoR", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/11ff4510-008f-4818-87aa-d22e1b26d03e/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "0ff82855-b0aa-4b0d-8451-82aa978ae4d5", + "invariantUUID": "9aa658ae-8f6d-49bc-810d-8a544d6b12f2", + "name": "Dev2DevNFODVf_17_July", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/0ff82855-b0aa-4b0d-8451-82aa978ae4d5/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "77d7e04f-89db-405f-ad53-8c2cc5bc721c", + "invariantUUID": "f632a0f0-d568-40aa-9342-341d603891e1", + "name": "vf_test", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/77d7e04f-89db-405f-ad53-8c2cc5bc721c/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "17dbd4a7-6c4d-4064-857e-8cbbc8303ed5", + "invariantUUID": "f632a0f0-d568-40aa-9342-341d603891e1", + "name": "vf_test", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/17dbd4a7-6c4d-4064-857e-8cbbc8303ed5/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "2c2fcf53-43af-41f4-8fec-0c729ca3cb4c", + "invariantUUID": "fc9af990-1ec6-4969-bd0d-973ae1ceba6f", + "name": "supplement snmp", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2c2fcf53-43af-41f4-8fec-0c729ca3cb4c/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "57cc5cac-15a0-4c39-aff4-426930e55057", + "invariantUUID": "b0d77932-dadd-4bde-82c9-0bcc367cb81c", + "name": "Dev2DevIpAssign_24_07", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/57cc5cac-15a0-4c39-aff4-426930e55057/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "4859989b-5663-4ff5-ab2e-68b7bd1e43c2", + "invariantUUID": "489220ac-8a2f-44b8-97a3-12af3280aa0e", + "name": "Cognitor", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/4859989b-5663-4ff5-ab2e-68b7bd1e43c2/toscaModel", + "category": "Generic", + "subCategory": "Abstract", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "sj2381" + }, + + { + "uuid": "5de1a119-461f-4ff4-8aa6-6f194e79e861", + "invariantUUID": "de9c75f4-7cc1-4a9c-8642-4fa9ee730bd2", + "name": "sang_vsp", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/5de1a119-461f-4ff4-8aa6-6f194e79e861/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "af1041a9-0879-4fc1-9b62-42cf3eda5feb", + "invariantUUID": "4ed98cc2-22af-40c9-a031-86998cc12838", + "name": "FOI collector", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/af1041a9-0879-4fc1-9b62-42cf3eda5feb/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "271b4961-e4dc-42d5-8c0c-4da8685973ac", + "invariantUUID": "822e9970-a3fd-4d62-8f00-5819323cb54d", + "name": "vf_AR", + "version": "2.1", + "toscaModelURL": "/sdc/v1/catalog/resources/271b4961-e4dc-42d5-8c0c-4da8685973ac/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "CERTIFICATION_IN_PROGRESS", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "bdc9b09f-246e-407f-9ccd-313a240ced95", + "invariantUUID": "1b6e3f8e-c8e2-4e66-8d44-8c7186c6eb14", + "name": "VFTest5.4", + "version": "0.3", + "toscaModelURL": "/sdc/v1/catalog/resources/bdc9b09f-246e-407f-9ccd-313a240ced95/toscaModel", + "category": "Allotted Resource", + "subCategory": "Tunnel XConnect", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "bbc70754-b046-4d8b-9ba5-1d4e96180788", + "invariantUUID": "c8e4743e-f7bd-4f04-8b7d-270f2de46c34", + "name": "VNFC_VSP_Test", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/bbc70754-b046-4d8b-9ba5-1d4e96180788/toscaModel", + "category": "Network Connectivity", + "subCategory": "Virtual Links", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "7cb8a6c7-c4fb-4d46-9233-8b247bd70124", + "invariantUUID": "f607e055-7af8-470d-86d3-1e2236c1c5b9", + "name": "syslog", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/7cb8a6c7-c4fb-4d46-9233-8b247bd70124/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "ce7f92a3-d5a8-4830-b1f9-72d32ff0f2bc", + "invariantUUID": "b0d77932-dadd-4bde-82c9-0bcc367cb81c", + "name": "Dev2DevIpAssign_24_07", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ce7f92a3-d5a8-4830-b1f9-72d32ff0f2bc/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sw594b" + }, + + { + "uuid": "f721bc81-be73-4fe5-90ab-ac9544916b74", + "invariantUUID": "5ebab19c-76ab-4310-96c1-64ab03ae7f08", + "name": "New_vendor_mdns", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/f721bc81-be73-4fe5-90ab-ac9544916b74/toscaModel", + "category": "Generic", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "6b934b9d-0785-4b46-8321-943a12b8031b", + "invariantUUID": "785012c2-fdd8-450d-8fa2-81ff60e25f1e", + "name": "vMMSC_AIC3.0__multi_members_multi_groups_volume.cs", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/6b934b9d-0785-4b46-8321-943a12b8031b/toscaModel", + "category": "Application L4+", + "subCategory": "Media Servers", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "715426cc-acea-4dd9-9bbe-d338d40b0884", + "invariantUUID": "0879d8ba-7207-4ec4-9cc7-2eb695ef6876", + "name": "vmme_1710", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/715426cc-acea-4dd9-9bbe-d338d40b0884/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "04addafc-2e5e-4381-8698-79a26acd5825", + "invariantUUID": "d348d94a-b49f-42ad-a5a2-6f94ebf58b75", + "name": "AVCXSADDAS", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/04addafc-2e5e-4381-8698-79a26acd5825/toscaModel", + "category": "Allotted Resource", + "subCategory": "IP Mux Demux", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "yy815m" + }, + + { + "uuid": "3962491f-c310-4a24-9f13-291d2acf2f08", + "invariantUUID": "5d138333-7a0f-432b-ad74-009a308c91c5", + "name": "VF- DemoR", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/3962491f-c310-4a24-9f13-291d2acf2f08/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "CERTIFICATION_IN_PROGRESS", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "191128bc-1756-469b-8973-fcc6236c72c1", + "invariantUUID": "c1fae22d-0fdb-42fe-96a7-822f19503f1b", + "name": "Scp-tempalte-test", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/191128bc-1756-469b-8973-fcc6236c72c1/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "READY_FOR_CERTIFICATION", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "9a4c7c75-b54b-4240-b3bf-2ead9b7427d1", + "invariantUUID": "b595ea39-21e7-4fee-aedb-ef68506d581d", + "name": "test-VF", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/9a4c7c75-b54b-4240-b3bf-2ead9b7427d1/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "c3d5e222-28b4-456f-8488-ff3b4846be60", + "invariantUUID": "92ff9c15-3b67-410a-b8ed-aed627656a35", + "name": "TEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEST", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c3d5e222-28b4-456f-8488-ff3b4846be60/toscaModel", + "category": "Allotted Resource", + "subCategory": "Security Zone", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "c8663b6e-bbe2-401d-9500-ec5425463655", + "invariantUUID": "925243cf-e342-4d86-8558-63899fbe88da", + "name": "VF Module LDSA", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c8663b6e-bbe2-401d-9500-ec5425463655/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "fda7c330-cb1e-4d43-9e97-87a5800b87c0", + "invariantUUID": "cc9b643b-8513-449b-a3f7-3c034b3f52a4", + "name": "composition", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/fda7c330-cb1e-4d43-9e97-87a5800b87c0/toscaModel", + "category": "DCAE Component", + "subCategory": "Utility", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "27adaf15-a0c2-4889-bc10-b3fdb0bb038c", + "invariantUUID": "002b36df-41cd-4119-ab8d-0e9fae3cd3cb", + "name": "cdap_host", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/27adaf15-a0c2-4889-bc10-b3fdb0bb038c/toscaModel", + "category": "DCAE Component", + "subCategory": "Utility", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "84855843-5247-4e97-a2bd-5395a510253b", + "invariantUUID": "755deb72-d767-4656-98b0-9d8ed288e9e6", + "name": "TestClamp", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/84855843-5247-4e97-a2bd-5395a510253b/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "READY_FOR_CERTIFICATION", + "lastUpdaterUserId": "rx827p" + }, + + { + "uuid": "e01dfc8f-2529-423b-9765-08b57df6ba51", + "invariantUUID": "6c7aaec2-59eb-41d9-8681-b7f976ab668d", + "name": "eNodeB-vf", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/e01dfc8f-2529-423b-9765-08b57df6ba51/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "CERTIFICATION_IN_PROGRESS", + "lastUpdaterUserId": "rx827p" + }, + + { + "uuid": "d26e8473-b1c9-4751-bf7c-be0e10ba71ac", + "invariantUUID": "e06a2a94-5ff9-4ab7-879f-c2d5cfaef1ca", + "name": "tdy", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/d26e8473-b1c9-4751-bf7c-be0e10ba71ac/toscaModel", + "category": "Allotted Resource", + "subCategory": "Tunnel XConnect", + "resourceType": "VF", + "lifecycleState": "READY_FOR_CERTIFICATION", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "038601f9-f242-49ab-8c19-08b95f34f7bf", + "invariantUUID": "0f183d4f-875b-4e7b-a23d-b9d68d81e0db", + "name": "Highland Park", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/038601f9-f242-49ab-8c19-08b95f34f7bf/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "25781e10-5fdd-499c-869d-0d70d61843df", + "invariantUUID": "f68b1982-a6ab-4849-b548-0d35655f4410", + "name": "Mikes VF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/25781e10-5fdd-499c-869d-0d70d61843df/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "mh677g" + }, + + { + "uuid": "c1c02cff-855f-438e-85f8-40c362874896", + "invariantUUID": "64cb5201-90d4-4cab-a6a9-f7416eeb307f", + "name": "PXTC", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c1c02cff-855f-438e-85f8-40c362874896/toscaModel", + "category": "Application L4+", + "subCategory": "Web Server", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "837c2fee-c2b2-4e95-ad48-dd69772d99bd", + "invariantUUID": "e48b3ea8-39bc-41eb-84bf-f5ef267d31e4", + "name": "vMOG VNF 1", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/837c2fee-c2b2-4e95-ad48-dd69772d99bd/toscaModel", + "category": "Network L2-3", + "subCategory": "Gateway", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "29018914-966c-442d-9d08-251b9dc45b8e", + "invariantUUID": "a33ed748-3477-4434-b3f3-b5560f5e7d9b", + "name": "vcts3", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/29018914-966c-442d-9d08-251b9dc45b8e/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "6906502e-6c2c-4b6f-8a3e-a2283f13cd69", + "invariantUUID": "fae890f6-4cdc-4e89-9502-3b1491c90393", + "name": "Generic VNF Source", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/6906502e-6c2c-4b6f-8a3e-a2283f13cd69/toscaModel", + "category": "DCAE Component", + "subCategory": "Source", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "4168799c-a51f-4664-a5e9-f75bedda2a1c", + "invariantUUID": "55befb8d-81db-4ac0-8820-8ec582f8147b", + "name": "AppleVF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4168799c-a51f-4664-a5e9-f75bedda2a1c/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "28c11fbd-a859-4819-b8c7-555b4ed05a7f", + "invariantUUID": "ab6094d3-ffe3-4386-b1c2-d6e0dbf103f3", + "name": "VF", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/28c11fbd-a859-4819-b8c7-555b4ed05a7f/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ym903w" + }, + + { + "uuid": "dad125b7-cd8a-4fbe-a4ad-2b04944079da", + "invariantUUID": "dd3c68ac-5e6c-4b22-bea3-44fd7d6a6097", + "name": "Mazav", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/dad125b7-cd8a-4fbe-a4ad-2b04944079da/toscaModel", + "category": "Application L4+", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "1e7f07c7-ff4c-40a6-95f6-a9b05f138027", + "invariantUUID": "cfff70d2-f942-4b25-b2ca-e64f64af511d", + "name": "vMMSC_AIC3.0__multi_members_multi_groups_volume", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1e7f07c7-ff4c-40a6-95f6-a9b05f138027/toscaModel", + "category": "Application L4+", + "subCategory": "Media Servers", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "yy815m" + }, + + { + "uuid": "2539b088-8e74-48d5-8401-77200be23f11", + "invariantUUID": "24ff5476-cabe-4cb5-99c8-e0f9ace75412", + "name": "AlinaVSP", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/2539b088-8e74-48d5-8401-77200be23f11/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "8bebc883-1961-4d2f-9c34-b8a9f56dd6bf", + "invariantUUID": "49241b40-9bd1-4d05-83a9-b097f40f4cc0", + "name": "MonitoringVSP", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/8bebc883-1961-4d2f-9c34-b8a9f56dd6bf/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "e0acc751-00cf-4f45-ac9d-23eb9cfc106d", + "invariantUUID": "1181d1c5-2524-40c2-bc81-e40dd813d70f", + "name": "Oren", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/e0acc751-00cf-4f45-ac9d-23eb9cfc106d/toscaModel", + "category": "Allotted Resource", + "subCategory": "Service Admin", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ol664w" + }, + + { + "uuid": "2e42bac2-318a-410c-b8ff-3b3a31351be7", + "invariantUUID": "b2b88a73-5c55-4984-99dd-a35c55935d14", + "name": "SCP-Test-VSP", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/2e42bac2-318a-410c-b8ff-3b3a31351be7/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "1a2bc1db-c4b3-4c26-837c-1f16b4e4eed0", + "invariantUUID": "869a4e40-2aac-42f6-9520-51d18a7bd5e0", + "name": "Vscpaas_Test2", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1a2bc1db-c4b3-4c26-837c-1f16b4e4eed0/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "52150d50-0b95-4056-b07a-abcf6414754e", + "invariantUUID": "cc4e47f7-360d-425b-a563-e870203d2d48", + "name": "SNMP Trap Collector", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/52150d50-0b95-4056-b07a-abcf6414754e/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "a36b04b6-6756-4860-9cbb-66a72d02361f", + "invariantUUID": "35841fd9-e768-466a-9a08-fd9f7dbef98d", + "name": "Vf-no-license", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/a36b04b6-6756-4860-9cbb-66a72d02361f/toscaModel", + "category": "Application L4+", + "subCategory": "Media Servers", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "8a1c4ce1-f132-4e05-92c1-91386689ddf5", + "invariantUUID": "4bd0b375-cec3-4da8-a6fb-028b523da60e", + "name": "vprobe", + "version": "0.2", + "toscaModelURL": "/sdc/v1/catalog/resources/8a1c4ce1-f132-4e05-92c1-91386689ddf5/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m08740" + }, + + { + "uuid": "4ae669b4-778a-4f13-bf42-99da0c805414", + "invariantUUID": "17ba1436-2800-4bcb-b066-0484d119ea8d", + "name": "oren2", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/4ae669b4-778a-4f13-bf42-99da0c805414/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ol664w" + }, + + { + "uuid": "c68a5162-bebf-4675-9b83-1aec994abd35", + "invariantUUID": "219b289e-e94e-4c1b-8ca0-53a19f4cf140", + "name": "AlinaVF", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c68a5162-bebf-4675-9b83-1aec994abd35/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "d03c68fc-ed63-4fce-bf7f-ebe23993157d", + "invariantUUID": "94746803-5a82-4112-9719-7cb64a43ea99", + "name": "testfe", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/d03c68fc-ed63-4fce-bf7f-ebe23993157d/toscaModel", + "category": "Allotted Resource", + "subCategory": "Allotted Resource", + "resourceType": "VF", + "lifecycleState": "CERTIFICATION_IN_PROGRESS", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "ab88f446-f17f-4419-a4ce-84a24bc9a3c0", + "invariantUUID": "63aec7b3-8674-42ff-a9be-9d6c51544776", + "name": "Tunnel_XConnTest", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ab88f446-f17f-4419-a4ce-84a24bc9a3c0/toscaModel", + "category": "Allotted Resource", + "subCategory": "Tunnel XConnect", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "81d54f6d-ac2d-4282-ada9-48214e13dfd9", + "invariantUUID": "80d253d9-dca7-4d5e-96f2-e060deabf3bb", + "name": "Dev2DevNFOD_1207", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/81d54f6d-ac2d-4282-ada9-48214e13dfd9/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "pa0916" + }, + + { + "uuid": "c9ea2798-f3ba-4826-ae93-0786820cb890", + "invariantUUID": "5882c528-76fe-4884-90c7-71301ca52cf8", + "name": "vMMSC_ECA", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c9ea2798-f3ba-4826-ae93-0786820cb890/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "az2497" + }, + + { + "uuid": "e795b7f2-09c3-40a8-bc38-64bdad5e9f68", + "invariantUUID": "96079a9a-dbe3-4492-ba85-95b1b49d0983", + "name": "APPleVFV10", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e795b7f2-09c3-40a8-bc38-64bdad5e9f68/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "1b9546ab-d1cd-489b-b07b-13537418ad57", + "invariantUUID": "4612156f-0a8d-46c5-bfb1-86e80148d123", + "name": "BerryVFNamequaryV10", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/1b9546ab-d1cd-489b-b07b-13537418ad57/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "READY_FOR_CERTIFICATION", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "b71e8927-6567-4f14-a0ec-3bce871934c4", + "invariantUUID": "73bc5a4f-b902-43b2-83c2-915fa274960f", + "name": "vPE", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/b71e8927-6567-4f14-a0ec-3bce871934c4/toscaModel", + "category": "Application L4+", + "subCategory": "Border Element", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "31ad5aaa-8779-4384-819f-4a2ec217f608", + "invariantUUID": "f47b1fa4-574f-4c30-b0cf-af7919868eed", + "name": "BerryVFNamequery", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/31ad5aaa-8779-4384-819f-4a2ec217f608/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "10751313-0dd7-464a-92e3-ec77fcada2c8", + "invariantUUID": "229580a6-2d12-49b6-8c89-54d04f4569b4", + "name": "vIECCF", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/10751313-0dd7-464a-92e3-ec77fcada2c8/toscaModel", + "category": "Application L4+", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "3951e021-7595-43b1-a6fd-de077c01af54", + "invariantUUID": "925243cf-e342-4d86-8558-63899fbe88da", + "name": "VF Module LDSA", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3951e021-7595-43b1-a6fd-de077c01af54/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "3b30f9df-5cc6-4f1d-b8fc-bf034891539e", + "invariantUUID": "10a2a956-5190-4aa8-8d3d-dea5863ab40f", + "name": "blueberryvf", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/3b30f9df-5cc6-4f1d-b8fc-bf034891539e/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "lm906x" + }, + + { + "uuid": "c4e944bd-aa6a-4bd0-85ac-5566c98d2adc", + "invariantUUID": "cc4e47f7-360d-425b-a563-e870203d2d48", + "name": "SNMP Trap Collector", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/c4e944bd-aa6a-4bd0-85ac-5566c98d2adc/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "07116436-aab8-4a54-85be-6691e451e65b", + "invariantUUID": "b1133487-2512-4a6d-8b68-4f56b81fd6a2", + "name": "1607_MOG", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/07116436-aab8-4a54-85be-6691e451e65b/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "70974b30-6b89-41d2-8b5d-779279db3b96", + "invariantUUID": "725e5fd1-2520-4669-a5f2-23f9ad2fbec4", + "name": "vSCP0502", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/70974b30-6b89-41d2-8b5d-779279db3b96/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "c9e436c3-539f-45e2-90b4-b046af907877", + "invariantUUID": "bc7fe896-e286-41cb-a11f-7081fc92876b", + "name": "vMMSC", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c9e436c3-539f-45e2-90b4-b046af907877/toscaModel", + "category": "Application L4+", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "79a31423-43ae-4f00-9314-dbc6ed5dfcb7", + "invariantUUID": "6c1bcf11-ecdc-465d-83c7-4a1735ff8d00", + "name": "1607_MOG_multi_members_volume", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/79a31423-43ae-4f00-9314-dbc6ed5dfcb7/toscaModel", + "category": "Application L4+", + "subCategory": "Border Element", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "ed9927dc-3c43-47bf-9c55-3aa3240749c4", + "invariantUUID": "d6ac75ef-0e55-41bb-9cac-bedd59c3b0b8", + "name": "SNMP Collector", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/ed9927dc-3c43-47bf-9c55-3aa3240749c4/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "82460d6a-1cd7-4c57-bc89-625600555f80", + "invariantUUID": "c67108d4-a0b0-4eee-8fbc-c881d7bb21d3", + "name": "VF modules vMMSC", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/82460d6a-1cd7-4c57-bc89-625600555f80/toscaModel", + "category": "Application L4+", + "subCategory": "Web Server", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "1d7a184b-3680-47e5-92de-6ac7207699a3", + "invariantUUID": "f7ba2bcd-747b-4ff6-994a-91be20fc726c", + "name": "VF modules", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/1d7a184b-3680-47e5-92de-6ac7207699a3/toscaModel", + "category": "Application L4+", + "subCategory": "Web Server", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "90043cc2-5150-4127-aabe-67ed5c8a603b", + "invariantUUID": "fc6589c4-f030-4d02-b516-b99f73bfdca8", + "name": "VF module_2", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/90043cc2-5150-4127-aabe-67ed5c8a603b/toscaModel", + "category": "Application L4+", + "subCategory": "Media Servers", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "4c81fa7a-9e59-498a-96ba-2fc16eba23a3", + "invariantUUID": "4612156f-0a8d-46c5-bfb1-86e80148d123", + "name": "BerryVFNamequaryV10", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/4c81fa7a-9e59-498a-96ba-2fc16eba23a3/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "ac603264-cdf7-49ab-a9ae-92d341023218", + "invariantUUID": "379ab526-dc81-4b31-b60d-31c1805ddf5a", + "name": "FDNT1", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/ac603264-cdf7-49ab-a9ae-92d341023218/toscaModel", + "category": "Application L4+", + "subCategory": "Border Element", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "c8c959fb-c57e-4a10-9f7e-d5cc5bbd4301", + "invariantUUID": "1170b507-33f9-4a2e-a9af-e44744b6c10d", + "name": "contrail route", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/c8c959fb-c57e-4a10-9f7e-d5cc5bbd4301/toscaModel", + "category": "Allotted Resource", + "subCategory": "Contrail Route", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e3edd7bb-9732-4915-b1b9-2b4af561d85c", + "invariantUUID": "7669a21f-e8bf-429d-8267-b9a9b1be0e16", + "name": "test-port", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/e3edd7bb-9732-4915-b1b9-2b4af561d85c/toscaModel", + "category": "Network L4+", + "subCategory": "Common Network Resources", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "8531f392-b695-49f4-98f8-cba632eb68fc", + "invariantUUID": "9dfe647e-7285-48dc-9e5d-f275f470e4ba", + "name": "security Zone", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/8531f392-b695-49f4-98f8-cba632eb68fc/toscaModel", + "category": "Allotted Resource", + "subCategory": "Security Zone", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e4924deb-7355-4f1e-9f8f-bd4e3b609e98", + "invariantUUID": "6eb4b1ca-75ac-454b-a145-1ea27157bfac", + "name": "IP_Mux_Demux", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e4924deb-7355-4f1e-9f8f-bd4e3b609e98/toscaModel", + "category": "Allotted Resource", + "subCategory": "IP Mux Demux", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "44ff8000-e703-4538-b26a-f2bc8205d7d4", + "invariantUUID": "26badc5a-d29e-4583-b773-0d42366a8bb1", + "name": "FDNT1234", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/44ff8000-e703-4538-b26a-f2bc8205d7d4/toscaModel", + "category": "Network L2-3", + "subCategory": "WAN Connectors", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m99124" + }, + + { + "uuid": "5ce3812b-935b-4c17-a1a7-a79a5179772e", + "invariantUUID": "ad3e0a75-d124-418d-ad57-970a9668e4d8", + "name": "vTSBC1", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/5ce3812b-935b-4c17-a1a7-a79a5179772e/toscaModel", + "category": "Network L2-3", + "subCategory": "Gateway", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "e9fb3aa6-44f7-4154-9db6-1f60dac2d72f", + "invariantUUID": "ac661ee8-21b0-417f-98af-0b891c5f6c0d", + "name": "TuesdayVSP", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/e9fb3aa6-44f7-4154-9db6-1f60dac2d72f/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "75b67a7f-9e2e-4c7d-a926-331f05ce5ff1", + "invariantUUID": "32d62649-390c-4208-b5cd-c1dc7dddf3db", + "name": "VF modules_1", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/75b67a7f-9e2e-4c7d-a926-331f05ce5ff1/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "25b6b8dc-8f32-42ea-bcea-04369827ddbf", + "invariantUUID": "e5d959b4-f11e-42ac-aa26-26beb526faf1", + "name": "pnf-resource-test", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/25b6b8dc-8f32-42ea-bcea-04369827ddbf/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ed852m" + }, + + { + "uuid": "f4bed159-36a0-4ea4-b2d4-2ebea8c208b8", + "invariantUUID": "e6b04d60-4a33-4899-9185-082b9b170cb8", + "name": "Dev2DevNFOD", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/f4bed159-36a0-4ea4-b2d4-2ebea8c208b8/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sw594b" + }, + + { + "uuid": "8dec3b8a-a0fa-4634-bbb4-d7bad5a912ab", + "invariantUUID": "eda652e4-6740-46bf-8d0f-92c4752070f6", + "name": "FCGI_OS", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/8dec3b8a-a0fa-4634-bbb4-d7bad5a912ab/toscaModel", + "category": "Application L4+", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "691cbc68-61df-472d-ad2d-8791444d2e27", + "invariantUUID": "7daf1f14-2aa3-48d8-89e5-3383cf004b6a", + "name": "AAI broker", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/691cbc68-61df-472d-ad2d-8791444d2e27/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "ccd6fa51-aafd-401f-96ce-3f0c94418865", + "invariantUUID": "fe5535d7-80e5-4278-bbdd-d2156b9a4d24", + "name": "test-consol", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/ccd6fa51-aafd-401f-96ce-3f0c94418865/toscaModel", + "category": "Network L2-3", + "subCategory": "Gateway", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "100be1c2-28d9-4d8c-8551-608f82b202f8", + "invariantUUID": "771cb756-d74d-416d-97cb-6c88f1915721", + "name": "Source Generic", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/100be1c2-28d9-4d8c-8551-608f82b202f8/toscaModel", + "category": "DCAE Component", + "subCategory": "Source", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "ml4535" + }, + + { + "uuid": "e2555d36-4fec-476a-8504-6e111f5d5dfd", + "invariantUUID": "cca91831-e7c4-4761-86eb-200206af302d", + "name": "VF Volume group", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/e2555d36-4fec-476a-8504-6e111f5d5dfd/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "361f7f83-e4dd-4a27-ad4b-a7e1c7a52672", + "invariantUUID": "6598647d-b141-4c39-be82-91b536017bf2", + "name": "grapevnf", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/361f7f83-e4dd-4a27-ad4b-a7e1c7a52672/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "lm906x" + }, + + { + "uuid": "78160afe-b5e3-4978-8923-40d04671bd30", + "invariantUUID": "9b943920-4286-4f78-bc98-387d15812490", + "name": "APPC-test", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/78160afe-b5e3-4978-8923-40d04671bd30/toscaModel", + "category": "Network L4+", + "subCategory": "Common Network Resources", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "596c8b1d-3a1d-47fc-ace2-1fbebb94b1e5", + "invariantUUID": "b99889d1-bc9d-4a90-942c-88e21c358f75", + "name": "cherryvf", + "version": "3.0", + "toscaModelURL": "/sdc/v1/catalog/resources/596c8b1d-3a1d-47fc-ace2-1fbebb94b1e5/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "nk909r" + }, + + { + "uuid": "da3619c1-9b19-4edc-9853-a714c5034371", + "invariantUUID": "b90f7990-667a-4f63-9e7f-ee02f64766f1", + "name": "FDNT", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/da3619c1-9b19-4edc-9853-a714c5034371/toscaModel", + "category": "Application L4+", + "subCategory": "Call Control", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "m99121" + }, + + { + "uuid": "3c22db36-3461-4463-8b11-c8fbdb951c1e", + "invariantUUID": "42e3c73c-829f-464c-90fd-326ed7018d06", + "name": "RonyTestCSAR", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/3c22db36-3461-4463-8b11-c8fbdb951c1e/toscaModel", + "category": "Allotted Resource", + "subCategory": "Service Admin", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "rb844h" + }, + + { + "uuid": "d6c133c5-ab82-4c60-afe6-90556da55c7e", + "invariantUUID": "009e4104-2403-49c4-94ee-6dcb0547e44d", + "name": "VES Collector", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/d6c133c5-ab82-4c60-afe6-90556da55c7e/toscaModel", + "category": "DCAE Component", + "subCategory": "Collector", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "43efef8f-204c-4a54-9121-ae19951063aa", + "invariantUUID": "926f6d60-bf84-46c4-9ed7-f0bb774e5184", + "name": "Sangeetha", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/43efef8f-204c-4a54-9121-ae19951063aa/toscaModel", + "category": "DCAE Component", + "subCategory": "Database", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "e01dfc8f-2529-423b-9765-08b57df6ba51", + "invariantUUID": "6c7aaec2-59eb-41d9-8681-b7f976ab668d", + "name": "eNodeB-vf", + "version": "2.0", + "toscaModelURL": "/sdc/v1/catalog/resources/e01dfc8f-2529-423b-9765-08b57df6ba51/toscaModel", + "category": "Application L4+", + "subCategory": "Application Server", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "af3193" + }, + + { + "uuid": "1cad2e90-0259-498f-884d-7bbe5a156fb2", + "invariantUUID": "76b01019-a533-4c31-871d-6275924c7543", + "name": "vPE-AV-renana", + "version": "1.0", + "toscaModelURL": "/sdc/v1/catalog/resources/1cad2e90-0259-498f-884d-7bbe5a156fb2/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "CERTIFIED", + "lastUpdaterUserId": "m08743" + }, + + { + "uuid": "747ccce2-7efb-403d-acd3-88bc9ffb43a2", + "invariantUUID": "76b01019-a533-4c31-871d-6275924c7543", + "name": "vPE-AV-renana", + "version": "1.1", + "toscaModelURL": "/sdc/v1/catalog/resources/747ccce2-7efb-403d-acd3-88bc9ffb43a2/toscaModel", + "category": "Network L2-3", + "subCategory": "Router", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "2d0cb42c-398e-4c4c-959a-290459489cef", + "invariantUUID": "935689b9-80e2-4818-8c2d-fbbeaec9b56a", + "name": "csarTest", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/2d0cb42c-398e-4c4c-959a-290459489cef/toscaModel", + "category": "Application L4+", + "subCategory": "Load Balancer", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "ss8214" + }, + + { + "uuid": "62c5d4c8-1a5a-4081-bde7-8805821f41a0", + "invariantUUID": "5bf48fb1-a073-4ad5-84e0-387d9160713c", + "name": "madhu_mdns", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/62c5d4c8-1a5a-4081-bde7-8805821f41a0/toscaModel", + "category": "Application L4+", + "subCategory": "Firewall", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKIN", + "lastUpdaterUserId": "sa997j" + }, + + { + "uuid": "8faf42f4-287a-430e-a761-9df0ce4075d1", + "invariantUUID": "6e2213a9-6ca2-4ab9-adfd-1af95c61f23d", + "name": "vPE-BV-Renana", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/8faf42f4-287a-430e-a761-9df0ce4075d1/toscaModel", + "category": "Generic", + "subCategory": "Infrastructure", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "rh176a" + }, + + { + "uuid": "541310cd-d7b4-48d1-969a-d81866277298", + "invariantUUID": "30df25ac-d6c9-4cec-8c56-b287cd462e30", + "name": "TCA", + "version": "0.1", + "toscaModelURL": "/sdc/v1/catalog/resources/541310cd-d7b4-48d1-969a-d81866277298/toscaModel", + "category": "DCAE Component", + "subCategory": "Microservice", + "resourceType": "VF", + "lifecycleState": "NOT_CERTIFIED_CHECKOUT", + "lastUpdaterUserId": "ss7286" + } +] \ No newline at end of file -- cgit 1.2.3-korg