summaryrefslogtreecommitdiffstats
path: root/ms/generic-resource-api/src
diff options
context:
space:
mode:
Diffstat (limited to 'ms/generic-resource-api/src')
-rw-r--r--ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java202
-rw-r--r--ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java25
-rw-r--r--ms/generic-resource-api/src/test/resources/netmodel.sql79
-rw-r--r--ms/generic-resource-api/src/test/resources/network-assign-rpc.json1
-rw-r--r--ms/generic-resource-api/src/test/resources/service1-service.json69
-rw-r--r--ms/generic-resource-api/src/test/resources/vnf-assign-rpc.json87
6 files changed, 452 insertions, 11 deletions
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
index 8f97dec..ac9a8b1 100644
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiController.java
@@ -65,6 +65,13 @@ public class OperationsApiController implements OperationsApi {
private static final String CALLED_STR = "{} called.";
private static final String MODULE_NAME = "GENERIC-RESOURCE-API";
+ private static final String SERVICE_OBJECT_PATH_PARAM = "service-object-path";
+ private static final String NETWORK_OBJECT_PATH_PARAM = "network-object-path";
+ private static final String VNF_OBJECT_PATH_PARAM = "vnf-object-path";
+ private static final String PNF_OBJECT_PATH_PARAM = "pnf-object-path";
+ private static final String VF_MODULE_OBJECT_PATH_PARAM = "vf-module-object-path";
+ private static final String VF_MODULE_ID_PARAM = "vf-module-id";
+
private final ObjectMapper objectMapper;
@@ -371,6 +378,13 @@ public class OperationsApiController implements OperationsApi {
|| input.getServiceInformation().getServiceInstanceId().length() == 0;
}
+ private boolean hasInvalidServiceId(GenericResourceApiVnfOperationInformation input) {
+
+ return input == null || input.getServiceInformation() == null
+ || input.getServiceInformation().getServiceInstanceId() == null
+ || input.getServiceInformation().getServiceInstanceId().length() == 0;
+ }
+
private GenericResourceApiPreloaddataPreloadData getConfigPreloadData(String preloadId, String preloadType)
throws JsonProcessingException {
@@ -417,7 +431,8 @@ public class OperationsApiController implements OperationsApi {
}
- private GenericResourceApiServicedataServiceData getConfigServiceData(String svcInstanceId) throws JsonProcessingException {
+ private GenericResourceApiServicedataServiceData getConfigServiceData(String svcInstanceId)
+ throws JsonProcessingException {
List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
@@ -429,11 +444,9 @@ public class OperationsApiController implements OperationsApi {
}
}
-
@Override
public ResponseEntity<GenericResourceApiNetworkTopologyOperation> operationsGENERICRESOURCEAPInetworkTopologyOperationPost(
- @Valid GenericResourceApiNetworkOperationInformationBodyparam input)
- throws RestException {
+ @Valid GenericResourceApiNetworkOperationInformationBodyparam input) throws RestException {
final String svcOperation = "network-topology-operation";
GenericResourceApiNetworkTopologyOperation retval = new GenericResourceApiNetworkTopologyOperation();
GenericResourceApiNetworktopologyoperationOutput resp = new GenericResourceApiNetworktopologyoperationOutput();
@@ -513,9 +526,24 @@ public class OperationsApiController implements OperationsApi {
resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
resp.setResponseCode(respProps.getProperty("error-code", "200"));
resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
- configService.setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ GenericResourceApiInstanceReference networkReference = new GenericResourceApiInstanceReference();
+ networkReference.setInstanceId(respProps.getProperty("networkId"));
+ networkReference.setObjectPath(respProps.getProperty(NETWORK_OBJECT_PATH_PARAM));
+ resp.setNetworkResponseInformation(networkReference);
+
// If DG returns success, update svcData in config and operational trees
// and remember to save operational data.
String ctxJson = ctxOut.toJsonString("service-data");
@@ -535,7 +563,7 @@ public class OperationsApiController implements OperationsApi {
}
// Update status in config services entry
-
+
configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
configService.setServiceStatusResponseCode(resp.getResponseCode());
configService.setServiceStatusResponseMessage(resp.getResponseMessage());
@@ -550,6 +578,7 @@ public class OperationsApiController implements OperationsApi {
operationalServicesRepository.save(operService);
}
retval.setOutput(resp);
+
return (new ResponseEntity<>(retval, HttpStatus.OK));
}
@@ -620,7 +649,6 @@ public class OperationsApiController implements OperationsApi {
configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
configService.setServiceStatusRpcName(svcOperation);
-
// Call DG
try {
// Any of these can throw a nullpointer exception
@@ -631,9 +659,16 @@ public class OperationsApiController implements OperationsApi {
resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
resp.setResponseCode(respProps.getProperty("error-code", "200"));
resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
- configService.setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
- if ("200".equals(resp.getResponseCode())) {
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
// If DG returns success, update svcData in config and operational trees
// and remember to save operational data.
String ctxJson = ctxOut.toJsonString("service-data");
@@ -653,7 +688,7 @@ public class OperationsApiController implements OperationsApi {
}
// Update status in config services entry
-
+
configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
configService.setServiceStatusResponseCode(resp.getResponseCode());
configService.setServiceStatusResponseMessage(resp.getResponseMessage());
@@ -672,4 +707,151 @@ public class OperationsApiController implements OperationsApi {
}
+ @Override
+ public ResponseEntity<GenericResourceApiVnfTopologyOperation> operationsGENERICRESOURCEAPIvnfTopologyOperationPost(
+ @Valid GenericResourceApiVnfOperationInformationBodyparam input)
+ throws RestException {
+ final String svcOperation = "vnf-topology-operation";
+ GenericResourceApiVnfTopologyOperation retval = new GenericResourceApiVnfTopologyOperation();
+ GenericResourceApiVnftopologyoperationOutput resp = new GenericResourceApiVnftopologyoperationOutput();
+
+ log.info(CALLED_STR, svcOperation);
+ // Verify input contains service instance id
+ if (hasInvalidServiceId(input.getInput())) {
+ log.debug("exiting {} because of null or empty service-instance-id", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("null or empty service-instance-id");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ String svcInstanceId = input.getInput().getServiceInformation().getServiceInstanceId();
+ String vnfId = null;
+
+ if ((input.getInput() != null) && (input.getInput().getVnfInformation() != null)) {
+ vnfId = input.getInput().getVnfInformation().getVnfId();
+ }
+
+ SvcLogicContext ctxIn = new SvcLogicContext();
+
+ // Add input to SvcLogicContext
+ try {
+ ctxIn.mergeJson(svcOperation + "-input", objectMapper.writeValueAsString(input.getInput()));
+ } catch (JsonProcessingException e) {
+ log.error("exiting {} due to parse error on input data", svcOperation);
+ resp.setResponseCode("500");
+ resp.setResponseMessage("internal error");
+ resp.setAckFinalIndicator("Y");
+ retval.setOutput(resp);
+ return new ResponseEntity<>(retval, HttpStatus.INTERNAL_SERVER_ERROR);
+ }
+
+ // Add config tree data to SvcLogicContext
+ List<ConfigServices> configServices = configServicesRepository.findBySvcInstanceId(svcInstanceId);
+ ConfigServices configService = null;
+ if (configServices != null && !configServices.isEmpty()) {
+ configService = configServices.get(0);
+ ctxIn.mergeJson("service-data", configService.getSvcData());
+ } else {
+ log.debug("exiting {} because the service-instance does not have any service data in SDN", svcOperation);
+
+ resp.setResponseCode("404");
+ resp.setResponseMessage("invalid input: the service-instance does not have any service data in SDNC");
+ resp.setAckFinalIndicator("Y");
+
+ retval.setOutput(resp);
+
+ return new ResponseEntity<>(retval, HttpStatus.OK);
+ }
+
+ // Add operational tree data to SvcLogicContext
+ List<OperationalServices> operServices = operationalServicesRepository.findBySvcInstanceId(svcInstanceId);
+ OperationalServices operService = null;
+ boolean saveOperationalData = false;
+
+ if (operServices != null && !operServices.isEmpty()) {
+ operService = operServices.get(0);
+ ctxIn.mergeJson("operational-data", operService.getSvcData());
+ } else {
+ operService = new OperationalServices(svcInstanceId, null, null);
+ }
+
+ // Update service status info in config entry from input
+ configService.setServiceStatusAction(input.getInput().getRequestInformation().getRequestAction().toString());
+ configService.setServiceStatusRpcAction(input.getInput().getSdncRequestHeader().getSvcAction().toString());
+ configService.setServiceStatusRpcName(svcOperation);
+
+
+
+ // Call DG
+ try {
+ // Any of these can throw a nullpointer exception
+ // execute should only throw a SvcLogicException
+ SvcLogicContext ctxOut = svc.execute(MODULE_NAME, svcOperation, null, "sync", ctxIn);
+ Properties respProps = ctxOut.toProperties();
+
+ resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
+ resp.setResponseCode(respProps.getProperty("error-code", "200"));
+ resp.setResponseMessage(respProps.getProperty("error-message", "SUCCESS"));
+
+ configService
+ .setServiceStatusRequestStatus(GenericResourceApiRequestStatusEnumeration.SYNCCOMPLETE.toString());
+
+ if ("200".equals(resp.getResponseCode())) {
+
+ GenericResourceApiInstanceReference serviceReference = new GenericResourceApiInstanceReference();
+ serviceReference.setInstanceId(svcInstanceId);
+ serviceReference.setObjectPath(respProps.getProperty(SERVICE_OBJECT_PATH_PARAM));
+ resp.setServiceResponseInformation(serviceReference);
+
+ if (vnfId == null) {
+ vnfId = respProps.getProperty("vnfId");
+ }
+ GenericResourceApiInstanceReference vnfReference = new GenericResourceApiInstanceReference();
+ vnfReference.setInstanceId(vnfId);
+ vnfReference.setObjectPath(respProps.getProperty(VNF_OBJECT_PATH_PARAM));
+ resp.setVnfResponseInformation(vnfReference);
+
+ // If DG returns success, update svcData in config and operational trees
+ // and remember to save operational data.
+ String ctxJson = ctxOut.toJsonString("service-data");
+ configService.setSvcData(ctxJson);
+ operService.setSvcData(ctxJson);
+ saveOperationalData = true;
+ }
+
+ } catch (NullPointerException npe) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage("Check that you populated module, rpc and or mode correctly.");
+ } catch (SvcLogicException e) {
+ resp.setAckFinalIndicator("true");
+ resp.setResponseCode("500");
+ resp.setResponseMessage(e.getMessage());
+ }
+
+ // Update status in config services entry
+
+ configService.setServiceStatusFinalIndicator(resp.getAckFinalIndicator());
+ configService.setServiceStatusResponseCode(resp.getResponseCode());
+ configService.setServiceStatusResponseMessage(resp.getResponseMessage());
+ configService.setServiceStatusResponseTimestamp(Iso8601Util.now());
+
+ // Update config tree
+ configServicesRepository.save(configService);
+
+ // If necessary, sync status to operation service entry and save
+ if (saveOperationalData) {
+ operService.setServiceStatus(configService.getServiceStatus());
+ operationalServicesRepository.save(operService);
+ }
+ retval.setOutput(resp);
+ return (new ResponseEntity<>(retval, HttpStatus.OK));
+ }
+
+
}
diff --git a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
index 775be1b..f0f29d3 100644
--- a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
+++ b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
@@ -38,6 +38,7 @@ public class OperationsApiControllerTest {
private final static String PRELOAD_VFMODULE_URL = "/operations/GENERIC-RESOURCE-API:preload-vf-module-topology-operation/";
private final static String SERVICE_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:service-topology-operation/";
private final static String NETWORK_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:network-topology-operation/";
+ private final static String VNF_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:vnf-topology-operation/";
@Autowired
@@ -153,6 +154,30 @@ public class OperationsApiControllerTest {
}
+ @Test
+ public void operationsGENERICRESOURCEAPIvnfTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ configServicesRepository.deleteAll();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service1.json");
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/vnf-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
private void loadServicesData(String path) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
diff --git a/ms/generic-resource-api/src/test/resources/netmodel.sql b/ms/generic-resource-api/src/test/resources/netmodel.sql
new file mode 100644
index 0000000..85fa3eb
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/netmodel.sql
@@ -0,0 +1,79 @@
+-- MariaDB dump 10.17 Distrib 10.4.13-MariaDB, for osx10.15 (x86_64)
+--
+-- Host: localhost Database: sdnctl
+-- ------------------------------------------------------
+-- Server version 10.5.5-MariaDB-1:10.5.5+maria~focal
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8mb4 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `NETWORK_MODEL`
+--
+
+DROP TABLE IF EXISTS `NETWORK_MODEL`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `NETWORK_MODEL` (
+ `customization_uuid` varchar(255) NOT NULL,
+ `service_uuid` varchar(255) NOT NULL,
+ `model_yaml` longblob DEFAULT NULL,
+ `invariant_uuid` varchar(255) DEFAULT NULL,
+ `uuid` varchar(255) DEFAULT NULL,
+ `network_type` varchar(255) DEFAULT NULL,
+ `network_role` varchar(255) DEFAULT NULL,
+ `network_technology` varchar(255) DEFAULT NULL,
+ `trunk_network_indicator` char(1) DEFAULT NULL,
+ `network_scope` varchar(255) DEFAULT NULL,
+ `naming_policy` varchar(255) DEFAULT NULL,
+ `ecomp_generated_naming` char(1) DEFAULT NULL,
+ `is_shared_network` char(1) DEFAULT NULL,
+ `is_external_network` char(1) DEFAULT NULL,
+ `is_provider_network` char(1) DEFAULT NULL,
+ `physical_network_name` varchar(255) DEFAULT NULL,
+ `is_bound_to_vpn` char(1) DEFAULT NULL,
+ `vpn_binding` varchar(255) DEFAULT NULL,
+ `use_ipv4` char(1) DEFAULT NULL,
+ `ipv4_dhcp_enabled` char(1) DEFAULT NULL,
+ `ipv4_ip_version` char(1) DEFAULT NULL,
+ `ipv4_cidr_mask` varchar(255) DEFAULT NULL,
+ `eipam_v4_address_plan` varchar(255) DEFAULT NULL,
+ `use_ipv6` char(1) DEFAULT NULL,
+ `ipv6_dhcp_enabled` char(1) DEFAULT NULL,
+ `ipv6_ip_version` char(1) DEFAULT NULL,
+ `ipv6_cidr_mask` varchar(255) DEFAULT NULL,
+ `eipam_v6_address_plan` varchar(255) DEFAULT NULL,
+ `version` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`customization_uuid`),
+ KEY `FK_NETWORK_MODEL` (`service_uuid`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `NETWORK_MODEL`
+--
+
+LOCK TABLES `NETWORK_MODEL` WRITE;
+/*!40000 ALTER TABLE `NETWORK_MODEL` DISABLE KEYS */;
+INSERT INTO `NETWORK_MODEL` VALUES ('367a8ba9-057a-4506-b106-fbae818597c6','6794ec22-95ff-4b00-8846-b1148e90df54','!!com.att.sdnctl.uebclient.SdncNetworkServiceModel\ndescription: null\nimports:\n- Service_Admin: {file: resource-ServiceAdmin-template.yml}\n- IP_MUX_Demux: {file: resource-IpMuxDemux-template.yml}\n- Tunnel_Xconn: {file: resource-TunnelXconn-template.yml}\n- vHNF for DHV Test: {file: resource-VhnfForDhvTest-template.yml}\nmetadata: {invariantUUID: 7b0fafc1-83df-4590-9460-b5a8d9f9f277, UUID: 6794ec22-95ff-4b00-8846-b1148e90df54,\n name: SD-WAN, description: \'Standard Wan connector, redoing this for sdnc again\n as they got already deployed.\', type: Service, category: Network L1-3, serviceEcompNaming: false,\n serviceHoming: false}\ntopology_template:\n node_templates:\n Pri_IP_MUX_Demux 1:\n type: com.att.d2.resource.vf.IpMuxDemux\n metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n customizationUUID: 211bcbd5-de25-41bb-a758-edd32220461d, version: \'1.0\', name: IP_MUX_Demux,\n description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Pri_Service_Admin 5:\n type: com.att.d2.resource.vf.ServiceAdmin\n metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n customizationUUID: 22b1ed87-2ca5-42f5-9e2e-20ad5bfb097e, version: \'1.0\', name: Service_Admin,\n description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_IP_MUX_Demux 3:\n type: com.att.d2.resource.vf.IpMuxDemux\n metadata: {invariantUUID: f110ef53-a0a6-4d72-ab91-fd88a835e8c4, UUID: 79b0a3cc-c5f9-4831-aa72-b2884ed0bd55,\n customizationUUID: 96e090a4-93dd-43a2-9d87-a746ee7e53cd, version: \'1.0\', name: IP_MUX_Demux,\n description: 1/17, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Pri_Tunnel_Xconn 9:\n type: com.att.d2.resource.vf.TunnelXconn\n metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n customizationUUID: 5b9bee43-f537-4fb3-9e8b-4de9f714d28a, version: \'1.0\', name: Tunnel_Xconn,\n description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_Service_Admin 7:\n type: com.att.d2.resource.vf.ServiceAdmin\n metadata: {invariantUUID: 462edf71-1a3c-487b-bf55-497460ab7de3, UUID: b51acc89-1c55-4586-b82b-6480b16339e9,\n customizationUUID: 5431e571-3df5-423a-99bc-0b020ecac97b, version: \'1.0\', name: Service_Admin,\n description: Service Version, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n Sec_Tunnel_Xconn 11:\n type: com.att.d2.resource.vf.TunnelXconn\n metadata: {invariantUUID: b7a1b78e-6b6b-4b36-9698-8c9530da14af, UUID: a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1,\n customizationUUID: 367a8ba9-057a-4506-b106-fbae818597c6, version: \'1.0\', name: Tunnel_Xconn,\n description: Tunnel, type: VF, category: Allotted Resource, subcategory: Allotted Resource}\n vHNF for DHV Test 17:\n type: com.att.d2.resource.vf.VhnfForDhvTest\n metadata: {invariantUUID: 6ea0b528-e303-4686-aa77-aa2fcbdccb96, UUID: 619c7cd3-76a9-46a8-b01b-c1f236b14d68,\n customizationUUID: 2eb202d1-b36b-4c63-821f-4a163abaed42, version: \'1.0\', name: vHNF for DHV Test,\n description: \'vHNF for DHV testing 1_19_17. \', type: VF, category: Network L2-3,\n subcategory: Infrastructure}\n groups:\n vhnffordhvtest17..VhnfForDhvTest..base_TEST..module-0:\n type: com.att.d2.groups.VfModule\n metadata: {vfModuleModelName: VhnfForDhvTest..base_TEST..module-0, vfModuleModelInvariantUUID: f5696ec0-ec71-4916-bf3b-93a654efcba4,\n vfModuleModelUUID: ebc3d18c-3e62-4c24-bcd6-961e98701a0a, vfModuleModelVersion: \'1\',\n vfModuleModelCustomizationUUID: 63f9560a-4603-4e3b-8fb7-55f8ea06ee21}\n properties: {min_vf_module_instances: 1, vf_module_label: base_TEST, max_vf_module_instances: 1,\n vf_module_type: Base, vf_module_description: null, initial_count: 1, volume_group: false}\n substitution_mappings:\n node_type: com.att.d2.service.SdWan\n capabilities:\n vHNF for DHV Test 17.disk.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Sec_IP_MUX_Demux 3.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory.resident:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance on the physical machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.resident, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Pri_Service_Admin 5.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.allocation:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk occupied by the instance on the host machine,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.allocation, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.attachment:\n type: tosca.capabilities.Attachment\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.packets.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.latency:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk latency, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ms, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.latency, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.host:\n type: tosca.capabilities.Container\n occurrences: [1, UNBOUNDED]\n valid_source_types: [tosca.nodes.SoftwareComponent]\n properties:\n num_cpus: {type: integer, required: false}\n disk_size: {type: scalar-unit.size, required: false}\n cpu_frequency: {type: scalar-unit.frequency, required: false}\n mem_size: {type: scalar-unit.size, required: false}\n vHNF for DHV Test 17.disk.device.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.ephemeral.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of ephemeral disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.ephemeral.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.cpu_util:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average CPU utilization, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: \'%\', description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu_util, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.cpu:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of writes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.scalable:\n type: tosca.capabilities.Scalable\n occurrences: [1, UNBOUNDED]\n properties:\n max_instances: {type: integer, default: 1, required: false}\n min_instances: {type: integer, default: 1, required: false}\n default_instances: {type: integer, required: false}\n vHNF for DHV Test 17.cpu.delta:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: CPU time used since previous datapoint,\n description: Description of the metric, required: false}\n type: {type: string, default: Delta, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: ns, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: cpu.delta, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.instance:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Existence of instance, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: instance, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: instance, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The physical size in bytes of the image container on the host per device,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.requests:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Sec_Service_Admin 7.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.device.capacity:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: The amount of disk per device that the instance can see,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.capacity, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.os:\n type: tosca.capabilities.OperatingSystem\n occurrences: [1, UNBOUNDED]\n properties:\n type: {type: string, required: false}\n distribution: {type: string, required: false}\n version: {type: version, required: false}\n architecture: {type: string, required: false}\n Sec_Tunnel_Xconn 11.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.binding:\n type: tosca.capabilities.network.Bindable\n occurrences: [0, UNBOUNDED]\n valid_source_types: [com.att.d2.resource.cp.nodes.heat.network.contrailV2.VLANSubInterface]\n vHNF for DHV Test 17.disk.read.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.read.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of reads, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n Pri_Tunnel_Xconn 9.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.vcpus:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of virtual CPUs allocated to the instance,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: vcpu, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: vcpus, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.iops:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average disk iops per device, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: count/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.iops, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of incoming packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.incoming.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of incoming bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.incoming.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outpoing.packets:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing packets, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: packet, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outpoing.packets, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.memory.usage:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Volume of RAM used by the instance from the amount of its allocated memory,\n description: Description of the metric, required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: MB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: memory.usage, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.bytes:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Number of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Cumulative, description: \'Type of the metric\n value, for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.endpoint:\n type: tosca.capabilities.Endpoint.Admin\n occurrences: [1, UNBOUNDED]\n properties:\n port_name: {type: string, required: false}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n secure: {type: boolean, default: true, required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.network.outgoing.bytes.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of outgoing bytes, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: B/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: network.outgoing.bytes.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: network, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n Pri_IP_MUX_Demux 1.feature:\n type: tosca.capabilities.Node\n occurrences: [1, UNBOUNDED]\n vHNF for DHV Test 17.disk.root.size:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Size of root disk, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: GB, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.root.size, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: compute, description: \'Category of the\n metric, for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.write.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of write requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.write.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n vHNF for DHV Test 17.disk.device.read.requests.rate:\n type: com.att.d2.capabilities.metric.Ceilometer\n description: A node type that includes the Metric capability indicates that it can be monitored using ceilometer.\n occurrences: [1, UNBOUNDED]\n properties:\n initiator: {type: string, default: source, required: false}\n network_name: {type: string, default: PRIVATE, required: false}\n description: {type: string, default: Average rate of read requests, description: Description of the metric,\n required: false}\n type: {type: string, default: Gauge, description: \'Type of the metric value,\n for an example, Cumulative, Delta, Gauge and etc.\', required: true}\n secure: {type: boolean, default: false, required: false}\n ports:\n type: map\n required: false\n entry_schema: {type: PortSpec}\n port_name: {type: string, required: false}\n unit: {type: string, default: request/s, description: Unit of the metric value,\n required: true}\n protocol: {type: string, default: tcp, required: false}\n port: {type: PortDef, required: false}\n name: {type: string, default: disk.device.read.requests.rate, description: Ceilometer metric type name to monitor. (The name ceilometer is using),\n required: true}\n category: {type: string, default: disk, description: \'Category of the metric,\n for an example, compute, disk, network, storage and etc.\', required: false}\n url_path: {type: string, required: false}\n requirements:\n Sec_IP_MUX_Demux 3.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_Tunnel_Xconn 9.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Pri_IP_MUX_Demux 1.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_Service_Admin 5.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Pri_IP_MUX_Demux 1.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Pri_Service_Admin 5.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Sec_IP_MUX_Demux 3.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n vHNF for DHV Test 17.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n vHNF for DHV Test 17.local_storage:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Attachment\n node: tosca.nodes.BlockStorage\n relationship: tosca.relationships.AttachesTo\n vHNF for DHV Test 17.link:\n occurrences: [1, 1]\n capability: tosca.capabilities.network.Linkable\n relationship: tosca.relationships.network.LinksTo\n Pri_Tunnel_Xconn 9.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Tunnel_Xconn 11.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\n Sec_Service_Admin 7.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Tunnel_Xconn 11.dependency:\n occurrences: [0, UNBOUNDED]\n capability: tosca.capabilities.Node\n node: tosca.nodes.Root\n relationship: tosca.relationships.DependsOn\n Sec_Service_Admin 7.service_dependency:\n occurrences: [1, 1]\n capability: com.att.d2.capabilities.AllottedResource\n node: tosca.services.Root\n relationship: tosca.relationships.DependsOn\ntosca_definitions_version: tosca_simple_yaml_1_0\n','b7a1b78e-6b6b-4b36-9698-8c9530da14af','a2a57fb1-213d-45a4-acd8-6a0f7b4e54b1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);
+/*!40000 ALTER TABLE `NETWORK_MODEL` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2020-08-17 9:58:13
diff --git a/ms/generic-resource-api/src/test/resources/network-assign-rpc.json b/ms/generic-resource-api/src/test/resources/network-assign-rpc.json
index d6b9782..f822180 100644
--- a/ms/generic-resource-api/src/test/resources/network-assign-rpc.json
+++ b/ms/generic-resource-api/src/test/resources/network-assign-rpc.json
@@ -51,7 +51,6 @@
]
},
"network-instance-group-id": "netgrp123",
- "network-name": "myNetwork",
"tenant": "k8s_tenant_1"
},
"network-information": {
diff --git a/ms/generic-resource-api/src/test/resources/service1-service.json b/ms/generic-resource-api/src/test/resources/service1-service.json
new file mode 100644
index 0000000..661b315
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/service1-service.json
@@ -0,0 +1,69 @@
+{
+ "service": [
+ {
+ "service-instance-id": "service1",
+ "service-data": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "request-id": "req123",
+ "order-number": "123",
+ "request-action": "CreateServiceInstance",
+ "order-version": "version1",
+ "source": "curl"
+ },
+ "service-request-input": {
+ "service-instance-name": "service-instance-1"
+ },
+ "service-information": {
+ "service-id": "service1",
+ "onap-model-information": {
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-version": "1920",
+ "model-customization-uuid": "12341234",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3"
+ },
+ "global-customer-id": "cust123",
+ "subscription-service-type": "test",
+ "service-instance-id": "service1",
+ "subscriber-name": "test"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "service1",
+ "service-instance-name": "service-instance-1",
+ "service-type": "test",
+ "global-customer-id": "cust123"
+ },
+ "onap-model-information": {
+ "model-invariant-uuid": "12341234",
+ "model-name": "vBNG_0202",
+ "model-version": "1920",
+ "model-customization-uuid": "12341234",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq123"
+ }
+ },
+ "service-status": {
+ "final-indicator": "Y",
+ "rpc-action": "assign",
+ "rpc-name": "service-topology-operation",
+ "response-code": "200",
+ "response-timestamp": "2020-08-17T12:29:24.031Z",
+ "response-message": "",
+ "action": "CreateServiceInstance",
+ "request-status": "synccomplete"
+ }
+ }
+ ]
+}
diff --git a/ms/generic-resource-api/src/test/resources/vnf-assign-rpc.json b/ms/generic-resource-api/src/test/resources/vnf-assign-rpc.json
new file mode 100644
index 0000000..36bffe2
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/vnf-assign-rpc.json
@@ -0,0 +1,87 @@
+{
+ "input": {
+ "request-information": {
+ "notification-url": "http://dev.null",
+ "order-number": "123",
+ "order-version": "version1",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "req123",
+ "source": "curl"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "http://dev.null",
+ "svc-request-id": "svcreq123"
+ },
+ "service-information": {
+ "global-customer-id": "cust123",
+ "onap-model-information": {
+ "model-customization-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-invariant-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ },
+ "service-id": "service1",
+ "service-instance-id": "service1",
+ "subscriber-name": "test",
+ "subscription-service-type": "test"
+ },
+ "vnf-information" : {
+ "onap-model-information": {
+ "model-customization-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-invariant-uuid": "367a8ba9-057a-4506-b106-fbae818597c6",
+ "model-name": "vBNG_0202",
+ "model-uuid": "00e50cbd-ef0f-4b28-821e-f2b583752dd3",
+ "model-version": "1920"
+ },
+ "vnf-id" : "vnf123",
+ "vnf-name" : "myVnf",
+ "vnf-type" : "router"
+ },
+ "vnf-request-input" : {
+ "aic-clli": "complexMC",
+ "aic-cloud-region": "k8s_region_1",
+ "cloud-owner": "k8sCloudOwner",
+ "tenant" : "k8s_tenant_1",
+ "vnf-input-parameters": {
+ "param": [
+ {
+ "name": "test-param",
+ "resource-resolution-data": {
+ "capability-name": "myCapability",
+ "payload": "myPayload",
+ "resource-key": [
+ {
+ "name": "resource1",
+ "value": "hello_world"
+ }
+ ],
+ "status": "Pending"
+ },
+ "value": "HiThere"
+ }
+ ]
+ },
+ "vnf-name" : "myVnf",
+ "vnf-network-instance-group-ids": [
+ {
+ "vnf-network-instance-group-id" : "netgrp123"
+ }
+ ],
+ "vnf-networks" : {
+ "vnf-network" : [
+ {
+ "contrail-network-fqdn" : "contrail.onap",
+ "is-trunked" : "true",
+ "network-id" : "net123",
+ "network-name" : "myNetwork",
+ "network-role" : "lan",
+ "neutron-id" : "neutron1234",
+ "segmentation-id" : "seg123"
+ }
+ ]
+ }
+ }
+ }
+}