Merge "bump the versions for all the SO to 1.6.0"
authorByung-Woo Jun <byung-woo.jun@est.tech>
Wed, 26 Feb 2020 12:39:41 +0000 (12:39 +0000)
committerGerrit Code Review <gerrit@onap.org>
Wed, 26 Feb 2020 12:39:41 +0000 (12:39 +0000)
50 files changed:
adapters/mso-vnfm-adapter/mso-vnfm-etsi-adapter/src/test/java/org/onap/so/adapters/vnfmadapter/rest/EtsiSubscriptionNotificationControllerTest.java
bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy [new file with mode: 0644]
bpmn/MSOCommonBPMN/src/main/java/org/onap/so/bpmn/servicedecomposition/tasks/BBInputSetupUtils.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/appc/tasks/AppcRunTasks.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/OrchestrationStatusValidator.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/WorkflowAction.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java [new file with mode: 0644]
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/adapter/network/mapper/NetworkAdapterObjectMapper.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/namingservice/NamingRequestObject.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/AAIServiceInstanceResources.java
bpmn/so-bpmn-tasks/src/main/java/org/onap/so/client/orchestration/NamingServiceResources.java
bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/ActDeActNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/AllocateAnNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/AllocateCnNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/CnSliceProfile.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/CreateCnNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/DeAllocateNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/EsrInfo.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/JobStatusRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/JobStatusResponse.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NetworkType.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NewNsst.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NsiInfo.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiActDeActRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiAllocateRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiCreateRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiDeAllocateRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiResponse.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiTerminateRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequest.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequestById.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssmiReqInfo.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/NssmiResInfo.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/PerfReq.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/PerfReqEmbbList.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/PerfReqUrllcList.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/PnfErrorList.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/ResourceSharingLevel.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/ResponseDescriptor.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/ResponseHistory.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/TerminateNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/UeMobilityLevel.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssi.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssiById.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/UpdateSliceProfile.java [new file with mode: 0644]
common/src/main/java/org/onap/so/beans/nsmf/VnfErrorList.java [new file with mode: 0644]

index 8012f7e..322251e 100644 (file)
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.onap.so.adapters.vnfmadapter.Constants.ETSI_SUBSCRIPTION_NOTIFICATION_CONTROLLER_BASE_URL;
 import static org.onap.so.client.RestTemplateConfig.CONFIGURABLE_REST_TEMPLATE;
+import static org.springframework.test.annotation.DirtiesContext.ClassMode.BEFORE_CLASS;
 import static org.springframework.test.web.client.match.MockRestRequestMatchers.*;
 import static org.springframework.test.web.client.response.MockRestResponseCreators.withStatus;
 import static org.springframework.test.web.client.response.MockRestResponseCreators.withSuccess;
@@ -57,6 +58,7 @@ import org.springframework.boot.web.server.LocalServerPort;
 import org.springframework.cache.Cache;
 import org.springframework.cache.CacheManager;
 import org.springframework.http.*;
+import org.springframework.test.annotation.DirtiesContext;
 import org.springframework.test.context.ActiveProfiles;
 import org.springframework.test.context.junit4.SpringRunner;
 import org.springframework.test.web.client.MockRestServiceServer;
@@ -74,6 +76,7 @@ import com.google.gson.GsonBuilder;
 @RunWith(SpringRunner.class)
 @SpringBootTest(classes = VnfmAdapterApplication.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles("test")
+@DirtiesContext(classMode = BEFORE_CLASS)
 public class EtsiSubscriptionNotificationControllerTest {
 
     @LocalServerPort
diff --git a/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy b/bpmn/MSOCommonBPMN/src/main/groovy/org/onap/so/bpmn/common/scripts/RequestDBUtil.groovy
new file mode 100644 (file)
index 0000000..ce474fa
--- /dev/null
@@ -0,0 +1,119 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ # Copyright (c) 2019, CMCC Technologies Co., Ltd.
+ #
+ # Licensed under the Apache License, Version 2.0 (the "License")
+ # you may not use this file except in compliance with the License.
+ # You may obtain a copy of the License at
+ #
+ #       http://www.apache.org/licenses/LICENSE-2.0
+ #
+ # Unless required by applicable law or agreed to in writing, software
+ # distributed under the License is distributed on an "AS IS" BASIS,
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+package org.onap.so.bpmn.common.scripts
+
+import org.camunda.bpm.engine.delegate.DelegateExecution
+import org.onap.so.bpmn.core.UrnPropertiesReader
+import org.onap.so.db.request.beans.OperationStatus
+import org.slf4j.Logger
+import org.slf4j.LoggerFactory
+import org.springframework.web.util.UriUtils
+
+class RequestDBUtil {
+    private static final Logger logger = LoggerFactory.getLogger( RequestDBUtil.class);
+    private ExceptionUtil exceptionUtil = new ExceptionUtil()
+
+    /**
+     * update operation status in requestDB
+     * @param execution
+     * @param operationStatus
+     */
+    void prepareUpdateOperationStatus(DelegateExecution execution, final OperationStatus operationStatus){
+        logger.debug("start prepareUpdateOperationStatus")
+        try{
+            def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)
+            execution.setVariable("dbAdapterEndpoint", dbAdapterEndpoint)
+            logger.debug("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            String serviceId = operationStatus.getServiceId()
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            String operationId = operationStatus.getOperationId()
+            String userId = operationStatus.getUserId()
+            String operationType = operationStatus.getOperation()
+            String result = operationStatus.getResult()
+            String progress = operationStatus.getProgress()
+            String operationContent = operationStatus.getOperationContent()
+            String reason = operationStatus.getReason()
+
+            String payload =
+                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                            <soapenv:Header/>
+                            <soapenv:Body>
+                                <ns:updateServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                                    <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                                    <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>
+                                    <operationType>${MsoUtils.xmlEscape(operationType)}</operationType>
+                                    <userId>${MsoUtils.xmlEscape(userId)}</userId>
+                                    <result>${MsoUtils.xmlEscape(result)}</result>
+                                    <operationContent>${MsoUtils.xmlEscape(operationContent)}</operationContent>
+                                    <progress>${MsoUtils.xmlEscape(progress)}</progress>
+                                    <reason>${MsoUtils.xmlEscape(reason)}</reason>
+                                </ns:updateServiceOperationStatus>
+                            </soapenv:Body>
+                        </soapenv:Envelope>
+                    """
+            execution.setVariable("updateOperationStatus", payload)
+
+        }catch(any){
+            String exceptionMessage = "Prepare update ServiceOperationStatus failed. cause - " + any.getMessage()
+            logger.debug(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+        logger.trace("finished update OperationStatus")
+    }
+
+
+    /**
+     * get operation status from requestDB by serviceId and operationId
+     * @param execution
+     * @param serviceId
+     * @param operationId
+     */
+    void getOperationStatus(DelegateExecution execution, String serviceId, String operationId) {
+        logger.trace("start getOperationStatus")
+        try {
+            def dbAdapterEndpoint = UrnPropertiesReader.getVariable("mso.adapters.openecomp.db.endpoint", execution)
+            execution.setVariable("dbAdapterEndpoint", dbAdapterEndpoint)
+            logger.trace("DB Adapter Endpoint is: " + dbAdapterEndpoint)
+
+            serviceId = UriUtils.encode(serviceId,"UTF-8")
+            operationId = UriUtils.encode(operationId,"UTF-8")
+            String payload =
+                    """<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
+                        xmlns:ns="http://org.onap.so/requestsdb">
+                            <soapenv:Header/>
+                            <soapenv:Body>
+                                <ns:getServiceOperationStatus xmlns:ns="http://org.onap.so/requestsdb">
+                                    <serviceId>${MsoUtils.xmlEscape(serviceId)}</serviceId>
+                                    <operationId>${MsoUtils.xmlEscape(operationId)}</operationId>                       
+                                </ns:getServiceOperationStatus>
+                            </soapenv:Body>
+                        </soapenv:Envelope>
+                    """
+            execution.setVariable("getOperationStatus", payload)
+
+        } catch(any){
+            String exceptionMessage = "Get ServiceOperationStatus failed. cause - " + any.getMessage()
+            logger.error(exceptionMessage)
+            exceptionUtil.buildAndThrowWorkflowException(execution, 7000, exceptionMessage)
+        }
+    }
+}
index ec7b613..e004e10 100644 (file)
@@ -24,6 +24,7 @@ package org.onap.so.bpmn.servicedecomposition.tasks;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -398,68 +399,37 @@ public class BBInputSetupUtils {
     }
 
     public Configuration getAAIConfiguration(String configurationId) {
-        return this.injectionHelper.getAaiClient()
-                .get(Configuration.class,
-                        AAIUriFactory.createResourceUri(AAIObjectType.CONFIGURATION, configurationId).depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No Configuration matched by id");
-                    return null;
-                });
+        return this.getConcreteAAIResource(Configuration.class, AAIObjectType.CONFIGURATION, configurationId);
     }
 
     public GenericVnf getAAIGenericVnf(String vnfId) {
-
-        return this.injectionHelper.getAaiClient()
-                .get(GenericVnf.class,
-                        AAIUriFactory.createResourceUri(AAIObjectType.GENERIC_VNF, vnfId).depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No Generic Vnf matched by id");
-                    return null;
-                });
+        return getConcreteAAIResource(GenericVnf.class, AAIObjectType.GENERIC_VNF, vnfId);
     }
 
     public VpnBinding getAAIVpnBinding(String vpnBindingId) {
-
-        return this.injectionHelper.getAaiClient()
-                .get(VpnBinding.class,
-                        AAIUriFactory.createResourceUri(AAIObjectType.VPN_BINDING, vpnBindingId).depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No VpnBinding matched by id");
-                    return null;
-                });
+        return getConcreteAAIResource(VpnBinding.class, AAIObjectType.VPN_BINDING, vpnBindingId);
     }
 
     public VolumeGroup getAAIVolumeGroup(String cloudOwnerId, String cloudRegionId, String volumeGroupId) {
-        return this.injectionHelper.getAaiClient()
-                .get(VolumeGroup.class, AAIUriFactory
-                        .createResourceUri(AAIObjectType.VOLUME_GROUP, cloudOwnerId, cloudRegionId, volumeGroupId)
-                        .depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No Generic Vnf matched by id");
-                    return null;
-                });
+        return getConcreteAAIResource(VolumeGroup.class, AAIObjectType.VOLUME_GROUP, cloudOwnerId, cloudRegionId,
+                volumeGroupId);
     }
 
     public VfModule getAAIVfModule(String vnfId, String vfModuleId) {
-        return this.injectionHelper.getAaiClient()
-                .get(VfModule.class,
-                        AAIUriFactory.createResourceUri(AAIObjectType.VF_MODULE, vnfId, vfModuleId).depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No Generic Vnf matched by id");
-                    return null;
-                });
+        return getConcreteAAIResource(VfModule.class, AAIObjectType.VF_MODULE, vnfId, vfModuleId);
     }
 
     public L3Network getAAIL3Network(String networkId) {
+        return getConcreteAAIResource(L3Network.class, AAIObjectType.L3_NETWORK, networkId);
+    }
 
-        return this.injectionHelper.getAaiClient()
-                .get(L3Network.class,
-                        AAIUriFactory.createResourceUri(AAIObjectType.L3_NETWORK, networkId).depth(Depth.ONE))
-                .orElseGet(() -> {
-                    logger.debug("No Generic Vnf matched by id");
+    private <T> T getConcreteAAIResource(Class<T> clazz, AAIObjectType objectType, Object... ids) {
+        return injectionHelper.getAaiClient()
+                .get(clazz, AAIUriFactory.createResourceUri(objectType, ids).depth(Depth.ONE)).orElseGet(() -> {
+                    logger.debug("No resource of type: {} matched by ids: {}", objectType.typeName(),
+                            Arrays.toString(ids));
                     return null;
                 });
-
     }
 
     public Optional<ServiceInstance> getRelatedServiceInstanceFromInstanceGroup(String instanceGroupId)
index 79ccd92..00d0fdc 100644 (file)
@@ -6,12 +6,14 @@
  * ================================================================================
  * Modifications Copyright (c) 2019 Samsung
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -29,7 +31,6 @@ import java.util.Optional;
 import org.onap.so.logger.LoggingAnchor;
 import org.json.JSONArray;
 import org.json.JSONObject;
-import org.onap.aai.domain.yang.Vserver;
 import org.onap.appc.client.lcm.model.Action;
 import org.onap.so.bpmn.common.BuildingBlockExecution;
 import org.onap.so.bpmn.core.json.JsonUtils;
@@ -143,7 +144,7 @@ public class AppcRunTasks {
 
             ControllerSelectionReference controllerSelectionReference = catalogDbClient
                     .getControllerSelectionReferenceByVnfTypeAndActionCategory(vnfType, action.toString());
-            String controllerType = null;
+            String controllerType;
             if (controllerSelectionReference != null) {
                 controllerType = controllerSelectionReference.getControllerName();
             } else {
@@ -191,13 +192,13 @@ public class AppcRunTasks {
         logger.error("Error Message: {}", appcMessage);
         logger.error("ERROR CODE: {}", appcCode);
         logger.trace("End of runAppCommand ");
-        if (appcCode != null && !appcCode.equals("0")) {
+        if (appcCode != null && !"0".equals(appcCode)) {
             exceptionUtil.buildAndThrowWorkflowException(execution, Integer.parseInt(appcCode), appcMessage);
         }
     }
 
     protected void mapRollbackVariables(BuildingBlockExecution execution, Action action, String appcCode) {
-        if (appcCode != null && appcCode.equals("0") && action != null) {
+        if ("0".equals(appcCode) && action != null) {
             if (action.equals(Action.Lock)) {
                 execution.setVariable(ROLLBACK_VNF_LOCK, true);
             } else if (action.equals(Action.Unlock)) {
@@ -216,7 +217,7 @@ public class AppcRunTasks {
 
     private HashMap<String, String> buildPayloadInfo(String vnfName, String aicIdentity, String vnfHostIpAddress,
             String vmIdList, String vserverIdList, String identityUrl, String vfModuleId) {
-        HashMap<String, String> payloadInfo = new HashMap<String, String>();
+        HashMap<String, String> payloadInfo = new HashMap<>();
         payloadInfo.put("vnfName", vnfName);
         payloadInfo.put("aicIdentity", aicIdentity);
         payloadInfo.put("vnfHostIpAddress", vnfHostIpAddress);
@@ -242,44 +243,39 @@ public class AppcRunTasks {
         return payload;
     }
 
-    protected void getVserversForAppc(BuildingBlockExecution execution, GenericVnf vnf) throws Exception {
+    protected void getVserversForAppc(BuildingBlockExecution execution, GenericVnf vnf) throws RuntimeException {
         AAIResultWrapper aaiRW = aaiVnfResources.queryVnfWrapperById(vnf);
 
-        if (aaiRW != null && aaiRW.getRelationships() != null && aaiRW.getRelationships().isPresent()) {
-            Relationships relationships = aaiRW.getRelationships().get();
-            if (relationships != null) {
-                List<AAIResourceUri> vserverUris = relationships.getRelatedAAIUris(AAIObjectType.VSERVER);
-                JSONArray vserverIds = new JSONArray();
-                JSONArray vserverSelfLinks = new JSONArray();
-                if (vserverUris != null) {
-                    for (AAIResourceUri j : vserverUris) {
-                        if (j != null) {
-                            if (j.getURIKeys() != null) {
-                                String vserverId = j.getURIKeys().get("vserver-id");
-                                vserverIds.put(vserverId);
-                            }
-                            Optional<Vserver> oVserver = aaiVnfResources.getVserver(j);
-                            if (oVserver.isPresent()) {
-                                Vserver vserver = oVserver.get();
-                                if (vserver != null) {
-                                    String vserverSelfLink = vserver.getVserverSelflink();
-                                    vserverSelfLinks.put(vserverSelfLink);
-                                }
-                            }
-                        }
+        if (aaiRW == null || aaiRW.getRelationships() == null || !aaiRW.getRelationships().isPresent()) {
+            return;
+        }
+        Relationships relationships = aaiRW.getRelationships().get();
+        List<AAIResourceUri> vserverUris = relationships.getRelatedAAIUris(AAIObjectType.VSERVER);
+        JSONArray vserverIds = new JSONArray();
+        JSONArray vserverSelfLinks = new JSONArray();
+        if (vserverUris != null) {
+            for (AAIResourceUri j : vserverUris) {
+                if (j != null) {
+                    if (j.getURIKeys() != null) {
+                        String vserverId = j.getURIKeys().get("vserver-id");
+                        vserverIds.put(vserverId);
                     }
+                    aaiVnfResources.getVserver(j).ifPresent((vserver) -> {
+                        String vserverSelfLink = vserver.getVserverSelflink();
+                        vserverSelfLinks.put(vserverSelfLink);
+                    });
                 }
-
-                JSONObject vmidsArray = new JSONObject();
-                JSONObject vserveridsArray = new JSONObject();
-                vmidsArray.put("vmIds", vserverSelfLinks.toString());
-                vserveridsArray.put("vserverIds", vserverIds.toString());
-                logger.debug("vmidsArray is: {}", vmidsArray.toString());
-                logger.debug("vserveridsArray is: {}", vserveridsArray.toString());
-
-                execution.setVariable("vmIdList", vmidsArray.toString());
-                execution.setVariable("vserverIdList", vserveridsArray.toString());
             }
         }
+
+        JSONObject vmidsArray = new JSONObject();
+        JSONObject vserveridsArray = new JSONObject();
+        vmidsArray.put("vmIds", vserverSelfLinks.toString());
+        vserveridsArray.put("vserverIds", vserverIds.toString());
+        logger.debug("vmidsArray is: {}", vmidsArray.toString());
+        logger.debug("vserveridsArray is: {}", vserveridsArray.toString());
+
+        execution.setVariable("vmIdList", vmidsArray.toString());
+        execution.setVariable("vserverIdList", vserveridsArray.toString());
     }
 }
index 64f0072..1cde9fb 100644 (file)
@@ -6,6 +6,8 @@
  * ================================================================================
  * Modifications Copyright (c) 2019 Samsung
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -29,11 +31,9 @@ import org.onap.so.client.exception.BBObjectNotFoundException;
 import org.onap.so.client.exception.ExceptionBuilder;
 import org.onap.so.client.exception.OrchestrationStatusValidationException;
 import org.onap.so.db.catalog.beans.BuildingBlockDetail;
-import org.onap.so.db.catalog.beans.OrchestrationAction;
 import org.onap.so.db.catalog.beans.OrchestrationStatus;
 import org.onap.so.db.catalog.beans.OrchestrationStatusStateTransitionDirective;
 import org.onap.so.db.catalog.beans.OrchestrationStatusValidationDirective;
-import org.onap.so.db.catalog.beans.ResourceType;
 import org.onap.so.db.catalog.client.CatalogDbClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,8 +52,6 @@ public class OrchestrationStatusValidator {
             "Orchestration Status Validation failed. ResourceType=(%s), TargetAction=(%s), OrchestrationStatus=(%s)";
     private static final String ORCHESTRATION_STATUS_VALIDATION_RESULT = "orchestrationStatusValidationResult";
     private static final String ALACARTE = "aLaCarte";
-    private static final String MULTI_STAGE_DESIGN_OFF = "false";
-    private static final String MULTI_STAGE_DESIGN_ON = "true";
 
     @Autowired
     private ExtractPojosForBB extractPojosForBB;
@@ -86,7 +84,7 @@ public class OrchestrationStatusValidator {
                         String.format(BUILDING_BLOCK_DETAIL_NOT_FOUND, buildingBlockFlowName));
             }
 
-            OrchestrationStatus orchestrationStatus = null;
+            OrchestrationStatus orchestrationStatus;
 
             switch (buildingBlockDetail.getResourceType()) {
                 case SERVICE:
index 9ee0104..f8a4d91 100644 (file)
@@ -47,6 +47,7 @@ import org.onap.aai.domain.yang.Vnfc;
 import org.onap.aai.domain.yang.VolumeGroup;
 import org.onap.aai.domain.yang.VpnBinding;
 import org.onap.so.bpmn.common.BBConstants;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.utils.WorkflowResourceIdsUtils;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
 import org.onap.so.bpmn.servicedecomposition.entities.BuildingBlock;
@@ -185,7 +186,7 @@ public class WorkflowAction {
         List<ExecuteBuildingBlock> flowsToExecute = new ArrayList<>();
         WorkflowResourceIds workflowResourceIds = populateResourceIdsFromApiHandler(execution);
         List<Pair<WorkflowType, String>> aaiResourceIds = new ArrayList<>();
-        List<Resource> resourceCounter = new ArrayList<>();
+        List<Resource> resourceList = new ArrayList<>();
         execution.setVariable("sentSyncResponse", false);
         execution.setVariable("homing", false);
         execution.setVariable("calledHoming", false);
@@ -304,7 +305,7 @@ public class WorkflowAction {
                                 }
                             }
                             if (containsService) {
-                                traverseUserParamsService(execution, resourceCounter, sIRequest, requestAction);
+                                traverseUserParamsService(execution, resourceList, sIRequest, requestAction);
                             }
                         } else {
                             buildAndThrowException(execution,
@@ -327,11 +328,10 @@ public class WorkflowAction {
                             }
                         }
                         if (containsService) {
-                            foundRelated =
-                                    traverseUserParamsService(execution, resourceCounter, sIRequest, requestAction);
+                            foundRelated = traverseUserParamsService(execution, resourceList, sIRequest, requestAction);
                         }
                         if (!foundRelated) {
-                            traverseCatalogDbService(execution, sIRequest, resourceCounter, aaiResourceIds);
+                            traverseCatalogDbService(execution, sIRequest, resourceList, aaiResourceIds);
                         }
                     } else if (resourceType == WorkflowType.SERVICE
                             && ("activateInstance".equalsIgnoreCase(requestAction)
@@ -342,20 +342,20 @@ public class WorkflowAction {
                         // SERVICE-MACRO-DELETE
                         // Will never get user params with service, macro will have
                         // to query the SI in AAI to find related instances.
-                        traverseAAIService(execution, resourceCounter, resourceId, aaiResourceIds);
+                        traverseAAIService(execution, resourceList, resourceId, aaiResourceIds);
                     } else if (resourceType == WorkflowType.SERVICE
                             && "deactivateInstance".equalsIgnoreCase(requestAction)) {
-                        resourceCounter.add(new Resource(WorkflowType.SERVICE, "", false));
+                        resourceList.add(new Resource(WorkflowType.SERVICE, "", false));
                     } else if (resourceType == WorkflowType.VNF && ("replaceInstance".equalsIgnoreCase(requestAction)
                             || ("recreateInstance".equalsIgnoreCase(requestAction)))) {
-                        traverseAAIVnf(execution, resourceCounter, workflowResourceIds.getServiceInstanceId(),
+                        traverseAAIVnf(execution, resourceList, workflowResourceIds.getServiceInstanceId(),
                                 workflowResourceIds.getVnfId(), aaiResourceIds);
                     } else {
                         buildAndThrowException(execution, "Current Macro Request is not supported");
                     }
                     String foundObjects = "";
                     for (WorkflowType type : WorkflowType.values()) {
-                        foundObjects = foundObjects + type + " - " + resourceCounter.stream()
+                        foundObjects = foundObjects + type + " - " + resourceList.stream()
                                 .filter(x -> type.equals(x.getResourceType())).collect(Collectors.toList()).size()
                                 + "    ";
                     }
@@ -370,9 +370,9 @@ public class WorkflowAction {
                             || "replaceInstanceRetainAssignments".equalsIgnoreCase(requestAction))) {
                         vnfReplace = true;
                     }
-                    flowsToExecute = buildExecuteBuildingBlockList(orchFlows, resourceCounter, requestId, apiVersion,
+                    flowsToExecute = buildExecuteBuildingBlockList(orchFlows, resourceList, requestId, apiVersion,
                             resourceId, requestAction, vnfType, workflowResourceIds, requestDetails, vnfReplace);
-                    if (!resourceCounter.stream().filter(x -> WorkflowType.NETWORKCOLLECTION == x.getResourceType())
+                    if (!resourceList.stream().filter(x -> WorkflowType.NETWORKCOLLECTION == x.getResourceType())
                             .collect(Collectors.toList()).isEmpty()) {
                         logger.info("Sorting for Vlan Tagging");
                         flowsToExecute = sortExecutionPathByObjectForVlanTagging(flowsToExecute, requestAction);
@@ -380,16 +380,16 @@ public class WorkflowAction {
                     // By default, enable homing at VNF level for CREATEINSTANCE and ASSIGNINSTANCE
                     if (resourceType == WorkflowType.SERVICE
                             && (requestAction.equals(CREATEINSTANCE) || requestAction.equals(ASSIGNINSTANCE))
-                            && !resourceCounter.stream().filter(x -> WorkflowType.VNF.equals(x.getResourceType()))
+                            && !resourceList.stream().filter(x -> WorkflowType.VNF.equals(x.getResourceType()))
                                     .collect(Collectors.toList()).isEmpty()) {
                         execution.setVariable("homing", true);
                         execution.setVariable("calledHoming", false);
                     }
                     if (resourceType == WorkflowType.SERVICE && (requestAction.equalsIgnoreCase(ASSIGNINSTANCE)
                             || requestAction.equalsIgnoreCase(CREATEINSTANCE))) {
-                        generateResourceIds(flowsToExecute, resourceCounter, serviceInstanceId);
+                        generateResourceIds(flowsToExecute, resourceList, serviceInstanceId);
                     } else {
-                        updateResourceIdsFromAAITraversal(flowsToExecute, resourceCounter, aaiResourceIds,
+                        updateResourceIdsFromAAITraversal(flowsToExecute, resourceList, aaiResourceIds,
                                 serviceInstanceId);
                     }
                 }
@@ -471,9 +471,7 @@ public class WorkflowAction {
             List<AAIResultWrapper> vnfcResultWrappers = relationships.getByType(type);
             for (AAIResultWrapper vnfcResultWrapper : vnfcResultWrappers) {
                 Optional<T> vnfcOp = vnfcResultWrapper.asBean(resultClass);
-                if (vnfcOp.isPresent()) {
-                    vnfcs.add(vnfcOp.get());
-                }
+                vnfcOp.ifPresent(vnfcs::add);
             }
         }
         return vnfcs;
@@ -493,9 +491,7 @@ public class WorkflowAction {
                     this.getResultWrappersFromRelationships(relationships, type);
             for (AAIResultWrapper configurationResultWrapper : configurationResultWrappers) {
                 Optional<T> configurationOp = configurationResultWrapper.asBean(resultClass);
-                if (configurationOp.isPresent()) {
-                    configurations.add(configurationOp.get());
-                }
+                configurationOp.ifPresent(configurations::add);
             }
         }
         return configurations;
@@ -574,8 +570,6 @@ public class WorkflowAction {
     protected List<OrchestrationFlow> getVfModuleReplaceBuildingBlocks(ConfigBuildingBlocksDataObject dataObj)
             throws Exception {
 
-        List<ExecuteBuildingBlock> flowsToExecuteConfigs = new ArrayList<>();
-
         String vnfId = dataObj.getWorkflowResourceIds().getVnfId();
         String vfModuleId = dataObj.getWorkflowResourceIds().getVfModuleId();
 
@@ -639,19 +633,15 @@ public class WorkflowAction {
         if (!relationshipsOp.isPresent()) {
             logger.debug("No relationships were found for Configuration in AAI");
             return null;
-        } else {
-            Relationships relationships = relationshipsOp.get();
-            List<AAIResultWrapper> vnfcResultWrappers = relationships.getByType(AAIObjectType.VNFC);
-            if (vnfcResultWrappers.size() > 1 || vnfcResultWrappers.isEmpty()) {
-                logger.debug("Too many vnfcs or no vnfc found that are related to configuration");
-            }
-            Optional<Vnfc> vnfcOp = vnfcResultWrappers.get(0).asBean(Vnfc.class);
-            if (vnfcOp.isPresent()) {
-                return vnfcOp.get().getVnfcName();
-            } else {
-                return null;
-            }
         }
+        Relationships relationships = relationshipsOp.get();
+        List<AAIResultWrapper> vnfcResultWrappers = relationships.getByType(AAIObjectType.VNFC);
+        if (vnfcResultWrappers.size() > 1 || vnfcResultWrappers.isEmpty()) {
+            logger.debug("Too many vnfcs or no vnfc found that are related to configuration");
+        }
+        Optional<Vnfc> vnfcOp = vnfcResultWrappers.get(0).asBean(Vnfc.class);
+        return vnfcOp.map(Vnfc::getVnfcName).orElse(null);
+
     }
 
     protected List<Resource> sortVfModulesByBaseFirst(List<Resource> vfModuleResources) {
@@ -679,18 +669,15 @@ public class WorkflowAction {
     }
 
     private void updateResourceIdsFromAAITraversal(List<ExecuteBuildingBlock> flowsToExecute,
-            List<Resource> resourceCounter, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
+            List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds, String serviceInstanceId) {
         for (Pair<WorkflowType, String> pair : aaiResourceIds) {
             logger.debug(pair.getValue0() + ", " + pair.getValue1());
         }
 
         Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE)).forEach(type -> {
-            List<Resource> resources =
-                    resourceCounter.stream().filter(x -> type.equals(x.getResourceType())).collect(Collectors.toList());
-            for (int i = 0; i < resources.size(); i++) {
-                updateWorkflowResourceIds(flowsToExecute, type, resources.get(i).getResourceId(),
-                        retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId);
-            }
+            resourceList.stream().filter(resource -> type.equals(resource.getResourceType()))
+                    .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource.getResourceId(),
+                            retrieveAAIResourceId(aaiResourceIds, type), null, serviceInstanceId));
         });
     }
 
@@ -706,21 +693,16 @@ public class WorkflowAction {
         return id;
     }
 
-    private void generateResourceIds(List<ExecuteBuildingBlock> flowsToExecute, List<Resource> resourceCounter,
+    private void generateResourceIds(List<ExecuteBuildingBlock> flowsToExecute, List<Resource> resourceList,
             String serviceInstanceId) {
         Arrays.stream(WorkflowType.values()).filter(type -> !type.equals(WorkflowType.SERVICE)).forEach(type -> {
-            List<Resource> resources =
-                    resourceCounter.stream().filter(x -> type.equals(x.getResourceType())).collect(Collectors.toList());
-            for (int i = 0; i < resources.size(); i++) {
-                Resource resource = resourceCounter.stream().filter(x -> type.equals(x.getResourceType()))
-                        .collect(Collectors.toList()).get(i);
-                updateWorkflowResourceIds(flowsToExecute, type, resource.getResourceId(), null,
-                        resource.getVirtualLinkKey(), serviceInstanceId);
-            }
+            resourceList.stream().filter(resource -> type.equals(resource.getResourceType()))
+                    .forEach(resource -> updateWorkflowResourceIds(flowsToExecute, type, resource.getResourceId(), null,
+                            resource.getVirtualLinkKey(), serviceInstanceId));
         });
     }
 
-    protected void updateWorkflowResourceIds(List<ExecuteBuildingBlock> flowsToExecute, WorkflowType resource,
+    protected void updateWorkflowResourceIds(List<ExecuteBuildingBlock> flowsToExecute, WorkflowType resourceType,
             String key, String id, String virtualLinkKey, String serviceInstanceId) {
         String resourceId = id;
         if (resourceId == null) {
@@ -728,24 +710,10 @@ public class WorkflowAction {
         }
         for (ExecuteBuildingBlock ebb : flowsToExecute) {
             if (key != null && key.equalsIgnoreCase(ebb.getBuildingBlock().getKey())
-                    && ebb.getBuildingBlock().getBpmnFlowName().contains(resource.toString())) {
+                    && ebb.getBuildingBlock().getBpmnFlowName().contains(resourceType.toString())) {
                 WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
                 workflowResourceIds.setServiceInstanceId(serviceInstanceId);
-                if (resource == WorkflowType.VNF) {
-                    workflowResourceIds.setVnfId(resourceId);
-                } else if (resource == WorkflowType.PNF) {
-                    workflowResourceIds.setPnfId(resourceId);
-                } else if (resource == WorkflowType.VFMODULE) {
-                    workflowResourceIds.setVfModuleId(resourceId);
-                } else if (resource == WorkflowType.VOLUMEGROUP) {
-                    workflowResourceIds.setVolumeGroupId(resourceId);
-                } else if (resource == WorkflowType.NETWORK) {
-                    workflowResourceIds.setNetworkId(resourceId);
-                } else if (resource == WorkflowType.NETWORKCOLLECTION) {
-                    workflowResourceIds.setNetworkCollectionId(resourceId);
-                } else if (resource == WorkflowType.CONFIGURATION) {
-                    workflowResourceIds.setConfigurationId(resourceId);
-                }
+                WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, resourceType, resourceId);
                 ebb.setWorkflowResourceIds(workflowResourceIds);
             }
             if (virtualLinkKey != null && ebb.getBuildingBlock().isVirtualLink()
@@ -779,29 +747,28 @@ public class WorkflowAction {
     }
 
     protected void traverseCatalogDbService(DelegateExecution execution, ServiceInstancesRequest sIRequest,
-            List<Resource> resourceCounter, List<Pair<WorkflowType, String>> aaiResourceIds)
+            List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds)
             throws JsonProcessingException, VrfBondingServiceException {
         String modelUUID = sIRequest.getRequestDetails().getModelInfo().getModelVersionId();
         org.onap.so.db.catalog.beans.Service service = catalogDbClient.getServiceByID(modelUUID);
         if (service == null) {
             buildAndThrowException(execution, "Could not find the service model in catalog db.");
         } else {
-            resourceCounter.add(new Resource(WorkflowType.SERVICE, service.getModelUUID(), false));
+            resourceList.add(new Resource(WorkflowType.SERVICE, service.getModelUUID(), false));
             RelatedInstance relatedVpnBinding =
                     bbInputSetupUtils.getRelatedInstanceByType(sIRequest.getRequestDetails(), ModelType.vpnBinding);
             RelatedInstance relatedLocalNetwork =
                     bbInputSetupUtils.getRelatedInstanceByType(sIRequest.getRequestDetails(), ModelType.network);
             if (relatedVpnBinding != null && relatedLocalNetwork != null) {
-                traverseVrfConfiguration(aaiResourceIds, resourceCounter, service, relatedVpnBinding,
-                        relatedLocalNetwork);
+                traverseVrfConfiguration(aaiResourceIds, resourceList, service, relatedVpnBinding, relatedLocalNetwork);
             } else {
-                traverseNetworkCollection(execution, resourceCounter, service);
+                traverseNetworkCollection(execution, resourceList, service);
             }
         }
     }
 
     protected void traverseVrfConfiguration(List<Pair<WorkflowType, String>> aaiResourceIds,
-            List<Resource> resourceCounter, org.onap.so.db.catalog.beans.Service service,
+            List<Resource> resourceList, org.onap.so.db.catalog.beans.Service service,
             RelatedInstance relatedVpnBinding, RelatedInstance relatedLocalNetwork)
             throws VrfBondingServiceException, JsonProcessingException {
         org.onap.aai.domain.yang.L3Network aaiLocalNetwork =
@@ -816,9 +783,9 @@ public class WorkflowAction {
         vrfValidation.aaiRouteTargetValidation(aaiLocalNetwork);
         String existingAAIVrfConfiguration = getExistingAAIVrfConfiguration(relatedVpnBinding, aaiLocalNetwork);
         if (existingAAIVrfConfiguration != null) {
-            aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION, existingAAIVrfConfiguration));
+            aaiResourceIds.add(new Pair<>(WorkflowType.CONFIGURATION, existingAAIVrfConfiguration));
         }
-        resourceCounter.add(new Resource(WorkflowType.CONFIGURATION,
+        resourceList.add(new Resource(WorkflowType.CONFIGURATION,
                 service.getConfigurationCustomizations().get(0).getModelCustomizationUUID(), false));
 
     }
@@ -869,7 +836,7 @@ public class WorkflowAction {
         return false;
     }
 
-    protected void traverseNetworkCollection(DelegateExecution execution, List<Resource> resourceCounter,
+    protected void traverseNetworkCollection(DelegateExecution execution, List<Resource> resourceList,
             org.onap.so.db.catalog.beans.Service service) {
         if (service.getVnfCustomizations() == null || service.getVnfCustomizations().isEmpty()) {
             List<CollectionResourceCustomization> customizations = service.getCollectionResourceCustomizations();
@@ -879,7 +846,7 @@ public class WorkflowAction {
                 CollectionResourceCustomization collectionResourceCustomization =
                         findCatalogNetworkCollection(execution, service);
                 if (collectionResourceCustomization != null) {
-                    resourceCounter.add(new Resource(WorkflowType.NETWORKCOLLECTION,
+                    resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION,
                             collectionResourceCustomization.getModelCustomizationUUID(), false));
                     logger.debug("Found a network collection");
                     if (collectionResourceCustomization.getCollectionResource() != null) {
@@ -921,7 +888,7 @@ public class WorkflowAction {
                                         Resource resource = new Resource(WorkflowType.VIRTUAL_LINK,
                                                 collectionNetworkResourceCust.getModelCustomizationUUID(), false);
                                         resource.setVirtualLinkKey(Integer.toString(i));
-                                        resourceCounter.add(resource);
+                                        resourceList.add(resource);
                                     }
                                 }
                             } else {
@@ -938,13 +905,13 @@ public class WorkflowAction {
                     logger.debug("No Network Collection Customization found");
                 }
             }
-            if (resourceCounter.stream().filter(x -> WorkflowType.NETWORKCOLLECTION == x.getResourceType())
+            if (resourceList.stream().filter(x -> WorkflowType.NETWORKCOLLECTION == x.getResourceType())
                     .collect(Collectors.toList()).isEmpty()) {
                 if (service.getNetworkCustomizations() == null) {
                     logger.debug("No networks were found on this service model");
                 } else {
                     for (int i = 0; i < service.getNetworkCustomizations().size(); i++) {
-                        resourceCounter.add(new Resource(WorkflowType.NETWORK,
+                        resourceList.add(new Resource(WorkflowType.NETWORK,
                                 service.getNetworkCustomizations().get(i).getModelCustomizationUUID(), false));
                     }
                 }
@@ -955,32 +922,30 @@ public class WorkflowAction {
         }
     }
 
-    protected void traverseAAIService(DelegateExecution execution, List<Resource> resourceCounter, String resourceId,
+    protected void traverseAAIService(DelegateExecution execution, List<Resource> resourceList, String resourceId,
             List<Pair<WorkflowType, String>> aaiResourceIds) {
         try {
             ServiceInstance serviceInstanceAAI = bbInputSetupUtils.getAAIServiceInstanceById(resourceId);
             org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
                     bbInputSetup.getExistingServiceInstance(serviceInstanceAAI);
-            resourceCounter.add(new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false));
+            resourceList.add(new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false));
             if (serviceInstanceMSO.getVnfs() != null) {
                 for (org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf : serviceInstanceMSO.getVnfs()) {
-                    aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, vnf.getVnfId()));
-                    resourceCounter.add(new Resource(WorkflowType.VNF, vnf.getVnfId(), false));
+                    aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
+                    resourceList.add(new Resource(WorkflowType.VNF, vnf.getVnfId(), false));
                     if (vnf.getVfModules() != null) {
                         for (VfModule vfModule : vnf.getVfModules()) {
-                            aaiResourceIds.add(
-                                    new Pair<WorkflowType, String>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
+                            aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
                             Resource resource = new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false);
                             resource.setBaseVfModule(vfModule.getModelInfoVfModule().getIsBaseBoolean());
-                            resourceCounter.add(resource);
+                            resourceList.add(resource);
                         }
                     }
                     if (vnf.getVolumeGroups() != null) {
                         for (org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup : vnf
                                 .getVolumeGroups()) {
-                            aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP,
-                                    volumeGroup.getVolumeGroupId()));
-                            resourceCounter
+                            aaiResourceIds.add(new Pair<>(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId()));
+                            resourceList
                                     .add(new Resource(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId(), false));
                         }
                     }
@@ -989,15 +954,15 @@ public class WorkflowAction {
             if (serviceInstanceMSO.getNetworks() != null) {
                 for (org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network network : serviceInstanceMSO
                         .getNetworks()) {
-                    aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORK, network.getNetworkId()));
-                    resourceCounter.add(new Resource(WorkflowType.NETWORK, network.getNetworkId(), false));
+                    aaiResourceIds.add(new Pair<>(WorkflowType.NETWORK, network.getNetworkId()));
+                    resourceList.add(new Resource(WorkflowType.NETWORK, network.getNetworkId(), false));
                 }
             }
             if (serviceInstanceMSO.getCollection() != null) {
                 logger.debug("found networkcollection");
-                aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.NETWORKCOLLECTION,
-                        serviceInstanceMSO.getCollection().getId()));
-                resourceCounter.add(new Resource(WorkflowType.NETWORKCOLLECTION,
+                aaiResourceIds
+                        .add(new Pair<>(WorkflowType.NETWORKCOLLECTION, serviceInstanceMSO.getCollection().getId()));
+                resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION,
                         serviceInstanceMSO.getCollection().getId(), false));
             }
             if (serviceInstanceMSO.getConfigurations() != null) {
@@ -1008,9 +973,8 @@ public class WorkflowAction {
                         for (Relationship relationship : aaiConfig.get().getRelationshipList().getRelationship()) {
                             if (relationship.getRelatedTo().contains("vnfc")
                                     || relationship.getRelatedTo().contains("vpn-binding")) {
-                                aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION,
-                                        config.getConfigurationId()));
-                                resourceCounter.add(
+                                aaiResourceIds.add(new Pair<>(WorkflowType.CONFIGURATION, config.getConfigurationId()));
+                                resourceList.add(
                                         new Resource(WorkflowType.CONFIGURATION, config.getConfigurationId(), false));
                                 break;
                             }
@@ -1025,34 +989,32 @@ public class WorkflowAction {
         }
     }
 
-    private void traverseAAIVnf(DelegateExecution execution, List<Resource> resourceCounter, String serviceId,
+    private void traverseAAIVnf(DelegateExecution execution, List<Resource> resourceList, String serviceId,
             String vnfId, List<Pair<WorkflowType, String>> aaiResourceIds) {
         try {
             ServiceInstance serviceInstanceAAI = bbInputSetupUtils.getAAIServiceInstanceById(serviceId);
             org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance serviceInstanceMSO =
                     bbInputSetup.getExistingServiceInstance(serviceInstanceAAI);
-            resourceCounter.add(new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false));
+            resourceList.add(new Resource(WorkflowType.SERVICE, serviceInstanceMSO.getServiceInstanceId(), false));
             if (serviceInstanceMSO.getVnfs() != null) {
                 for (org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf vnf : serviceInstanceMSO.getVnfs()) {
                     if (vnf.getVnfId().equals(vnfId)) {
-                        aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VNF, vnf.getVnfId()));
-                        resourceCounter.add(new Resource(WorkflowType.VNF, vnf.getVnfId(), false));
+                        aaiResourceIds.add(new Pair<>(WorkflowType.VNF, vnf.getVnfId()));
+                        resourceList.add(new Resource(WorkflowType.VNF, vnf.getVnfId(), false));
                         if (vnf.getVfModules() != null) {
                             for (VfModule vfModule : vnf.getVfModules()) {
-                                aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VFMODULE,
-                                        vfModule.getVfModuleId()));
-                                resourceCounter
-                                        .add(new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false));
+                                aaiResourceIds.add(new Pair<>(WorkflowType.VFMODULE, vfModule.getVfModuleId()));
+                                resourceList.add(new Resource(WorkflowType.VFMODULE, vfModule.getVfModuleId(), false));
                                 findConfigurationsInsideVfModule(execution, vnf.getVnfId(), vfModule.getVfModuleId(),
-                                        resourceCounter, aaiResourceIds);
+                                        resourceList, aaiResourceIds);
                             }
                         }
                         if (vnf.getVolumeGroups() != null) {
                             for (org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup volumeGroup : vnf
                                     .getVolumeGroups()) {
-                                aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.VOLUMEGROUP,
-                                        volumeGroup.getVolumeGroupId()));
-                                resourceCounter.add(
+                                aaiResourceIds
+                                        .add(new Pair<>(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId()));
+                                resourceList.add(
                                         new Resource(WorkflowType.VOLUMEGROUP, volumeGroup.getVolumeGroupId(), false));
                             }
                         }
@@ -1068,7 +1030,7 @@ public class WorkflowAction {
     }
 
     private void findConfigurationsInsideVfModule(DelegateExecution execution, String vnfId, String vfModuleId,
-            List<Resource> resourceCounter, List<Pair<WorkflowType, String>> aaiResourceIds) {
+            List<Resource> resourceList, List<Pair<WorkflowType, String>> aaiResourceIds) {
         try {
             org.onap.aai.domain.yang.VfModule aaiVfModule = bbInputSetupUtils.getAAIVfModule(vnfId, vfModuleId);
             AAIResultWrapper vfModuleWrapper = new AAIResultWrapper(
@@ -1081,9 +1043,8 @@ public class WorkflowAction {
                     Optional<Configuration> config =
                             workflowActionUtils.extractRelationshipsConfiguration(relationshipsOp.get());
                     if (config.isPresent()) {
-                        aaiResourceIds.add(new Pair<WorkflowType, String>(WorkflowType.CONFIGURATION,
-                                config.get().getConfigurationId()));
-                        resourceCounter.add(
+                        aaiResourceIds.add(new Pair<>(WorkflowType.CONFIGURATION, config.get().getConfigurationId()));
+                        resourceList.add(
                                 new Resource(WorkflowType.CONFIGURATION, config.get().getConfigurationId(), false));
                     }
                 }
@@ -1094,7 +1055,7 @@ public class WorkflowAction {
         }
     }
 
-    protected boolean traverseUserParamsService(DelegateExecution execution, List<Resource> resourceCounter,
+    protected boolean traverseUserParamsService(DelegateExecution execution, List<Resource> resourceList,
             ServiceInstancesRequest sIRequest, String requestAction) throws IOException {
         boolean foundRelated = false;
         boolean foundVfModuleOrVG = false;
@@ -1107,11 +1068,11 @@ public class WorkflowAction {
                     ObjectMapper obj = new ObjectMapper();
                     String input = obj.writeValueAsString(params.get(USERPARAMSERVICE));
                     Service validate = obj.readValue(input, Service.class);
-                    resourceCounter.add(
+                    resourceList.add(
                             new Resource(WorkflowType.SERVICE, validate.getModelInfo().getModelVersionId(), false));
                     if (validate.getResources().getVnfs() != null) {
                         for (Vnfs vnf : validate.getResources().getVnfs()) {
-                            resourceCounter.add(new Resource(WorkflowType.VNF,
+                            resourceList.add(new Resource(WorkflowType.VNF,
                                     vnf.getModelInfo().getModelCustomizationId(), false));
                             foundRelated = true;
                             if (vnf.getModelInfo() != null && vnf.getModelInfo().getModelCustomizationUuid() != null) {
@@ -1127,7 +1088,7 @@ public class WorkflowAction {
                                         if (vfModuleCustomization.getVfModule() != null
                                                 && vfModuleCustomization.getVfModule().getVolumeHeatTemplate() != null
                                                 && vfModuleCustomization.getVolumeHeatEnv() != null) {
-                                            resourceCounter.add(new Resource(WorkflowType.VOLUMEGROUP,
+                                            resourceList.add(new Resource(WorkflowType.VOLUMEGROUP,
                                                     vfModuleCustomization.getModelCustomizationUUID(), false));
                                             foundRelated = true;
                                             foundVfModuleOrVG = true;
@@ -1146,7 +1107,7 @@ public class WorkflowAction {
                                             } else {
                                                 resource.setBaseVfModule(false);
                                             }
-                                            resourceCounter.add(resource);
+                                            resourceList.add(resource);
                                             if (vfModule.getModelInfo() != null
                                                     && vfModule.getModelInfo().getModelCustomizationUuid() != null) {
                                                 vfModuleCustomizationUUID =
@@ -1165,7 +1126,7 @@ public class WorkflowAction {
                                                             vnf.getModelInfo().getModelCustomizationId());
                                                     resource.setVfModuleCustomizationId(
                                                             vfModule.getModelInfo().getModelCustomizationId());
-                                                    resourceCounter.add(configResource);
+                                                    resourceList.add(configResource);
                                                 }
                                             }
                                         }
@@ -1180,22 +1141,21 @@ public class WorkflowAction {
                     }
                     if (validate.getResources().getPnfs() != null) {
                         for (Pnfs pnf : validate.getResources().getPnfs()) {
-                            resourceCounter.add(new Resource(WorkflowType.PNF,
+                            resourceList.add(new Resource(WorkflowType.PNF,
                                     pnf.getModelInfo().getModelCustomizationId(), false));
                             foundRelated = true;
                         }
                     }
                     if (validate.getResources().getNetworks() != null) {
                         for (Networks network : validate.getResources().getNetworks()) {
-                            resourceCounter.add(new Resource(WorkflowType.NETWORK,
+                            resourceList.add(new Resource(WorkflowType.NETWORK,
                                     network.getModelInfo().getModelCustomizationId(), false));
                             foundRelated = true;
                         }
                         if (requestAction.equals(CREATEINSTANCE)) {
                             String networkColCustId = queryCatalogDBforNetworkCollection(execution, sIRequest);
                             if (networkColCustId != null) {
-                                resourceCounter
-                                        .add(new Resource(WorkflowType.NETWORKCOLLECTION, networkColCustId, false));
+                                resourceList.add(new Resource(WorkflowType.NETWORKCOLLECTION, networkColCustId, false));
                                 foundRelated = true;
                             }
                         }
@@ -1242,21 +1202,14 @@ public class WorkflowAction {
     }
 
     protected WorkflowResourceIds populateResourceIdsFromApiHandler(DelegateExecution execution) {
-        WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
-        workflowResourceIds.setServiceInstanceId((String) execution.getVariable("serviceInstanceId"));
-        workflowResourceIds.setNetworkId((String) execution.getVariable("networkId"));
-        workflowResourceIds.setVfModuleId((String) execution.getVariable("vfModuleId"));
-        workflowResourceIds.setVnfId((String) execution.getVariable("vnfId"));
-        workflowResourceIds.setVolumeGroupId((String) execution.getVariable("volumeGroupId"));
-        workflowResourceIds.setInstanceGroupId((String) execution.getVariable("instanceGroupId"));
-        return workflowResourceIds;
+        return WorkflowResourceIdsUtils.getWorkflowResourceIdsFromExecution(execution);
     }
 
     protected Resource extractResourceIdAndTypeFromUri(String uri) {
         Pattern patt = Pattern.compile("[vV]\\d+.*?(?:(?:/(?<type>" + SUPPORTEDTYPES
                 + ")(?:/(?<id>[^/]+))?)(?:/(?<action>[^/]+))?(?:/resume)?)?$");
         Matcher m = patt.matcher(uri);
-        Boolean generated = false;
+        boolean generated = false;
 
         if (m.find()) {
             logger.debug("found match on {} : {} ", uri, m);
@@ -1366,7 +1319,7 @@ public class WorkflowAction {
                 } else if (ebb.getBuildingBlock().getBpmnFlowName().equals(CREATENETWORKBB)
                         || ebb.getBuildingBlock().getBpmnFlowName().equals(ACTIVATENETWORKBB)) {
                     continue;
-                } else if (!ebb.getBuildingBlock().getBpmnFlowName().equals("")) {
+                } else if (!"".equals(ebb.getBuildingBlock().getBpmnFlowName())) {
                     sortedOrchFlows.add(ebb);
                 }
             }
@@ -1405,11 +1358,10 @@ public class WorkflowAction {
             String resourceId, String requestAction, String vnfType, WorkflowResourceIds workflowResourceIds,
             RequestDetails requestDetails, boolean isVirtualLink, boolean isConfiguration) {
 
-        List<Resource> serviceResources = resourceList.stream()
-                .filter(resource -> resource.getResourceType().equals(workflowType)).collect(Collectors.toList());
-        serviceResources.forEach(resource -> flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource,
-                apiVersion, resourceId, requestAction, false, vnfType, workflowResourceIds, requestDetails,
-                isVirtualLink, resource.getVirtualLinkKey(), null, isConfiguration)));
+        resourceList.stream().filter(resource -> resource.getResourceType().equals(workflowType))
+                .forEach(resource -> flowsToExecute.add(buildExecuteBuildingBlock(orchFlow, requestId, resource,
+                        apiVersion, resourceId, requestAction, false, vnfType, workflowResourceIds, requestDetails,
+                        isVirtualLink, resource.getVirtualLinkKey(), null, isConfiguration)));
     }
 
     protected List<ExecuteBuildingBlock> buildExecuteBuildingBlockList(List<OrchestrationFlow> orchFlows,
@@ -1539,13 +1491,8 @@ public class WorkflowAction {
                     requestAction, resourceName.toString(), aLaCarte, CLOUD_OWNER);
         }
         if (northBoundRequest == null) {
-            if (aLaCarte) {
-                buildAndThrowException(execution,
-                        "The request: ALaCarte " + resourceName + " " + requestAction + " is not supported by GR_API.");
-            } else {
-                buildAndThrowException(execution,
-                        "The request: Macro " + resourceName + " " + requestAction + " is not supported by GR_API.");
-            }
+            buildAndThrowException(execution, String.format("The request: %s %s %s is not supported by GR_API.",
+                    (aLaCarte ? "AlaCarte" : "Macro"), resourceName, requestAction));
         } else {
             if (northBoundRequest.getIsToplevelflow() != null) {
                 execution.setVariable(BBConstants.G_ISTOPLEVELFLOW, northBoundRequest.getIsToplevelflow());
@@ -1557,9 +1504,7 @@ public class WorkflowAction {
                 if (!flow.getFlowName().contains("BB") && !flow.getFlowName().contains("Activity")) {
                     List<OrchestrationFlow> macroQueryFlows =
                             catalogDbClient.getOrchestrationFlowByAction(flow.getFlowName());
-                    for (OrchestrationFlow macroFlow : macroQueryFlows) {
-                        listToExecute.add(macroFlow);
-                    }
+                    listToExecute.addAll(macroQueryFlows);
                 } else {
                     listToExecute.add(flow);
                 }
@@ -1582,11 +1527,11 @@ public class WorkflowAction {
 
     public void handleRuntimeException(DelegateExecution execution) {
         StringBuilder wfeExpMsg = new StringBuilder("Runtime error ");
-        String runtimeErrorMessage = null;
+        String runtimeErrorMessage;
         try {
             String javaExpMsg = (String) execution.getVariable("BPMN_javaExpMsg");
             if (javaExpMsg != null && !javaExpMsg.isEmpty()) {
-                wfeExpMsg = wfeExpMsg.append(": ").append(javaExpMsg);
+                wfeExpMsg.append(": ").append(javaExpMsg);
             }
             runtimeErrorMessage = wfeExpMsg.toString();
             logger.error(runtimeErrorMessage);
diff --git a/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java b/bpmn/so-bpmn-tasks/src/main/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtils.java
new file mode 100644 (file)
index 0000000..d16eac1
--- /dev/null
@@ -0,0 +1,77 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.workflow.tasks.utils;
+
+import org.camunda.bpm.engine.delegate.DelegateExecution;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
+import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
+
+public final class WorkflowResourceIdsUtils {
+
+    private WorkflowResourceIdsUtils() {
+        throw new IllegalStateException("Utility class");
+    }
+
+    public static void setResourceIdByWorkflowType(WorkflowResourceIds workflowResourceIds, WorkflowType resourceType,
+            String resourceId) {
+        switch (resourceType) {
+            case SERVICE:
+                workflowResourceIds.setServiceInstanceId(resourceId);
+                break;
+            case VNF:
+                workflowResourceIds.setVnfId(resourceId);
+                break;
+            case PNF:
+                workflowResourceIds.setPnfId(resourceId);
+                break;
+            case VFMODULE:
+                workflowResourceIds.setVfModuleId(resourceId);
+                break;
+            case VOLUMEGROUP:
+                workflowResourceIds.setVolumeGroupId(resourceId);
+                break;
+            case NETWORK:
+                workflowResourceIds.setNetworkId(resourceId);
+                break;
+            case NETWORKCOLLECTION:
+                workflowResourceIds.setNetworkCollectionId(resourceId);
+                break;
+            case CONFIGURATION:
+                workflowResourceIds.setConfigurationId(resourceId);
+                break;
+            case INSTANCE_GROUP:
+                workflowResourceIds.setInstanceGroupId(resourceId);
+                break;
+        }
+    }
+
+    public static WorkflowResourceIds getWorkflowResourceIdsFromExecution(DelegateExecution execution) {
+        WorkflowResourceIds workflowResourceIds = new WorkflowResourceIds();
+        workflowResourceIds.setServiceInstanceId((String) execution.getVariable("serviceInstanceId"));
+        workflowResourceIds.setNetworkId((String) execution.getVariable("networkId"));
+        workflowResourceIds.setVfModuleId((String) execution.getVariable("vfModuleId"));
+        workflowResourceIds.setVnfId((String) execution.getVariable("vnfId"));
+        workflowResourceIds.setVolumeGroupId((String) execution.getVariable("volumeGroupId"));
+        workflowResourceIds.setInstanceGroupId((String) execution.getVariable("instanceGroupId"));
+        return workflowResourceIds;
+    }
+
+}
index d78fa69..3f81e43 100644 (file)
@@ -4,12 +4,14 @@
  * ================================================================================
  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -52,6 +54,7 @@ import org.onap.so.entity.MsoRequest;
 import org.onap.so.openstack.beans.NetworkRollback;
 import org.onap.so.openstack.beans.RouteTarget;
 import org.onap.so.openstack.beans.Subnet;
+import org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Component;
@@ -65,8 +68,7 @@ public class NetworkAdapterObjectMapper {
 
     public CreateNetworkRequest createNetworkRequestMapper(RequestContext requestContext, CloudRegion cloudRegion,
             OrchestrationContext orchestrationContext, ServiceInstance serviceInstance, L3Network l3Network,
-            Map<String, String> userInput, String cloudRegionPo, Customer customer)
-            throws UnsupportedEncodingException {
+            Map<String, String> userInput, String cloudRegionPo, Customer customer) {
         CreateNetworkRequest createNetworkRequest = new CreateNetworkRequest();
 
         // set cloudSiteId as determined for cloud region PO instead of cloudRegion.getLcpCloudRegionId()
@@ -119,7 +121,7 @@ public class NetworkAdapterObjectMapper {
     }
 
     public DeleteNetworkRequest deleteNetworkRequestMapper(RequestContext requestContext, CloudRegion cloudRegion,
-            ServiceInstance serviceInstance, L3Network l3Network) throws UnsupportedEncodingException {
+            ServiceInstance serviceInstance, L3Network l3Network) {
         DeleteNetworkRequest deleteNetworkRequest = new DeleteNetworkRequest();
 
         deleteNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
@@ -150,14 +152,14 @@ public class NetworkAdapterObjectMapper {
 
     /**
      * Access method to build Rollback Network Request
-     * 
+     *
      * @return
      * @throws UnsupportedEncodingException
      */
     public RollbackNetworkRequest createNetworkRollbackRequestMapper(RequestContext requestContext,
             CloudRegion cloudRegion, OrchestrationContext orchestrationContext, ServiceInstance serviceInstance,
             L3Network l3Network, Map<String, String> userInput, String cloudRegionPo,
-            CreateNetworkResponse createNetworkResponse) throws UnsupportedEncodingException {
+            CreateNetworkResponse createNetworkResponse) {
         RollbackNetworkRequest rollbackNetworkRequest = new RollbackNetworkRequest();
 
         rollbackNetworkRequest = setCommonRollbackRequestFields(rollbackNetworkRequest, requestContext);
@@ -171,7 +173,7 @@ public class NetworkAdapterObjectMapper {
 
     public UpdateNetworkRequest createNetworkUpdateRequestMapper(RequestContext requestContext, CloudRegion cloudRegion,
             OrchestrationContext orchestrationContext, ServiceInstance serviceInstance, L3Network l3Network,
-            Map<String, String> userInput, Customer customer) throws UnsupportedEncodingException {
+            Map<String, String> userInput, Customer customer) {
         UpdateNetworkRequest updateNetworkRequest = new UpdateNetworkRequest();
 
         updateNetworkRequest.setCloudSiteId(cloudRegion.getLcpCloudRegionId());
@@ -198,11 +200,10 @@ public class NetworkAdapterObjectMapper {
     }
 
     private RollbackNetworkRequest setCommonRollbackRequestFields(RollbackNetworkRequest request,
-            RequestContext requestContext) throws UnsupportedEncodingException {
+            RequestContext requestContext) {
         request.setSkipAAI(true);
         String messageId = requestContext.getMsoRequestId();
         request.setMessageId(messageId);
-        // request.setNotificationUrl(createCallbackUrl("NetworkAResponse", messageId));
         return request;
     }
 
@@ -240,7 +241,7 @@ public class NetworkAdapterObjectMapper {
         return UUID.randomUUID().toString();
     }
 
-    protected String createCallbackUrl(String messageType, String correlator) throws UnsupportedEncodingException {
+    protected String createCallbackUrl(String messageType, String correlator) {
         String endpoint = this.getEndpoint();
 
         while (endpoint.endsWith("/")) {
@@ -256,14 +257,14 @@ public class NetworkAdapterObjectMapper {
 
     /**
      * Use BB L3Network object to build subnets list of type org.onap.so.openstack.beans.Subnet
-     * 
+     *
      * @param L3Network
      * @return List<org.onap.so.openstack.beans.Subnet>
      */
     protected List<Subnet> buildOpenstackSubnetList(L3Network l3Network) {
 
         List<org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet> subnets = l3Network.getSubnets();
-        List<org.onap.so.openstack.beans.Subnet> subnetList = new ArrayList<org.onap.so.openstack.beans.Subnet>();
+        List<org.onap.so.openstack.beans.Subnet> subnetList = new ArrayList<>();
         // create mapper from onap Subnet to openstack bean Subnet
         if (modelMapper.getTypeMap(org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet.class,
                 org.onap.so.openstack.beans.Subnet.class) == null) {
@@ -292,7 +293,7 @@ public class NetworkAdapterObjectMapper {
                         .setCidr(subnet.getNetworkStartAddress().concat(FORWARD_SLASH).concat(subnet.getCidrMask()));
             List<org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute> hostRouteList = subnet.getHostRoutes();
             List<org.onap.so.openstack.beans.HostRoute> openstackHostRouteList = new ArrayList<>();
-            org.onap.so.openstack.beans.HostRoute openstackHostRoute = null;
+            org.onap.so.openstack.beans.HostRoute openstackHostRoute;
             // TODO only 2 fields available on openstack object. Confirm it is sufficient or add as needed
             for (org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute hostRoute : hostRouteList) {
                 openstackHostRoute = new org.onap.so.openstack.beans.HostRoute();
@@ -319,10 +320,9 @@ public class NetworkAdapterObjectMapper {
     private ProviderVlanNetwork buildProviderVlanNetwork(L3Network l3Network) {
         ProviderVlanNetwork providerVlanNetwork = new ProviderVlanNetwork();
         providerVlanNetwork.setPhysicalNetworkName(l3Network.getPhysicalNetworkName());
-        List<Integer> vlans = new ArrayList<Integer>();
-        List<org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment> segmentationAssignments =
-                l3Network.getSegmentationAssignments();
-        for (org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment assignment : segmentationAssignments) {
+        List<Integer> vlans = new ArrayList<>();
+        List<SegmentationAssignment> segmentationAssignments = l3Network.getSegmentationAssignments();
+        for (SegmentationAssignment assignment : segmentationAssignments) {
             vlans.add(Integer.valueOf(assignment.getSegmentationId()));
         }
         providerVlanNetwork.setVlans(vlans);
@@ -401,7 +401,7 @@ public class NetworkAdapterObjectMapper {
 
     private Map<String, String> addSharedAndExternal(Map<String, String> userInput, L3Network l3Network) {
         if (userInput == null)
-            userInput = new HashMap<String, String>();
+            userInput = new HashMap<>();
         if (!userInput.containsKey("shared")) {
             userInput.put("shared", Optional.ofNullable(l3Network.isIsSharedNetwork()).orElse(false).toString());
         }
index 3d3058d..362f64d 100644 (file)
@@ -4,6 +4,8 @@
  * ================================================================================
  * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -24,7 +26,7 @@ import java.util.HashMap;
 
 public class NamingRequestObject {
 
-    private HashMap<String, String> namingRequestMap = new HashMap<String, String>();
+    private HashMap<String, String> namingRequestMap = new HashMap<>();
 
     public HashMap<String, String> getNamingRequestObjectMap() {
         return this.namingRequestMap;
index fc15285..9b104f3 100644 (file)
@@ -6,6 +6,8 @@
  * ================================================================================
  * Modifications Copyright (c) 2019 Samsung
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -37,14 +39,11 @@ import org.onap.so.client.aai.entities.uri.AAIResourceUri;
 import org.onap.so.client.aai.entities.uri.AAIUriFactory;
 import org.onap.so.client.aai.mapper.AAIObjectMapper;
 import org.onap.so.db.catalog.beans.OrchestrationStatus;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
 public class AAIServiceInstanceResources {
-    private static final Logger logger = LoggerFactory.getLogger(AAIServiceInstanceResources.class);
 
     @Autowired
     private InjectionHelper injectionHelper;
index 5513122..dba1693 100644 (file)
@@ -6,6 +6,8 @@
  * ================================================================================
  * Modifications Copyright (c) 2019 Samsung
  * ================================================================================
+ * Modifications Copyright (c) 2020 Nokia
+ * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
  * You may obtain a copy of the License at
@@ -33,14 +35,11 @@ import org.onap.so.client.exception.BadResponseException;
 import org.onap.so.client.namingservice.NamingClient;
 import org.onap.so.client.namingservice.NamingRequestObject;
 import org.onap.so.client.namingservice.NamingRequestObjectBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 @Component
 public class NamingServiceResources {
-    private static final Logger logger = LoggerFactory.getLogger(NamingServiceResources.class);
     private static final String NAMING_TYPE = "instanceGroup";
 
     @Autowired
@@ -53,14 +52,14 @@ public class NamingServiceResources {
             throws BadResponseException, IOException {
         Element element = namingRequestObjectBuilder.elementMapper(instanceGroup.getId(), policyInstanceName,
                 NAMING_TYPE, nfNamingCode, instanceGroup.getInstanceGroupName());
-        List<Element> elements = new ArrayList<Element>();
+        List<Element> elements = new ArrayList<>();
         elements.add(element);
         return (namingClient.postNameGenRequest(namingRequestObjectBuilder.nameGenRequestMapper(elements)));
     }
 
     public String deleteInstanceGroupName(InstanceGroup instanceGroup) throws BadResponseException, IOException {
         Deleteelement deleteElement = namingRequestObjectBuilder.deleteElementMapper(instanceGroup.getId());
-        List<Deleteelement> deleteElements = new ArrayList<Deleteelement>();
+        List<Deleteelement> deleteElements = new ArrayList<>();
         deleteElements.add(deleteElement);
         return (namingClient
                 .deleteNameGenRequest(namingRequestObjectBuilder.nameGenDeleteRequestMapper(deleteElements)));
@@ -70,8 +69,8 @@ public class NamingServiceResources {
             throws BadResponseException, IOException {
         HashMap<String, String> nsRequestObject = namingRequestObject.getNamingRequestObjectMap();
         Element element = new Element();
-        nsRequestObject.forEach((k, v) -> element.put(k, v));
-        List<Element> elements = new ArrayList<Element>();
+        nsRequestObject.forEach(element::put);
+        List<Element> elements = new ArrayList<>();
         elements.add(element);
         return (namingClient.postNameGenRequest(namingRequestObjectBuilder.nameGenRequestMapper(elements)));
     }
@@ -81,7 +80,7 @@ public class NamingServiceResources {
         HashMap<String, String> nsRequestObject = namingRequestObject.getNamingRequestObjectMap();
         Deleteelement delElement = new Deleteelement();
         nsRequestObject.forEach((k, v) -> delElement.setExternalKey(v));
-        List<Deleteelement> delElements = new ArrayList<Deleteelement>();
+        List<Deleteelement> delElements = new ArrayList<>();
         delElements.add(delElement);
         return (namingClient.deleteNameGenRequest(namingRequestObjectBuilder.nameGenDeleteRequestMapper(delElements)));
     }
diff --git a/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java b/bpmn/so-bpmn-tasks/src/test/java/org/onap/so/bpmn/infrastructure/workflow/tasks/utils/WorkflowResourceIdsUtilsTest.java
new file mode 100644 (file)
index 0000000..0d68cf3
--- /dev/null
@@ -0,0 +1,124 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.bpmn.infrastructure.workflow.tasks.utils;
+
+import org.camunda.bpm.extension.mockito.delegate.DelegateExecutionFake;
+import org.junit.Before;
+import org.junit.Test;
+import org.onap.so.bpmn.infrastructure.workflow.tasks.WorkflowType;
+import org.onap.so.bpmn.servicedecomposition.entities.WorkflowResourceIds;
+import java.util.function.Supplier;
+import static org.junit.Assert.assertEquals;
+
+
+public class WorkflowResourceIdsUtilsTest {
+
+    private static final String SERVICE_ID = "serviceId";
+    private static final String NETWORK_ID = "networkId";
+    private static final String VF_MODULE_ID = "vfModuleId";
+    private static final String VNF_ID = "vnfId";
+    private static final String VOLUME_GROUP_ID = "volumeGroupId";
+    private static final String INSTANCE_GROUP_ID = "instanceGroupId";
+    private static final String PNF_ID = "pnfId";
+    private static final String NETWORK_COLLECTION_ID = "networkCollectionId";
+    private static final String CONFIGURATION_ID = "configurationId";
+
+    private WorkflowResourceIds workflowResourceIds;
+
+    @Before
+    public void setUp() {
+        workflowResourceIds = new WorkflowResourceIds();
+    }
+
+    @Test
+    public void shouldProperlySetFieldsFromExecution() {
+        DelegateExecutionFake execution = new DelegateExecutionFake();
+        execution.setVariable("serviceInstanceId", SERVICE_ID);
+        execution.setVariable("networkId", NETWORK_ID);
+        execution.setVariable("vfModuleId", VF_MODULE_ID);
+        execution.setVariable("vnfId", VNF_ID);
+        execution.setVariable("volumeGroupId", VOLUME_GROUP_ID);
+        execution.setVariable("instanceGroupId", INSTANCE_GROUP_ID);
+
+        workflowResourceIds = WorkflowResourceIdsUtils.getWorkflowResourceIdsFromExecution(execution);
+
+        assertEquals(SERVICE_ID, workflowResourceIds.getServiceInstanceId());
+        assertEquals(NETWORK_ID, workflowResourceIds.getNetworkId());
+        assertEquals(VF_MODULE_ID, workflowResourceIds.getVfModuleId());
+        assertEquals(VNF_ID, workflowResourceIds.getVnfId());
+        assertEquals(VOLUME_GROUP_ID, workflowResourceIds.getVolumeGroupId());
+        assertEquals(INSTANCE_GROUP_ID, workflowResourceIds.getInstanceGroupId());
+    }
+
+    @Test
+    public void shouldProperlySetServiceInstanceId() {
+        assertFieldSetProperly(WorkflowType.SERVICE, SERVICE_ID, workflowResourceIds::getServiceInstanceId);
+    }
+
+    @Test
+    public void shouldProperlySetVnfId() {
+        assertFieldSetProperly(WorkflowType.VNF, VNF_ID, workflowResourceIds::getVnfId);
+
+    }
+
+    @Test
+    public void shouldProperlySetPnfId() {
+        assertFieldSetProperly(WorkflowType.PNF, PNF_ID, workflowResourceIds::getPnfId);
+    }
+
+    @Test
+    public void shouldProperlySetVfModuleId() {
+        assertFieldSetProperly(WorkflowType.VFMODULE, VF_MODULE_ID, workflowResourceIds::getVfModuleId);
+    }
+
+    @Test
+    public void shouldProperlySetVolumeGroupId() {
+        assertFieldSetProperly(WorkflowType.VOLUMEGROUP, VOLUME_GROUP_ID, workflowResourceIds::getVolumeGroupId);
+    }
+
+    @Test
+    public void shouldProperlySetNetworkId() {
+        assertFieldSetProperly(WorkflowType.NETWORK, NETWORK_ID, workflowResourceIds::getNetworkId);
+    }
+
+    @Test
+    public void shouldProperlySetNetworkCollectionId() {
+        assertFieldSetProperly(WorkflowType.NETWORKCOLLECTION, NETWORK_COLLECTION_ID,
+                workflowResourceIds::getNetworkCollectionId);
+
+    }
+
+    @Test
+    public void shouldProperlySetConfigurationId() {
+        assertFieldSetProperly(WorkflowType.CONFIGURATION, CONFIGURATION_ID, workflowResourceIds::getConfigurationId);
+    }
+
+    @Test
+    public void shouldProperlySetInstanceGroupId() {
+        assertFieldSetProperly(WorkflowType.INSTANCE_GROUP, INSTANCE_GROUP_ID, workflowResourceIds::getInstanceGroupId);
+    }
+
+    private void assertFieldSetProperly(WorkflowType workflowType, String expectedId,
+            Supplier<String> testedObjectField) {
+        WorkflowResourceIdsUtils.setResourceIdByWorkflowType(workflowResourceIds, workflowType, expectedId);
+        assertEquals(expectedId, testedObjectField.get());
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ActDeActNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/ActDeActNssi.java
new file mode 100644 (file)
index 0000000..8d45048
--- /dev/null
@@ -0,0 +1,51 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ActDeActNssi {
+
+    public final static String ACT_URL = "/api/rest/provMns/v1/NSS/%s" + "/activation";
+
+    public final static String DE_ACT_URL = "/api/rest/provMns/v1/NSS/%s" + "/deactivation";
+
+    private String nsiId;
+
+    private String nssiId;
+
+    public String getNsiId() {
+        return nsiId;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AllocateAnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/AllocateAnNssi.java
new file mode 100644 (file)
index 0000000..484f5b4
--- /dev/null
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AllocateAnNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/an/NSS" + "/SliceProfiles";
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private String nssiId;
+
+    private String nssiName;
+
+    private AnSliceProfile sliceProfile;
+
+    private String scriptName;
+
+    private Object extension;
+
+    private NsiInfo nsiInfo;
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public String getNssiName() {
+        return nssiName;
+    }
+
+    public void setNssiName(String nssiName) {
+        this.nssiName = nssiName;
+    }
+
+    public AnSliceProfile getSliceProfile() {
+        return sliceProfile;
+    }
+
+    public void setSliceProfile(AnSliceProfile sliceProfile) {
+        this.sliceProfile = sliceProfile;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public Object getExtension() {
+        return extension;
+    }
+
+    public void setExtension(Object extension) {
+        this.extension = extension;
+    }
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AllocateCnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/AllocateCnNssi.java
new file mode 100644 (file)
index 0000000..d036733
--- /dev/null
@@ -0,0 +1,110 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.io.Serializable;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AllocateCnNssi implements Serializable {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/SliceProfiles";
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private String nssiId;
+
+    private String nssiName;
+
+    private CnSliceProfile sliceProfile;
+
+    private String scriptName;
+
+    private Object extension;
+
+    private NsiInfo nsiInfo;
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public CnSliceProfile getSliceProfile() {
+        return sliceProfile;
+    }
+
+    public void setSliceProfile(CnSliceProfile sliceProfile) {
+        this.sliceProfile = sliceProfile;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public String getNssiName() {
+        return nssiName;
+    }
+
+    public void setNssiName(String nssiName) {
+        this.nssiName = nssiName;
+    }
+
+    public void setExtension(Object extension) {
+        this.extension = extension;
+    }
+
+    public Object getExtension() {
+        return extension;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/AllocateTnNssi.java
new file mode 100644 (file)
index 0000000..b66fb13
--- /dev/null
@@ -0,0 +1,109 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AllocateTnNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/tn/NSS" + "/SliceProfiles";
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private String nssiId;
+
+    private String nssiName;
+
+    private TnSliceProfile sliceProfile;
+
+    private String scriptName;
+
+    private Object extension;
+
+    private NsiInfo nsiInfo;
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public String getNssiName() {
+        return nssiName;
+    }
+
+    public void setNssiName(String nssiName) {
+        this.nssiName = nssiName;
+    }
+
+    public TnSliceProfile getSliceProfile() {
+        return sliceProfile;
+    }
+
+    public void setSliceProfile(TnSliceProfile sliceProfile) {
+        this.sliceProfile = sliceProfile;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public Object getExtension() {
+        return extension;
+    }
+
+    public void setExtension(Object extension) {
+        this.extension = extension;
+    }
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/AnSliceProfile.java
new file mode 100644 (file)
index 0000000..3d60949
--- /dev/null
@@ -0,0 +1,61 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class AnSliceProfile {
+
+    @JsonProperty("5QI")
+    private String qi;
+
+    private List<String> coverageAreaTAList;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int latency;
+
+    public String getQi() {
+        return qi;
+    }
+
+    public void setQi(String qi) {
+        this.qi = qi;
+    }
+
+    public List<String> getCoverageAreaTAList() {
+        return coverageAreaTAList;
+    }
+
+    public void setCoverageAreaTAList(List<String> coverageAreaTAList) {
+        this.coverageAreaTAList = coverageAreaTAList;
+    }
+
+    public int getLatency() {
+        return latency;
+    }
+
+    public void setLatency(int latency) {
+        this.latency = latency;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/CnSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/CnSliceProfile.java
new file mode 100644 (file)
index 0000000..3bd155d
--- /dev/null
@@ -0,0 +1,120 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CnSliceProfile {
+
+    private List<String> snssaiList;
+
+    private String sliceProfileId;
+
+    private List<String> plmnIdList;
+
+    private PerfReq perfReq;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int maxNumberofUEs;
+
+    private List<String> coverageAreaTAList;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int latency;
+
+    private UeMobilityLevel ueMobilityLevel;
+
+    private ResourceSharingLevel resourceSharingLevel;
+
+    public String getSliceProfileId() {
+        return sliceProfileId;
+    }
+
+    public void setSliceProfileId(String sliceProfileId) {
+        this.sliceProfileId = sliceProfileId;
+    }
+
+    public List<String> getPlmnIdList() {
+        return plmnIdList;
+    }
+
+    public void setPlmnIdList(List<String> plmnIdList) {
+        this.plmnIdList = plmnIdList;
+    }
+
+    public PerfReq getPerfReq() {
+        return perfReq;
+    }
+
+    public void setPerfReq(PerfReq perfReq) {
+        this.perfReq = perfReq;
+    }
+
+    public int getMaxNumberofUEs() {
+        return maxNumberofUEs;
+    }
+
+    public void setMaxNumberofUEs(int maxNumberofUEs) {
+        this.maxNumberofUEs = maxNumberofUEs;
+    }
+
+    public List<String> getCoverageAreaTAList() {
+        return coverageAreaTAList;
+    }
+
+    public void setCoverageAreaTAList(List<String> coverageAreaTAList) {
+        this.coverageAreaTAList = coverageAreaTAList;
+    }
+
+    public int getLatency() {
+        return latency;
+    }
+
+    public void setLatency(int latency) {
+        this.latency = latency;
+    }
+
+    public UeMobilityLevel getUeMobilityLevel() {
+        return ueMobilityLevel;
+    }
+
+    public void setUeMobilityLevel(UeMobilityLevel ueMobilityLevel) {
+        this.ueMobilityLevel = ueMobilityLevel;
+    }
+
+    public ResourceSharingLevel getResourceSharingLevel() {
+        return resourceSharingLevel;
+    }
+
+    public void setResourceSharingLevel(ResourceSharingLevel resourceSharingLevel) {
+        this.resourceSharingLevel = resourceSharingLevel;
+    }
+
+    public List<String> getSnssaiList() {
+        return snssaiList;
+    }
+
+    public void setSnssaiList(List<String> snssaiList) {
+        this.snssaiList = snssaiList;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/CreateCnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/CreateCnNssi.java
new file mode 100644 (file)
index 0000000..4249669
--- /dev/null
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class CreateCnNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/nssi";
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private String nssiName;
+
+    private String scriptName;
+
+    private String extension;
+
+    private NsiInfo nsiInfo;
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public String getNssiName() {
+        return nssiName;
+    }
+
+    public void setNssiName(String nssiName) {
+        this.nssiName = nssiName;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/DeAllocateNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/DeAllocateNssi.java
new file mode 100644 (file)
index 0000000..648fd49
--- /dev/null
@@ -0,0 +1,91 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class DeAllocateNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS" + "/SliceProfiles/%s";
+
+    private String nsiId;
+
+    private String nssiId;
+
+    private List<String> snssaiList;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int terminateNssiOption;
+
+    private String scriptName;
+
+    private String extension;
+
+    public String getNsiId() {
+        return nsiId;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public List<String> getSnssaiList() {
+        return snssaiList;
+    }
+
+    public void setSnssaiList(List<String> snssaiList) {
+        this.snssaiList = snssaiList;
+    }
+
+    public int getTerminateNssiOption() {
+        return terminateNssiOption;
+    }
+
+    public void setTerminateNssiOption(int terminateNssiOption) {
+        this.terminateNssiOption = terminateNssiOption;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/EsrInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/EsrInfo.java
new file mode 100644 (file)
index 0000000..c124bfa
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class EsrInfo {
+
+    private String vendor;
+
+    private NetworkType networkType;
+
+    public String getVendor() {
+        return vendor;
+    }
+
+    public void setVendor(String vendor) {
+        this.vendor = vendor;
+    }
+
+    public NetworkType getNetworkType() {
+        return networkType;
+    }
+
+    public void setNetworkType(NetworkType networkType) {
+        this.networkType = networkType;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/JobStatusRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/JobStatusRequest.java
new file mode 100644 (file)
index 0000000..cc8503c
--- /dev/null
@@ -0,0 +1,70 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class JobStatusRequest {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/jobs/%s";
+
+    private String nsiId;
+
+    private String nssiId;
+
+    private String responseId;
+
+    private EsrInfo esrInfo;
+
+    public String getNsiId() {
+        return nsiId;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+
+    public String getResponseId() {
+        return responseId;
+    }
+
+    public void setResponseId(String responseId) {
+        this.responseId = responseId;
+    }
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/JobStatusResponse.java b/common/src/main/java/org/onap/so/beans/nsmf/JobStatusResponse.java
new file mode 100644 (file)
index 0000000..9259d51
--- /dev/null
@@ -0,0 +1,37 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class JobStatusResponse {
+
+    private ResponseDescriptor responseDescriptor;
+
+    public ResponseDescriptor getResponseDescriptor() {
+        return responseDescriptor;
+    }
+
+    public void setResponseDescriptor(ResponseDescriptor responseDescriptor) {
+        this.responseDescriptor = responseDescriptor;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NetworkType.java b/common/src/main/java/org/onap/so/beans/nsmf/NetworkType.java
new file mode 100644 (file)
index 0000000..2e10fe5
--- /dev/null
@@ -0,0 +1,58 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum NetworkType {
+
+    ACCESS("an"),
+
+    CORE("cn"),
+
+    TRANSPORT("tn");
+
+    private String networkType;
+
+    NetworkType(String networkType) {
+        this.networkType = networkType;
+    }
+
+    @JsonValue
+    public String getNetworkType() {
+        return networkType;
+    }
+
+    @JsonCreator
+    public NetworkType forValue(String value) {
+        return valueOf(value);
+    }
+
+    public static NetworkType fromString(String value) {
+        for (NetworkType nType : NetworkType.values()) {
+            if (nType.networkType.equalsIgnoreCase(value)) {
+                return nType;
+            }
+        }
+        return null;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NewNsst.java b/common/src/main/java/org/onap/so/beans/nsmf/NewNsst.java
new file mode 100644 (file)
index 0000000..e13aa50
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2019 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NewNsst {
+
+    private String nsstId;
+
+    private String flavorId;
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NsiInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/NsiInfo.java
new file mode 100644 (file)
index 0000000..0ff554d
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NsiInfo {
+
+    private String nsiName;
+
+    private String nsiId;
+
+    public String getNsiName() {
+        return nsiName;
+    }
+
+    public void setNsiName(String nsiName) {
+        this.nsiName = nsiName;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getNsiId() {
+        return nsiId;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiActDeActRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiActDeActRequest.java
new file mode 100644 (file)
index 0000000..fbba8c7
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiActDeActRequest {
+
+    private EsrInfo esrInfo;
+
+    private ActDeActNssi actDeActNssi;
+
+    public ActDeActNssi getActDeActNssi() {
+        return actDeActNssi;
+    }
+
+    public void setActDeActNssi(ActDeActNssi actDeActNssi) {
+        this.actDeActNssi = actDeActNssi;
+    }
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiAllocateRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiAllocateRequest.java
new file mode 100644 (file)
index 0000000..f72a74a
--- /dev/null
@@ -0,0 +1,67 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiAllocateRequest {
+
+    private EsrInfo esrInfo;
+
+    private AllocateCnNssi allocateCnNssi;
+
+    private AllocateTnNssi allocateTnNssi;
+
+    private AllocateAnNssi allocateAnNssi;
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+
+    public AllocateCnNssi getAllocateCnNssi() {
+        return allocateCnNssi;
+    }
+
+    public void setAllocateCnNssi(AllocateCnNssi allocateCnNssi) {
+        this.allocateCnNssi = allocateCnNssi;
+    }
+
+    public AllocateTnNssi getAllocateTnNssi() {
+        return allocateTnNssi;
+    }
+
+    public void setAllocateTnNssi(AllocateTnNssi allocateTnNssi) {
+        this.allocateTnNssi = allocateTnNssi;
+    }
+
+    public AllocateAnNssi getAllocateAnNssi() {
+        return allocateAnNssi;
+    }
+
+    public void setAllocateAnNssi(AllocateAnNssi allocateAnNssi) {
+        this.allocateAnNssi = allocateAnNssi;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiCreateRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiCreateRequest.java
new file mode 100644 (file)
index 0000000..ca26e9f
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiCreateRequest {
+
+    private EsrInfo esrInfo;
+
+    private CreateCnNssi createCnNssi;
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+
+    public CreateCnNssi getCreateCnNssi() {
+        return createCnNssi;
+    }
+
+    public void setCreateCnNssi(CreateCnNssi createCnNssi) {
+        this.createCnNssi = createCnNssi;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiDeAllocateRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiDeAllocateRequest.java
new file mode 100644 (file)
index 0000000..bbfc30c
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiDeAllocateRequest {
+
+    private DeAllocateNssi deAllocateNssi;
+
+    private EsrInfo esrInfo;
+
+    public DeAllocateNssi getDeAllocateNssi() {
+        return deAllocateNssi;
+    }
+
+    public void setDeAllocateNssi(DeAllocateNssi deAllocateNssi) {
+        this.deAllocateNssi = deAllocateNssi;
+    }
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiResponse.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiResponse.java
new file mode 100644 (file)
index 0000000..66368be
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiResponse {
+
+    private String nssiId;
+
+    private String jobId;
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiTerminateRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiTerminateRequest.java
new file mode 100644 (file)
index 0000000..df0a463
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiTerminateRequest {
+
+    private TerminateNssi terminateNssi;
+
+    private EsrInfo esrInfo;
+
+    public TerminateNssi getTerminateNssi() {
+        return terminateNssi;
+    }
+
+    public void setTerminateNssi(TerminateNssi terminateNssi) {
+        this.terminateNssi = terminateNssi;
+    }
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequest.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequest.java
new file mode 100644 (file)
index 0000000..6642734
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiUpdateRequest {
+
+    private UpdateCnNssi updateCnNssi;
+
+    private EsrInfo esrInfo;
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+
+    public UpdateCnNssi getUpdateCnNssi() {
+        return updateCnNssi;
+    }
+
+    public void setUpdateCnNssi(UpdateCnNssi updateCnNssi) {
+        this.updateCnNssi = updateCnNssi;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequestById.java b/common/src/main/java/org/onap/so/beans/nsmf/NssiUpdateRequestById.java
new file mode 100644 (file)
index 0000000..0554d2f
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssiUpdateRequestById {
+
+    private UpdateCnNssiById updateCnNssiById;
+
+    private EsrInfo esrInfo;
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+
+    public UpdateCnNssiById getUpdateCnNssiById() {
+        return updateCnNssiById;
+    }
+
+    public void setUpdateCnNssiById(UpdateCnNssiById updateCnNssiById) {
+        this.updateCnNssiById = updateCnNssiById;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssmiReqInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/NssmiReqInfo.java
new file mode 100644 (file)
index 0000000..093825f
--- /dev/null
@@ -0,0 +1,57 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssmiReqInfo {
+
+    private String nsiId;
+
+    private String nssiId;
+
+    private EsrInfo esrInfo;
+
+    public String getNsiId() {
+        return nsiId;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public EsrInfo getEsrInfo() {
+        return esrInfo;
+    }
+
+    public void setEsrInfo(EsrInfo esrInfo) {
+        this.esrInfo = esrInfo;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/NssmiResInfo.java b/common/src/main/java/org/onap/so/beans/nsmf/NssmiResInfo.java
new file mode 100644 (file)
index 0000000..e75934a
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class NssmiResInfo {
+
+    private String jobId;
+
+    private String status;
+
+    public String getJobId() {
+        return jobId;
+    }
+
+    public void setJobId(String jobId) {
+        this.jobId = jobId;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/PerfReq.java b/common/src/main/java/org/onap/so/beans/nsmf/PerfReq.java
new file mode 100644 (file)
index 0000000..4aabc3f
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PerfReq {
+
+    private List<PerfReqEmbbList> perfReqEmbbList;
+
+    private List<PerfReqUrllcList> perfReqUrllcList;
+
+    public List<PerfReqEmbbList> getPerfReqEmbbList() {
+        return perfReqEmbbList;
+    }
+
+    public void setPerfReqEmbbList(List<PerfReqEmbbList> perfReqEmbbList) {
+        this.perfReqEmbbList = perfReqEmbbList;
+    }
+
+    public List<PerfReqUrllcList> getPerfReqUrllcList() {
+        return perfReqUrllcList;
+    }
+
+    public void setPerfReqUrllcList(List<PerfReqUrllcList> perfReqUrllcList) {
+        this.perfReqUrllcList = perfReqUrllcList;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/PerfReqEmbbList.java b/common/src/main/java/org/onap/so/beans/nsmf/PerfReqEmbbList.java
new file mode 100644 (file)
index 0000000..9e9fcaa
--- /dev/null
@@ -0,0 +1,82 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PerfReqEmbbList {
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int expDataRateDL;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int expDataRateUL;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int areaTrafficCapDL;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int areaTrafficCapUL;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int activityFactor;
+
+    public int getExpDataRateDL() {
+        return expDataRateDL;
+    }
+
+    public void setExpDataRateDL(int expDataRateDL) {
+        this.expDataRateDL = expDataRateDL;
+    }
+
+    public int getExpDataRateUL() {
+        return expDataRateUL;
+    }
+
+    public void setExpDataRateUL(int expDataRateUL) {
+        this.expDataRateUL = expDataRateUL;
+    }
+
+    public int getAreaTrafficCapDL() {
+        return areaTrafficCapDL;
+    }
+
+    public void setAreaTrafficCapDL(int areaTrafficCapDL) {
+        this.areaTrafficCapDL = areaTrafficCapDL;
+    }
+
+    public int getAreaTrafficCapUL() {
+        return areaTrafficCapUL;
+    }
+
+    public void setAreaTrafficCapUL(int areaTrafficCapUL) {
+        this.areaTrafficCapUL = areaTrafficCapUL;
+    }
+
+    public int getActivityFactor() {
+        return activityFactor;
+    }
+
+    public void setActivityFactor(int activityFactor) {
+        this.activityFactor = activityFactor;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/PerfReqUrllcList.java b/common/src/main/java/org/onap/so/beans/nsmf/PerfReqUrllcList.java
new file mode 100644 (file)
index 0000000..00f0a91
--- /dev/null
@@ -0,0 +1,135 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PerfReqUrllcList {
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int e2eLatency;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int jitter;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int survivalTime;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private float csAvailability;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private float reliability;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int expDataRate;
+
+    private String payloadSize;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int trafficDensity;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int connDensity;
+
+    private String serviceAreaDimension;
+
+    public int getE2eLatency() {
+        return e2eLatency;
+    }
+
+    public void setE2eLatency(int e2eLatency) {
+        this.e2eLatency = e2eLatency;
+    }
+
+    public int getJitter() {
+        return jitter;
+    }
+
+    public void setJitter(int jitter) {
+        this.jitter = jitter;
+    }
+
+    public int getSurvivalTime() {
+        return survivalTime;
+    }
+
+    public void setSurvivalTime(int survivalTime) {
+        this.survivalTime = survivalTime;
+    }
+
+    public float getReliability() {
+        return reliability;
+    }
+
+    public void setReliability(float reliability) {
+        this.reliability = reliability;
+    }
+
+    public int getExpDataRate() {
+        return expDataRate;
+    }
+
+    public void setExpDataRate(int expDataRate) {
+        this.expDataRate = expDataRate;
+    }
+
+    public String getPayloadSize() {
+        return payloadSize;
+    }
+
+    public void setPayloadSize(String payloadSize) {
+        this.payloadSize = payloadSize;
+    }
+
+    public int getTrafficDensity() {
+        return trafficDensity;
+    }
+
+    public void setTrafficDensity(int trafficDensity) {
+        this.trafficDensity = trafficDensity;
+    }
+
+    public int getConnDensity() {
+        return connDensity;
+    }
+
+    public void setConnDensity(int connDensity) {
+        this.connDensity = connDensity;
+    }
+
+    public String getServiceAreaDimension() {
+        return serviceAreaDimension;
+    }
+
+    public void setServiceAreaDimension(String serviceAreaDimension) {
+        this.serviceAreaDimension = serviceAreaDimension;
+    }
+
+    public float getCsAvailability() {
+        return csAvailability;
+    }
+
+    public void setCsAvailability(float csAvailability) {
+        this.csAvailability = csAvailability;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/PnfErrorList.java b/common/src/main/java/org/onap/so/beans/nsmf/PnfErrorList.java
new file mode 100644 (file)
index 0000000..66bfbdc
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class PnfErrorList {
+
+    private String pnfId;
+
+    private String pnfErrorDesc;
+
+    public String getPnfId() {
+        return pnfId;
+    }
+
+    public void setPnfId(String pnfId) {
+        this.pnfId = pnfId;
+    }
+
+    public String getPnfErrorDesc() {
+        return pnfErrorDesc;
+    }
+
+    public void setPnfErrorDesc(String pnfErrorDesc) {
+        this.pnfErrorDesc = pnfErrorDesc;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ResourceSharingLevel.java b/common/src/main/java/org/onap/so/beans/nsmf/ResourceSharingLevel.java
new file mode 100644 (file)
index 0000000..405429c
--- /dev/null
@@ -0,0 +1,56 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum ResourceSharingLevel {
+
+    SHARED("shared"),
+
+    NON_SHARED("non-shared");
+
+    private String resourceSharingLevel;
+
+    ResourceSharingLevel(String resourceSharingLevel) {
+        this.resourceSharingLevel = resourceSharingLevel;
+    }
+
+    @JsonValue
+    public String getResourceSharingLevel() {
+        return resourceSharingLevel;
+    }
+
+    @JsonCreator
+    public ResourceSharingLevel forValue(String value) {
+        return valueOf(value);
+    }
+
+    public static ResourceSharingLevel fromString(String value) {
+        for (ResourceSharingLevel rscLvl : ResourceSharingLevel.values()) {
+            if (rscLvl.resourceSharingLevel.equalsIgnoreCase(value)) {
+                return rscLvl;
+            }
+        }
+        return null;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ResponseDescriptor.java b/common/src/main/java/org/onap/so/beans/nsmf/ResponseDescriptor.java
new file mode 100644 (file)
index 0000000..469d212
--- /dev/null
@@ -0,0 +1,85 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseDescriptor {
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int progress;
+
+    private String status;
+
+    private String statusDescription;
+
+    private String errorCode;
+
+    private List<VnfErrorList> vnfErrorList;
+
+    private List<PnfErrorList> pnfErrorList;
+
+    private String responseId;
+
+    private List<ResponseHistory> responseHistoryList;
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStatusDescription() {
+        return statusDescription;
+    }
+
+    public void setStatusDescription(String statusDescription) {
+        this.statusDescription = statusDescription;
+    }
+
+    public String getResponseId() {
+        return responseId;
+    }
+
+    public void setResponseId(String responseId) {
+        this.responseId = responseId;
+    }
+
+    public List<ResponseHistory> getResponseHistoryList() {
+        return responseHistoryList;
+    }
+
+    public void setResponseHistoryList(List<ResponseHistory> responseHistoryList) {
+        this.responseHistoryList = responseHistoryList;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/ResponseHistory.java b/common/src/main/java/org/onap/so/beans/nsmf/ResponseHistory.java
new file mode 100644 (file)
index 0000000..c71441a
--- /dev/null
@@ -0,0 +1,94 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class ResponseHistory {
+
+    private int progress;
+
+    private String status;
+
+    private String errorCode;
+
+    private String statusDescription;
+
+    private String responseId;
+
+    private List<VnfErrorList> vnfErrorList;
+
+    private List<PnfErrorList> pnfErrorList;
+
+    public int getProgress() {
+        return progress;
+    }
+
+    public void setProgress(int progress) {
+        this.progress = progress;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStatusDescription() {
+        return statusDescription;
+    }
+
+    public void setStatusDescription(String statusDescription) {
+        this.statusDescription = statusDescription;
+    }
+
+    public String getResponseId() {
+        return responseId;
+    }
+
+    public void setResponseId(String responseId) {
+        this.responseId = responseId;
+    }
+
+    public String getErrorCode() {
+        return errorCode;
+    }
+
+    public void setErrorCode(String errorCode) {
+        this.errorCode = errorCode;
+    }
+
+    public List<VnfErrorList> getVnfErrorList() {
+        return vnfErrorList;
+    }
+
+    public List<PnfErrorList> getPnfErrorList() {
+        return pnfErrorList;
+    }
+
+    public void setPnfErrorList(List<PnfErrorList> pnfErrorList) {
+        this.pnfErrorList = pnfErrorList;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/TerminateNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/TerminateNssi.java
new file mode 100644 (file)
index 0000000..28cc565
--- /dev/null
@@ -0,0 +1,59 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class TerminateNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/nssi/%s";
+
+    private String nsiId;
+
+    private String scriptName;
+
+    private String extension;
+
+    public String getNsiId() {
+        return nsiId;
+    }
+
+    public void setNsiId(String nsiId) {
+        this.nsiId = nsiId;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/TnSliceProfile.java
new file mode 100644 (file)
index 0000000..c3548f1
--- /dev/null
@@ -0,0 +1,48 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class TnSliceProfile {
+
+    private String bandwidth;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int latency;
+
+    public String getBandwidth() {
+        return bandwidth;
+    }
+
+    public void setBandwidth(String bandwidth) {
+        this.bandwidth = bandwidth;
+    }
+
+    public int getLatency() {
+        return latency;
+    }
+
+    public void setLatency(int latency) {
+        this.latency = latency;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/UeMobilityLevel.java b/common/src/main/java/org/onap/so/beans/nsmf/UeMobilityLevel.java
new file mode 100644 (file)
index 0000000..ffb7229
--- /dev/null
@@ -0,0 +1,60 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+public enum UeMobilityLevel {
+
+    STATIONARY("stationary"),
+
+    NOMADIC("nomadic"),
+
+    RESTRICTED_MOBILITY("restricted mobility"),
+
+    FULLY_MOBILITY("fully mobility");
+
+    private String ueMobilityLevel;
+
+    UeMobilityLevel(String ueMobilityLevel) {
+        this.ueMobilityLevel = ueMobilityLevel;
+    }
+
+    @JsonValue
+    public String getUeMobilityLevel() {
+        return ueMobilityLevel;
+    }
+
+    @JsonCreator
+    public UeMobilityLevel forValue(String value) {
+        return valueOf(value);
+    }
+
+    public static UeMobilityLevel fromString(String value) {
+        for (UeMobilityLevel ueLvl : UeMobilityLevel.values()) {
+            if (ueLvl.ueMobilityLevel.equalsIgnoreCase(value)) {
+                return ueLvl;
+            }
+        }
+        return null;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssi.java b/common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssi.java
new file mode 100644 (file)
index 0000000..9fb8f26
--- /dev/null
@@ -0,0 +1,119 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class UpdateCnNssi {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/SliceProfiles/%s";
+
+    private String snssai;
+
+    private String nssiId;
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private UpdateSliceProfile sliceProfile;
+
+    private String scriptName;
+
+    private String extension;
+
+    private NsiInfo nsiInfo;
+
+    private NewNsst newNsst;
+
+    public String getSnssai() {
+        return snssai;
+    }
+
+    public void setSnssai(String snssai) {
+        this.snssai = snssai;
+    }
+
+    public String getNssiId() {
+        return nssiId;
+    }
+
+    public void setNssiId(String nssiId) {
+        this.nssiId = nssiId;
+    }
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public UpdateSliceProfile getSliceProfile() {
+        return sliceProfile;
+    }
+
+    public void setSliceProfile(UpdateSliceProfile sliceProfile) {
+        this.sliceProfile = sliceProfile;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+
+    public NewNsst getNewNsst() {
+        return newNsst;
+    }
+
+    public void setNewNsst(NewNsst newNsst) {
+        this.newNsst = newNsst;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssiById.java b/common/src/main/java/org/onap/so/beans/nsmf/UpdateCnNssiById.java
new file mode 100644 (file)
index 0000000..26e6ca0
--- /dev/null
@@ -0,0 +1,89 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class UpdateCnNssiById {
+
+    public final static String URL = "/api/rest/provMns/v1/NSS/nssi/%s";
+
+    private String nsstId;
+
+    private String flavorId;
+
+    private String scriptName;
+
+    private String extension;
+
+    private NsiInfo nsiInfo;
+
+    private NewNsst newNsst;
+
+    public String getNsstId() {
+        return nsstId;
+    }
+
+    public void setNsstId(String nsstId) {
+        this.nsstId = nsstId;
+    }
+
+    public String getFlavorId() {
+        return flavorId;
+    }
+
+    public void setFlavorId(String flavorId) {
+        this.flavorId = flavorId;
+    }
+
+    public String getScriptName() {
+        return scriptName;
+    }
+
+    public void setScriptName(String scriptName) {
+        this.scriptName = scriptName;
+    }
+
+    public String getExtension() {
+        return extension;
+    }
+
+    public void setExtension(String extension) {
+        this.extension = extension;
+    }
+
+    public NsiInfo getNsiInfo() {
+        return nsiInfo;
+    }
+
+    public void setNsiInfo(NsiInfo nsiInfo) {
+        this.nsiInfo = nsiInfo;
+    }
+
+    public NewNsst getNewNsst() {
+        return newNsst;
+    }
+
+    public void setNewNsst(NewNsst newNsst) {
+        this.newNsst = newNsst;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/UpdateSliceProfile.java b/common/src/main/java/org/onap/so/beans/nsmf/UpdateSliceProfile.java
new file mode 100644 (file)
index 0000000..74ea7ae
--- /dev/null
@@ -0,0 +1,101 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import java.util.List;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class UpdateSliceProfile {
+
+    private List<String> plmnIdList;
+
+    private PerfReq perfReq;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int maxNumberofUEs;
+
+    private List<String> coverageAreaTAList;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int latency;
+
+    @JsonInclude(JsonInclude.Include.NON_DEFAULT)
+    private int ueMobilityLevel;
+
+    private String resourceSharingLevel;
+
+    public List<String> getPlmnIdList() {
+        return plmnIdList;
+    }
+
+    public void setPlmnIdList(List<String> plmnIdList) {
+        this.plmnIdList = plmnIdList;
+    }
+
+    public PerfReq getPerfReq() {
+        return perfReq;
+    }
+
+    public void setPerfReq(PerfReq perfReq) {
+        this.perfReq = perfReq;
+    }
+
+    public int getMaxNumberofUEs() {
+        return maxNumberofUEs;
+    }
+
+    public void setMaxNumberofUEs(int maxNumberofUEs) {
+        this.maxNumberofUEs = maxNumberofUEs;
+    }
+
+    public List<String> getCoverageAreaTAList() {
+        return coverageAreaTAList;
+    }
+
+    public void setCoverageAreaTAList(List<String> coverageAreaTAList) {
+        this.coverageAreaTAList = coverageAreaTAList;
+    }
+
+    public int getLatency() {
+        return latency;
+    }
+
+    public void setLatency(int latency) {
+        this.latency = latency;
+    }
+
+    public int getUeMobilityLevel() {
+        return ueMobilityLevel;
+    }
+
+    public void setUeMobilityLevel(int ueMobilityLevel) {
+        this.ueMobilityLevel = ueMobilityLevel;
+    }
+
+    public String getResourceSharingLevel() {
+        return resourceSharingLevel;
+    }
+
+    public void setResourceSharingLevel(String resourceSharingLevel) {
+        this.resourceSharingLevel = resourceSharingLevel;
+    }
+}
diff --git a/common/src/main/java/org/onap/so/beans/nsmf/VnfErrorList.java b/common/src/main/java/org/onap/so/beans/nsmf/VnfErrorList.java
new file mode 100644 (file)
index 0000000..6388ca6
--- /dev/null
@@ -0,0 +1,47 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * ONAP - SO
+ * ================================================================================
+ * Copyright (C) 2020 Huawei Technologies Co., Ltd. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.so.beans.nsmf;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+public class VnfErrorList {
+
+    private String vnfInstanceId;
+
+    private String vnfErrorDesc;
+
+    public String getVnfInstanceId() {
+        return vnfInstanceId;
+    }
+
+    public void setVnfInstanceId(String vnfInstanceId) {
+        this.vnfInstanceId = vnfInstanceId;
+    }
+
+    public String getVnfErrorDesc() {
+        return vnfErrorDesc;
+    }
+
+    public void setVnfErrorDesc(String vnfErrorDesc) {
+        this.vnfErrorDesc = vnfErrorDesc;
+    }
+}