aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/NovaClientImpl.java63
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifact.java118
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfo.java82
-rw-r--r--adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.5__AddServiceArtifact.sql30
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java66
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/HttpMethod.java41
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/JobStatus.java42
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java205
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfInfo.java94
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java541
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestResponse.java92
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestUtil.java307
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java32
-rw-r--r--adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java94
-rw-r--r--adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapter.java15
-rw-r--r--adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapterImpl.java39
-rw-r--r--adapters/mso-requests-db-adapter/src/main/resources/db/migration/V6.1.1__Add_Instance_NFVO_Mapping_Table.sql12
-rw-r--r--adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/adapters/MSORequestDBImplTest.java28
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/AaiConnection.java40
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/EsrId.java45
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/StartupConfiguration.java5
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/DmaapService.java15
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/StartupService.java11
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriptionScheduler.java57
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/StartupServiceTest.java9
-rw-r--r--adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/SubscriptionSchedulerTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java18
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java68
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java40
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java67
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java49
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java49
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java78
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java40
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java51
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java31
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java53
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java27
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java57
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java42
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java207
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java117
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java63
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java35
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java24
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java78
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java47
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java80
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java89
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java108
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java69
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java166
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java82
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java125
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java47
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java37
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java57
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java35
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java44
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java48
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java74
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java37
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java62
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java71
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java51
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java56
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java68
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java156
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java46
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java33
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java38
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java76
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java65
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java85
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java87
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java47
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java620
-rw-r--r--adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java190
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java189
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java283
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java49
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java413
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java188
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java158
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java29
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java89
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java40
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java90
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java142
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java41
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java168
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java69
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java773
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java59
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java179
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java39
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java221
-rw-r--r--adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java8
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json10
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json64
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json210
-rw-r--r--adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json7
-rw-r--r--adapters/pom.xml1
-rw-r--r--bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CheckServiceProcessStatusTest.groovy344
-rw-r--r--mso-api-handlers/mso-requests-db-repositories/src/main/java/org/onap/so/db/request/data/repository/InstanceNfvoMappingRepository.java28
-rw-r--r--mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InstanceNfvoMapping.java123
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceArtifact.java168
-rw-r--r--mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceInfo.java106
-rw-r--r--packages/docker/pom.xml32
-rw-r--r--pom.xml2
-rw-r--r--so-simulator/pom.xml13
131 files changed, 11322 insertions, 85 deletions
diff --git a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/NovaClientImpl.java b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/NovaClientImpl.java
index 7f0f6e4a8b..4dc139f37d 100644
--- a/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/NovaClientImpl.java
+++ b/adapters/mso-adapter-utils/src/main/java/org/onap/so/openstack/utils/NovaClientImpl.java
@@ -26,14 +26,20 @@ import org.onap.so.openstack.exceptions.MsoException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
+import com.fasterxml.jackson.databind.JsonNode;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.woorea.openstack.base.client.Entity;
+import com.woorea.openstack.base.client.HttpMethod;
import com.woorea.openstack.base.client.OpenStackRequest;
import com.woorea.openstack.nova.Nova;
import com.woorea.openstack.nova.model.Flavor;
import com.woorea.openstack.nova.model.Flavors;
import com.woorea.openstack.nova.model.HostAggregate;
import com.woorea.openstack.nova.model.HostAggregates;
+import com.woorea.openstack.nova.model.Hypervisors;
import com.woorea.openstack.nova.model.QuotaSet;
import com.woorea.openstack.nova.model.Server;
+import com.woorea.openstack.nova.model.VolumeAttachment;
@Component
@@ -216,4 +222,61 @@ public class NovaClientImpl extends MsoCommonUtils {
throw new NovaClientException("Error building Nova Client", e);
}
}
+
+ public void postActionToServer(String cloudSiteId, String tenantId, String id, String request)
+ throws NovaClientException {
+ try {
+ ObjectMapper mapper = new ObjectMapper();
+ JsonNode actualObj = mapper.readTree(request);
+ Entity<JsonNode> openstackEntity = new Entity<>(actualObj, "application/json");
+ CharSequence actionPath = "/servers/" + id + "/action";
+ Nova novaClient = getNovaClient(cloudSiteId, tenantId);
+ OpenStackRequest<Void> OSRequest =
+ new OpenStackRequest<>(novaClient, HttpMethod.POST, actionPath, openstackEntity, Void.class);
+ executeAndRecordOpenstackRequest(OSRequest, false);
+ } catch (Exception e) {
+ logger.error("Error building Nova Client", e);
+ throw new NovaClientException("Error building Nova Client", e);
+ }
+ }
+
+ public void attachVolume(String cloudSiteId, String tenantId, String serverId, VolumeAttachment volumeAttachment)
+ throws NovaClientException {
+ Nova novaClient;
+ try {
+ novaClient = getNovaClient(cloudSiteId, tenantId);
+ OpenStackRequest<Void> request = novaClient.servers().attachVolume(serverId, volumeAttachment.getVolumeId(),
+ volumeAttachment.getDevice());
+ executeAndRecordOpenstackRequest(request, false);
+ } catch (MsoException e) {
+ logger.error("Error building Nova Client", e);
+ throw new NovaClientException("Error building Nova Client", e);
+ }
+ }
+
+ public void detachVolume(String cloudSiteId, String tenantId, String serverId, String volumeId)
+ throws NovaClientException {
+ Nova novaClient;
+ try {
+ novaClient = getNovaClient(cloudSiteId, tenantId);
+ OpenStackRequest<Void> request = novaClient.servers().detachVolume(serverId, volumeId);
+ executeAndRecordOpenstackRequest(request, false);
+ } catch (MsoException e) {
+ logger.error("Error building Nova Client", e);
+ throw new NovaClientException("Error building Nova Client", e);
+ }
+ }
+
+ public Hypervisors getHypervisorDetails(String cloudSiteId, String tenantId) throws NovaClientException {
+ Nova novaClient;
+ try {
+ novaClient = getNovaClient(cloudSiteId, tenantId);
+ OpenStackRequest<Hypervisors> request = novaClient.hypervisors().listDetail();
+ return executeAndRecordOpenstackRequest(request, false);
+ } catch (MsoException e) {
+ logger.error("Error building Nova Client", e);
+ throw new NovaClientException("Error building Nova Client", e);
+ }
+ }
+
}
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifact.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifact.java
new file mode 100644
index 0000000000..ce39b9713a
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceArtifact.java
@@ -0,0 +1,118 @@
+/*-
+ * ============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.adapters.catalogdb.catalogrest;
+
+import org.onap.so.db.catalog.beans.ServiceArtifact;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@XmlRootElement(name = "serviceArtifacts")
+public class QueryServiceArtifact extends CatalogQuery {
+
+ protected static Logger logger = LoggerFactory.getLogger(QueryServiceArtifact.class);
+
+ private List<ServiceArtifact> serviceArtifactList;
+
+ private static final String TEMPLATE = "\t{\n" + "\t\t\"artifactUUID\" : <ARTIFACT_UUID>,\n"
+ + "\t\t\"name\" : <NAME>,\n" + "\t\t\"version\" : <VERSION>,\n"
+ + "\t\t\"checksum\" : <CHECKSUM>,\n" + "\t\t\"type\" : <TYPE>,\n"
+ + "\t\t\"content\" : <CONTENT>,\n" + "\t\t\"description\" : <DESCRIPTION>\n" + "\t}";
+
+ public QueryServiceArtifact() {
+ super();
+ serviceArtifactList = new ArrayList<>();
+ }
+
+ public QueryServiceArtifact(List<ServiceArtifact> alist) {
+ serviceArtifactList = new ArrayList<>();
+ for (ServiceArtifact o : alist) {
+ if (logger.isDebugEnabled())
+ logger.debug(o.toString());
+ serviceArtifactList.add(o);
+ }
+ }
+
+ public List<ServiceArtifact> getServiceArtifact() {
+ return this.serviceArtifactList;
+ }
+
+ public void setServiceArtifact(List<ServiceArtifact> a) {
+ this.serviceArtifactList = a;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder sb = new StringBuilder();
+
+ boolean first = true;
+ int i = 1;
+ for (ServiceArtifact o : serviceArtifactList) {
+ sb.append(i).append("\t");
+ if (!first)
+ sb.append("\n");
+ first = false;
+ sb.append(o);
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public String JSON2(boolean isArray, boolean isEmbed) {
+ StringBuilder sb = new StringBuilder();
+ if (!isEmbed && isArray)
+ sb.append("{ ");
+ if (isArray)
+ sb.append("\"serviceArtifact\": [");
+ Map<String, String> valueMap = new HashMap<>();
+ String sep = "";
+ boolean first = true;
+
+ for (ServiceArtifact o : serviceArtifactList) {
+ if (first)
+ sb.append("\n");
+ first = false;
+
+ boolean vrNull = o == null;
+
+ put(valueMap, "ARTIFACT_UUID", vrNull ? null : o.getArtifactUUID());
+ put(valueMap, "TYPE", vrNull ? null : o.getType());
+ put(valueMap, "NAME", vrNull ? null : o.getName());
+ put(valueMap, "VERSION", vrNull ? null : o.getVersion());
+ put(valueMap, "DESCRIPTION", vrNull ? null : o.getDescription());
+ put(valueMap, "CONTENT", vrNull ? null : o.getContent());
+ put(valueMap, "CHECKSUM", vrNull ? null : o.getChecksum());
+ sb.append(sep).append(this.setTemplate(TEMPLATE, valueMap));
+ sep = ",\n";
+ }
+ if (!first)
+ sb.append("\n");
+ if (isArray)
+ sb.append("]");
+ if (!isEmbed && isArray)
+ sb.append("}");
+ return sb.toString();
+ }
+}
diff --git a/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfo.java b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfo.java
new file mode 100644
index 0000000000..b1911654c4
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/java/org/onap/so/adapters/catalogdb/catalogrest/QueryServiceInfo.java
@@ -0,0 +1,82 @@
+/*-
+ * ============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.adapters.catalogdb.catalogrest;
+
+import org.onap.so.db.catalog.beans.Service;
+import org.onap.so.db.catalog.beans.ServiceInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import javax.xml.bind.annotation.XmlRootElement;
+import java.util.HashMap;
+import java.util.Map;
+
+@XmlRootElement(name = "serviceInfo")
+public class QueryServiceInfo extends CatalogQuery {
+
+ protected static Logger logger = LoggerFactory.getLogger(QueryServiceInfo.class);
+
+ private ServiceInfo serviceInfo;
+
+ private static final String TEMPLATE =
+ "\n" + "\t{" + "\t\t\"id\" : <ID>,\n" + "\t\t\"serviceInput\" : <SERVICE_INPUT>,\n"
+ + "\t\"serviceProperties\" : <SERVICE_PROPERTIES>,\n" + "<_SERVICEARTIFACT_>\n";
+
+
+ public QueryServiceInfo() {
+ super();
+ this.serviceInfo = new ServiceInfo();
+ }
+
+ public QueryServiceInfo(ServiceInfo serviceInfo) {
+ this.serviceInfo = serviceInfo;
+ }
+
+ public ServiceInfo getServiceInfo() {
+ return this.serviceInfo;
+ }
+
+ public void setServiceInfo(ServiceInfo serviceInfo) {
+ this.serviceInfo = serviceInfo;
+ }
+
+ @Override
+ public String toString() {
+
+ return serviceInfo.toString();
+ }
+
+ @Override
+ public String JSON2(boolean isArray, boolean isEmbed) {
+ StringBuilder sb = new StringBuilder();
+ sb.append("\"serviceInfo\": ");
+ sb.append("\n");
+ Map<String, String> valueMap = new HashMap<>();
+ Service service = serviceInfo.getService();
+ put(valueMap, "ID", null == serviceInfo ? null : serviceInfo.getId());
+ put(valueMap, "SERVICE_INPUT", null == serviceInfo ? null : serviceInfo.getServiceInput());
+ put(valueMap, "SERVICE_PROPERTIES", null == serviceInfo ? null : serviceInfo.getServiceProperties());
+ // String subitem = new QueryServiceArtifact(service.getServiceArtifactList()).JSON2(true, true);
+ // valueMap.put("_SERVICEARTIFACT_", subitem.replaceAll("(?m)^", "\t\t"));m
+ sb.append(this.setTemplate(TEMPLATE, valueMap));
+ sb.append("}");
+ return sb.toString();
+ }
+}
diff --git a/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.5__AddServiceArtifact.sql b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.5__AddServiceArtifact.sql
new file mode 100644
index 0000000000..d32c4666c5
--- /dev/null
+++ b/adapters/mso-catalog-db-adapter/src/main/resources/db/migration/V7.5__AddServiceArtifact.sql
@@ -0,0 +1,30 @@
+use catalogdb;
+
+CREATE TABLE IF NOT EXISTS `service_info` (
+ `ID` int (11) AUTO_INCREMENT,
+ `SERVICE_INPUT` varchar (5000),
+ `SERVICE_PROPERTIES` varchar (5000),
+ PRIMARY KEY (`ID`)
+)ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `service_artifact`(
+ `ARTIFACT_UUID` varchar (200) NOT NULL,
+ `TYPE` varchar (200) NOT NULL,
+ `NAME` varchar (200) NOT NULL,
+ `VERSION` varchar (200) NOT NULL,
+ `DESCRIPTION` varchar (200) DEFAULT NULL,
+ `CONTENT` LONGTEXT DEFAULT NULL,
+ `CHECKSUM` varchar (200) DEFAULT NULL,
+ `CREATION_TIMESTAMP` DATETIME DEFAULT CURRENT_TIMESTAMP,
+ `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
+ PRIMARY KEY (`ARTIFACT_UUID`),
+ CONSTRAINT `fk_service_artifact_service_info1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE
+)ENGINE=InnoDB DEFAULT CHARSET=latin1;
+
+CREATE TABLE IF NOT EXISTS `service_to_service_info` (
+ `SERVICE_MODEL_UUID` varchar (200) NOT NULL,
+ `SERVICE_INFO_ID` INT (11) NOT NULL,
+ PRIMARY KEY (`SERVICE_MODEL_UUID`,`SERVICE_INFO_ID`),
+ CONSTRAINT `fk_service_to_service_info__service1` FOREIGN KEY (`SERVICE_MODEL_UUID`) REFERENCES `service` (`MODEL_UUID`) ON DELETE CASCADE ON UPDATE CASCADE,
+ CONSTRAINT `fk_service_to_service_info__service_info1` FOREIGN KEY (`SERVICE_INFO_ID`) REFERENCES `service_info` (`ID`) ON DELETE CASCADE ON UPDATE CASCADE
+) \ No newline at end of file
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java
new file mode 100644
index 0000000000..f63ba356a1
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/exceptions/ApplicationException.java
@@ -0,0 +1,66 @@
+/*-
+ * ============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.adapters.nssmf.exceptions;
+
+import org.onap.so.adapters.nssmf.model.ErrorResponse;
+import org.springframework.http.ResponseEntity;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
+
+public class ApplicationException extends Exception {
+
+ private static final long serialVersionUID = 1L;
+
+ private int errorCode;
+
+ private String errorMsg;
+
+ public ApplicationException(int errorCode, String errorMsg) {
+ this.errorCode = errorCode;
+ this.errorMsg = errorMsg;
+ }
+
+ public int getErrorCode() {
+ return errorCode;
+ }
+
+ public void setErrorCode(int errorCode) {
+ this.errorCode = errorCode;
+ }
+
+ public String getErrorMsg() {
+ return errorMsg;
+ }
+
+ public void setErrorMsg(String errorMsg) {
+ this.errorMsg = errorMsg;
+ }
+
+ public ResponseEntity buildErrorResponse() {
+ String message;
+ try {
+ ErrorResponse err = new ErrorResponse(errorCode, errorMsg);
+ message = marshal(err);
+ } catch (ApplicationException e) {
+ return ResponseEntity.status(500).body("Internal Server Error");
+ }
+ return ResponseEntity.status(errorCode).body(message);
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/HttpMethod.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/HttpMethod.java
new file mode 100644
index 0000000000..f6abd98794
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/HttpMethod.java
@@ -0,0 +1,41 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+public enum HttpMethod {
+ GET, POST, PUT, DELETE, PATCH;
+
+ public static HttpMethod fromString(String s) {
+ if (s == null)
+ return null;
+ if (("get").equalsIgnoreCase(s))
+ return GET;
+ if (("post").equalsIgnoreCase(s))
+ return POST;
+ if (("put").equalsIgnoreCase(s))
+ return PUT;
+ if (("delete").equalsIgnoreCase(s))
+ return DELETE;
+ if (("patch").equalsIgnoreCase(s))
+ return PATCH;
+ throw new IllegalArgumentException("Invalid value for HTTP Method: " + s);
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/JobStatus.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/JobStatus.java
new file mode 100644
index 0000000000..f2e651fd6e
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/JobStatus.java
@@ -0,0 +1,42 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+
+
+public enum JobStatus {
+ STARTED, PROCESSING, FINISHED, ERROR;
+
+ public static JobStatus fromString(String s) throws ApplicationException {
+ if (s == null)
+ return null;
+ if (("started").equalsIgnoreCase(s))
+ return STARTED;
+ if (("processing").equalsIgnoreCase(s))
+ return PROCESSING;
+ if (("finished").equalsIgnoreCase(s))
+ return FINISHED;
+ if (("error").equalsIgnoreCase(s))
+ return ERROR;
+ throw new ApplicationException(500, "Invalid value for Job " + "Status: " + s);
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java
new file mode 100644
index 0000000000..d8e1e36058
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfAdapterRest.java
@@ -0,0 +1,205 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.onap.so.beans.nsmf.JobStatusRequest;
+import org.onap.so.beans.nsmf.NssiActDeActRequest;
+import org.onap.so.beans.nsmf.NssiAllocateRequest;
+import org.onap.so.beans.nsmf.NssiCreateRequest;
+import org.onap.so.beans.nsmf.NssiDeAllocateRequest;
+import org.onap.so.beans.nsmf.NssiTerminateRequest;
+import org.onap.so.beans.nsmf.NssiUpdateRequest;
+import org.onap.so.beans.nsmf.NssiUpdateRequestById;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import static javax.ws.rs.core.MediaType.APPLICATION_JSON;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.assertObjectNotNull;
+
+@Controller
+@RequestMapping(value = "/api/rest/provMns/v1", produces = {APPLICATION_JSON}, consumes = {APPLICATION_JSON})
+public class NssmfAdapterRest {
+
+ private static final Logger logger = LoggerFactory.getLogger(NssmfAdapterRest.class);
+
+ @Autowired
+ private NssmfManager nssmfMgr;
+
+ @PostMapping(value = "/NSS/SliceProfiles")
+ public ResponseEntity allocateNssi(@RequestBody NssiAllocateRequest allocate) {
+ try {
+ logger.info("Nssmi allocate request is invoked");
+ assertObjectNotNull(allocate);
+ RestResponse rsp = getNssmfMgr().allocateNssi(allocate);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/nssi")
+ public ResponseEntity createNssi(@RequestBody NssiCreateRequest create) {
+ try {
+ logger.info("Nssmf create request is invoked");
+ assertObjectNotNull(create);
+ RestResponse rsp = getNssmfMgr().createNssi(create);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/SliceProfiles/{sliceProfileId}")
+ public ResponseEntity deAllocateNssi(@RequestBody NssiDeAllocateRequest deAllocate,
+ @PathVariable("sliceProfileId") final String sliceId) {
+ try {
+ logger.info("Nssmf deallocate request is invoked");
+ assertObjectNotNull(deAllocate);
+ RestResponse rsp = getNssmfMgr().deAllocateNssi(deAllocate, sliceId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/nssi/{nssiId}")
+ public ResponseEntity terminateNssi(@RequestBody NssiTerminateRequest terminate,
+ @PathVariable("nssiId") String nssiId) {
+ try {
+ logger.info("Nssmf terminate request is invoked");
+ assertObjectNotNull(terminate);
+ RestResponse rsp = getNssmfMgr().terminateNssi(terminate, nssiId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PutMapping(value = "/NSS/SliceProfiles/{sliceProfileId}")
+ public ResponseEntity modifyNssi(@RequestBody NssiUpdateRequest update,
+ @PathVariable("sliceProfileId") String sliceId) {
+ try {
+ logger.info("Nssmf modify request is invoked");
+ assertObjectNotNull(update);
+ RestResponse rsp = getNssmfMgr().updateNssi(update, sliceId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PutMapping(value = "/NSS/nssi/{nssiId}")
+ public ResponseEntity modifyNssiById(@RequestBody NssiUpdateRequestById updateById,
+ @PathVariable("nssiId") String nssiId) {
+ try {
+ logger.info("Nssmf modify by ID request is invoked");
+ assertObjectNotNull(updateById);
+ RestResponse rsp = getNssmfMgr().updateNssiById(updateById, nssiId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/{snssai}/activation")
+ public ResponseEntity activateNssi(@RequestBody NssiActDeActRequest activate,
+ @PathVariable("snssai") String snssai) {
+ try {
+ logger.info("Nssmf activate request is invoked");
+ assertObjectNotNull(activate);
+ RestResponse rsp = getNssmfMgr().activateNssi(activate, snssai);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/{snssai}/deactivation")
+ public ResponseEntity deactivateNssi(@RequestBody NssiActDeActRequest deActivate,
+ @PathVariable("snssai") String snssai) {
+ try {
+ logger.info("Nssmf activate request is invoked");
+ assertObjectNotNull(deActivate);
+ RestResponse rsp = getNssmfMgr().deActivateNssi(deActivate, snssai);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @PostMapping(value = "/NSS/jobs/{jobId}")
+ public ResponseEntity queryJobStatus(@RequestBody JobStatusRequest jobStatusReq,
+ @PathVariable("jobId") String jobId) {
+ try {
+ logger.info("Nssmf query job status request is invoked");
+ assertObjectNotNull(jobStatusReq);
+ RestResponse rsp = getNssmfMgr().queryJobStatus(jobStatusReq, jobId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @GetMapping(value = "/vendor/{vendorName}/type/{networkType}/NSS" + "/SliceProfiles/{sliceProfileId}")
+ public ResponseEntity queryNssi(@PathVariable("vendorName") String vendorName,
+ @PathVariable("networktype") String networkType, @PathVariable("sliceProfileId") String sliceId) {
+ try {
+ logger.info("Nssmf query nssi request is invoked");
+ RestResponse rsp = getNssmfMgr().queryNssi(vendorName, networkType, sliceId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ @GetMapping(value = "/vendor/{vendorName}/type/{networkType}/NSS/nssi" + "/{nssiId}")
+ public ResponseEntity queryNssiById(@PathVariable("vendorName") String vendorName,
+ @PathVariable("networkTtype") String networkType, @PathVariable("nssiId") String nssiId) {
+ try {
+ logger.info("Nssmf query nssi by ID request is invoked");
+ RestResponse rsp = getNssmfMgr().queryNssiById(vendorName, networkType, nssiId);
+ return buildResponse(rsp);
+ } catch (ApplicationException e) {
+ return e.buildErrorResponse();
+ }
+ }
+
+ public void setNssmfMgr(NssmfManager nssmfMgr) {
+ this.nssmfMgr = nssmfMgr;
+ }
+
+ public NssmfManager getNssmfMgr() {
+ return nssmfMgr;
+ }
+
+ private ResponseEntity buildResponse(RestResponse rsp) {
+ return ResponseEntity.status(rsp.getStatus()).body(rsp.getResponseContent());
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfInfo.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfInfo.java
new file mode 100644
index 0000000000..6306643a97
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfInfo.java
@@ -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.adapters.nssmf.rest;
+
+public class NssmfInfo {
+
+ private String url;
+
+ private String ipAddress;
+
+ private String port;
+
+ private String insecure;
+
+ private String cacert;
+
+ private String userName;
+
+ private String password;
+
+ public String getInsecure() {
+ return insecure;
+ }
+
+ public void setInsecure(String insecure) {
+ this.insecure = insecure;
+ }
+
+ public String getCacert() {
+ return cacert;
+ }
+
+ public void setCacert(String cacert) {
+ this.cacert = cacert;
+ }
+
+ public String getIpAddress() {
+ return ipAddress;
+ }
+
+ public void setIpAddress(String ipAddress) {
+ this.ipAddress = ipAddress;
+ }
+
+ public String getPort() {
+ return port;
+ }
+
+ public void setPort(String port) {
+ this.port = port;
+ }
+
+ public String getUrl() {
+ return url;
+ }
+
+ public void setUrl(String url) {
+ this.url = url;
+ }
+
+ public String getUserName() {
+ return userName;
+ }
+
+ public void setUserName(String userName) {
+ this.userName = userName;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java
new file mode 100644
index 0000000000..0e25729610
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/NssmfManager.java
@@ -0,0 +1,541 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.onap.so.beans.nsmf.ActDeActNssi;
+import org.onap.so.beans.nsmf.AllocateAnNssi;
+import org.onap.so.beans.nsmf.AllocateCnNssi;
+import org.onap.so.beans.nsmf.AllocateTnNssi;
+import org.onap.so.beans.nsmf.CreateCnNssi;
+import org.onap.so.beans.nsmf.DeAllocateNssi;
+import org.onap.so.beans.nsmf.EsrInfo;
+import org.onap.so.beans.nsmf.JobStatusRequest;
+import org.onap.so.beans.nsmf.JobStatusResponse;
+import org.onap.so.beans.nsmf.NetworkType;
+import org.onap.so.beans.nsmf.NssiActDeActRequest;
+import org.onap.so.beans.nsmf.NssiAllocateRequest;
+import org.onap.so.beans.nsmf.NssiCreateRequest;
+import org.onap.so.beans.nsmf.NssiDeAllocateRequest;
+import org.onap.so.beans.nsmf.NssiResponse;
+import org.onap.so.beans.nsmf.NssiTerminateRequest;
+import org.onap.so.beans.nsmf.NssiUpdateRequest;
+import org.onap.so.beans.nsmf.NssiUpdateRequestById;
+import org.onap.so.beans.nsmf.ResponseDescriptor;
+import org.onap.so.beans.nsmf.TerminateNssi;
+import org.onap.so.beans.nsmf.UpdateCnNssi;
+import org.onap.so.beans.nsmf.UpdateCnNssiById;
+import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.domain.Example;
+import org.springframework.stereotype.Component;
+import static java.lang.String.valueOf;
+import static org.onap.so.adapters.nssmf.rest.HttpMethod.DELETE;
+import static org.onap.so.adapters.nssmf.rest.HttpMethod.GET;
+import static org.onap.so.adapters.nssmf.rest.HttpMethod.POST;
+import static org.onap.so.adapters.nssmf.rest.HttpMethod.PUT;
+import static org.onap.so.adapters.nssmf.rest.JobStatus.ERROR;
+import static org.onap.so.adapters.nssmf.rest.JobStatus.FINISHED;
+import static org.onap.so.adapters.nssmf.rest.JobStatus.PROCESSING;
+import static org.onap.so.adapters.nssmf.rest.JobStatus.STARTED;
+import static org.onap.so.adapters.nssmf.rest.JobStatus.fromString;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.ACTIVATE_NSS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.ALLOCATE_NSS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.CREATE_NSS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.DEACTIVATE_NSS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.DEALLOCATE_NSS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_FAILED;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.StatusDesc.QUERY_JOB_STATUS_SUCCESS;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.assertObjectNotNull;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
+import static org.onap.so.beans.nsmf.ActDeActNssi.ACT_URL;
+import static org.onap.so.beans.nsmf.ActDeActNssi.DE_ACT_URL;
+
+@Component
+@Primary
+public class NssmfManager {
+
+ private static final Logger logger = LoggerFactory.getLogger(NssmfManager.class);
+
+ public final static String QUERY = "/api/rest/provMns/v1/NSS" + "/SliceProfiles/{sliceProfileId}";
+
+ public final static String QUERY_BY_ID = "/api/rest/provMns/v1/NSS/nssi" + "/{nssiId}";
+
+ @Autowired
+ private ResourceOperationStatusRepository rscOperStatusRepo;
+
+ @Autowired
+ private RestUtil restUtil;
+
+
+ public RestResponse allocateNssi(NssiAllocateRequest nssmiAllocate) throws ApplicationException {
+
+ assertObjectNotNull(nssmiAllocate.getEsrInfo());
+ assertObjectNotNull(nssmiAllocate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssmiAllocate.getEsrInfo().getVendor());
+
+ String nsiId = null;
+ String allocateReq = null;
+ String allocateUrl = null;
+ logger.info("Allocate Nssi for " + nssmiAllocate.getEsrInfo().getNetworkType() + " Network has begun");
+
+ switch (nssmiAllocate.getEsrInfo().getNetworkType()) {
+
+ case CORE:
+ AllocateCnNssi cn = nssmiAllocate.getAllocateCnNssi();
+ assertObjectNotNull(cn);
+ assertObjectNotNull(cn.getNsiInfo());
+ assertObjectNotNull(cn.getNsiInfo().getNsiId());
+ nsiId = cn.getNsiInfo().getNsiId();
+ assertObjectNotNull(nsiId);
+ allocateReq = marshal(cn);
+ allocateUrl = AllocateCnNssi.URL;
+ break;
+
+ case ACCESS:
+ AllocateAnNssi an = nssmiAllocate.getAllocateAnNssi();
+ assertObjectNotNull(an);
+ assertObjectNotNull(an.getNsiInfo());
+ assertObjectNotNull(an.getNsiInfo().getNsiId());
+ nsiId = an.getNsiInfo().getNsiId();
+ assertObjectNotNull(nsiId);
+ allocateReq = marshal(an);
+ allocateUrl = AllocateAnNssi.URL;
+ break;
+
+ case TRANSPORT:
+ AllocateTnNssi tn = nssmiAllocate.getAllocateTnNssi();
+ assertObjectNotNull(tn);
+ assertObjectNotNull(tn.getNsiInfo());
+ assertObjectNotNull(tn.getNsiInfo().getNsiId());
+ nsiId = tn.getNsiInfo().getNsiId();
+ allocateReq = marshal(tn);
+ allocateUrl = AllocateTnNssi.URL;
+ break;
+
+ }
+ RestResponse rsp = restUtil.sendRequest(allocateUrl, POST, allocateReq, nssmiAllocate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status =
+ new ResourceOperationStatus(allocateRes.getNssiId(), allocateRes.getJobId(), nsiId);
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
+ logger.info("save segment and operation info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse createNssi(NssiCreateRequest nssiCreate) throws ApplicationException {
+
+ assertObjectNotNull(nssiCreate.getEsrInfo());
+ assertObjectNotNull(nssiCreate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiCreate.getEsrInfo().getVendor());
+
+ String nsiId = null;
+ String createReq = null;
+ String createUrl = null;
+ logger.info("Create Nssi for " + nssiCreate.getEsrInfo().getNetworkType() + " Network has begun");
+
+ switch (nssiCreate.getEsrInfo().getNetworkType()) {
+ case CORE:
+ CreateCnNssi cn = nssiCreate.getCreateCnNssi();
+ nsiId = cn.getNsiInfo().getNsiId();
+ assertObjectNotNull(nsiId);
+ createReq = marshal(cn);
+ createUrl = AllocateCnNssi.URL;
+ break;
+
+ case ACCESS:
+ case TRANSPORT:
+ throw new ApplicationException(1, "Create Nssi doesn't " + "support the Network type:"
+ + nssiCreate.getEsrInfo().getNetworkType());
+ }
+ RestResponse rsp = restUtil.sendRequest(createUrl, POST, createReq, nssiCreate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status =
+ new ResourceOperationStatus(allocateRes.getNssiId(), allocateRes.getJobId(), nsiId);
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, CREATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse deAllocateNssi(NssiDeAllocateRequest nssiDeallocate, String sliceId)
+ throws ApplicationException {
+
+ assertObjectNotNull(nssiDeallocate.getEsrInfo());
+ assertObjectNotNull(nssiDeallocate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiDeallocate.getEsrInfo().getVendor());
+
+ DeAllocateNssi deAllocate = nssiDeallocate.getDeAllocateNssi();
+
+ assertObjectNotNull(sliceId);
+ assertObjectNotNull(deAllocate.getNssiId());
+ assertObjectNotNull(deAllocate.getNsiId());
+
+ String deallocateUrl = formTnAndAnUrl(nssiDeallocate.getEsrInfo(), DeAllocateNssi.URL, sliceId);
+ String deAllocateReq = marshal(deAllocate);
+
+ logger.info("Deallocate Nssi has begun");
+
+ RestResponse rsp = restUtil.sendRequest(deallocateUrl, DELETE, deAllocateReq, nssiDeallocate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse res = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status =
+ new ResourceOperationStatus(deAllocate.getNssiId(), res.getJobId(), deAllocate.getNsiId());
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, DEALLOCATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ private String formTnAndAnUrl(EsrInfo esrInfo, String origUrl, String variable) {
+
+ origUrl = formatUrl(origUrl, variable);
+ String[] val;
+
+ switch (esrInfo.getNetworkType()) {
+
+ case TRANSPORT:
+ val = origUrl.split("v1");
+ return val[0] + "v1/tn" + val[1];
+
+ case ACCESS:
+ val = origUrl.split("v1");
+ return val[0] + "v1/an" + val[1];
+
+ case CORE:
+ return origUrl;
+ }
+ return origUrl;
+ }
+
+ private String formatUrl(String origUrl, String variable) {
+
+ if (variable != null) {
+ origUrl = String.format(origUrl, variable);
+ }
+ return origUrl;
+ }
+
+
+ public RestResponse terminateNssi(NssiTerminateRequest nssiTerminate, String nssiId) throws ApplicationException {
+
+ assertObjectNotNull(nssiTerminate.getEsrInfo());
+ assertObjectNotNull(nssiTerminate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiTerminate.getEsrInfo().getVendor());
+
+ TerminateNssi terminate = nssiTerminate.getTerminateNssi();
+
+ assertObjectNotNull(nssiId);
+ assertObjectNotNull(terminate.getNsiId());
+
+ logger.info("Terminate Nssi has begun");
+
+ String terminateUrl = formTnAndAnUrl(nssiTerminate.getEsrInfo(), TerminateNssi.URL, nssiId);
+ String terminateReq = marshal(terminate);
+
+ RestResponse rsp = restUtil.sendRequest(terminateUrl, DELETE, terminateReq, nssiTerminate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse res = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status = new ResourceOperationStatus(nssiId, res.getJobId(), terminate.getNsiId());
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, DEALLOCATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse activateNssi(NssiActDeActRequest nssiActivate, String snssai) throws ApplicationException {
+
+ assertObjectNotNull(nssiActivate.getEsrInfo());
+ assertObjectNotNull(nssiActivate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiActivate.getEsrInfo().getVendor());
+
+ ActDeActNssi activate = nssiActivate.getActDeActNssi();
+
+ assertObjectNotNull(snssai);
+ assertObjectNotNull(activate.getNssiId());
+ assertObjectNotNull(activate.getNsiId());
+
+ logger.info("Activate Nssi has begun");
+
+ String activateUrl = formTnAndAnUrl(nssiActivate.getEsrInfo(), ACT_URL, snssai);
+ String activateReq = marshal(activate);
+
+ RestResponse rsp = restUtil.sendRequest(activateUrl, PUT, activateReq, nssiActivate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse activateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status =
+ new ResourceOperationStatus(activate.getNssiId(), activateRes.getJobId(), activate.getNsiId());
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, ACTIVATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse deActivateNssi(NssiActDeActRequest nssiDeActivate, String snssai) throws ApplicationException {
+
+ assertObjectNotNull(nssiDeActivate.getEsrInfo());
+ assertObjectNotNull(nssiDeActivate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiDeActivate.getEsrInfo().getVendor());
+
+ logger.info("Deactivate Nssi has begun");
+
+ ActDeActNssi deActivate = nssiDeActivate.getActDeActNssi();
+
+ assertObjectNotNull(snssai);
+ assertObjectNotNull(deActivate.getNssiId());
+ assertObjectNotNull(deActivate.getNsiId());
+
+ String deActivateUrl = formTnAndAnUrl(nssiDeActivate.getEsrInfo(), DE_ACT_URL, snssai);
+ String deActivateReq = marshal(deActivate);
+
+ RestResponse rsp = restUtil.sendRequest(deActivateUrl, PUT, deActivateReq, nssiDeActivate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse deActivateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status = new ResourceOperationStatus(deActivate.getNssiId(),
+ deActivateRes.getJobId(), deActivate.getNsiId());
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, DEACTIVATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse queryJobStatus(JobStatusRequest jobReq, String jobId) throws ApplicationException {
+
+ assertObjectNotNull(jobReq.getEsrInfo());
+ assertObjectNotNull(jobReq.getEsrInfo().getNetworkType());
+ assertObjectNotNull(jobReq.getEsrInfo().getVendor());
+ assertObjectNotNull(jobId);
+ assertObjectNotNull(jobReq.getNssiId());
+ assertObjectNotNull(jobReq.getNsiId());
+
+ logger.info("Query job status has begun");
+
+ ResourceOperationStatus status = new ResourceOperationStatus(jobReq.getNssiId(), jobId, jobReq.getNsiId());
+ status = rscOperStatusRepo.findOne(Example.of(status))
+ .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
+
+ String statusUrl = formatUrl(JobStatusRequest.URL, jobId);
+ if (jobReq.getResponseId() != null) {
+ statusUrl = statusUrl + "?responseId=" + jobReq.getResponseId();
+ }
+
+ RestResponse rsp = restUtil.sendRequest(statusUrl, GET, "", jobReq.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (!valueOf(rsp.getStatus()).startsWith("2")) {
+ updateDbStatus(status, rsp.getStatus(), ERROR, QUERY_JOB_STATUS_FAILED);
+ throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
+ }
+
+ ResponseDescriptor rspDesc =
+ unMarshal(rsp.getResponseContent(), JobStatusResponse.class).getResponseDescriptor();
+ logger.info("save segment and operaton info -> begin");
+ updateRequestDbJobStatus(rspDesc, status, rsp);
+ logger.info("save segment and operaton info -> end");
+ return rsp;
+ }
+
+
+ public RestResponse updateNssi(NssiUpdateRequest nssiUpdate, String sliceId) throws ApplicationException {
+
+ assertObjectNotNull(nssiUpdate.getEsrInfo());
+ assertObjectNotNull(nssiUpdate.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiUpdate.getEsrInfo().getVendor());
+ assertObjectNotNull(sliceId);
+
+ String nsiId = null;
+ String nssiId = null;
+ String updateReq = null;
+ String updateUrl = null;
+ logger.info("Update Nssi for " + nssiUpdate.getEsrInfo().getNetworkType() + " Network has begun");
+
+ switch (nssiUpdate.getEsrInfo().getNetworkType()) {
+ case CORE:
+ UpdateCnNssi cn = nssiUpdate.getUpdateCnNssi();
+ nsiId = cn.getNsiInfo().getNsiId();
+ nssiId = cn.getNssiId();
+ assertObjectNotNull(nsiId);
+ assertObjectNotNull(nssiId);
+ updateReq = marshal(cn);
+ updateUrl = formatUrl(UpdateCnNssi.URL, sliceId);
+ break;
+
+ case ACCESS:
+ case TRANSPORT:
+ throw new ApplicationException(1, "Update Nssi doesn't " + "support the Network type:"
+ + nssiUpdate.getEsrInfo().getNetworkType());
+ }
+
+ RestResponse rsp = restUtil.sendRequest(updateUrl, PUT, updateReq, nssiUpdate.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status = new ResourceOperationStatus(nssiId, allocateRes.getJobId(), nsiId);
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse updateNssiById(NssiUpdateRequestById nssiUpdateById, String nssiId)
+ throws ApplicationException {
+
+ assertObjectNotNull(nssiUpdateById.getEsrInfo());
+ assertObjectNotNull(nssiUpdateById.getEsrInfo().getNetworkType());
+ assertObjectNotNull(nssiUpdateById.getEsrInfo().getVendor());
+ assertObjectNotNull(nssiId);
+
+ String nsiId = null;
+ String updateReq = null;
+ String updateUrl = null;
+ logger.info("Update Nssi by ID for " + nssiUpdateById.getEsrInfo().getNetworkType() + " Network has begun");
+
+ switch (nssiUpdateById.getEsrInfo().getNetworkType()) {
+ case CORE:
+ UpdateCnNssiById cn = nssiUpdateById.getUpdateCnNssiById();
+ nsiId = cn.getNsiInfo().getNsiId();
+ assertObjectNotNull(nsiId);
+ updateReq = marshal(cn);
+ updateUrl = formatUrl(UpdateCnNssiById.URL, nssiId);
+ break;
+
+ case ACCESS:
+ case TRANSPORT:
+ throw new ApplicationException(1, "Update Nssi doesn't " + "support the Network type:"
+ + nssiUpdateById.getEsrInfo().getNetworkType());
+ }
+
+ RestResponse rsp = restUtil.sendRequest(updateUrl, PUT, updateReq, nssiUpdateById.getEsrInfo());
+ assertObjectNotNull(rsp);
+
+ if (valueOf(rsp.getStatus()).startsWith("2")) {
+ NssiResponse allocateRes = unMarshal(rsp.getResponseContent(), NssiResponse.class);
+
+ ResourceOperationStatus status = new ResourceOperationStatus(nssiId, allocateRes.getJobId(), nsiId);
+ logger.info("save segment and operaton info -> begin");
+ updateDbStatus(status, rsp.getStatus(), STARTED, ALLOCATE_NSS_SUCCESS);
+ logger.info("save segment and operaton info -> end");
+ }
+ return rsp;
+ }
+
+ public RestResponse queryNssi(String vendor, String type, String sliceId) throws ApplicationException {
+
+ logger.info("Query Nssi has begun");
+ String getUrl = formatUrl(QUERY, sliceId);
+ EsrInfo esr = new EsrInfo();
+ esr.setVendor(vendor);
+ esr.setNetworkType(NetworkType.valueOf(type));
+ RestResponse rsp = restUtil.sendRequest(getUrl, GET, "", esr);
+ assertObjectNotNull(rsp);
+ return rsp;
+ }
+
+ public RestResponse queryNssiById(String vendor, String type, String nssiId) throws ApplicationException {
+
+ logger.info("Query Nssi by ID has begun");
+ String getUrl = formatUrl(QUERY_BY_ID, nssiId);
+ EsrInfo esr = new EsrInfo();
+ esr.setVendor(vendor);
+ esr.setNetworkType(NetworkType.valueOf(type));
+ RestResponse rsp = restUtil.sendRequest(getUrl, GET, "", esr);
+ assertObjectNotNull(rsp);
+ return rsp;
+ }
+
+ private void updateRequestDbJobStatus(ResponseDescriptor rspDesc, ResourceOperationStatus status, RestResponse rsp)
+ throws ApplicationException {
+
+ switch (fromString(rspDesc.getStatus())) {
+
+ case STARTED:
+ updateDbStatus(status, rsp.getStatus(), STARTED, QUERY_JOB_STATUS_SUCCESS);
+ break;
+
+ case ERROR:
+ updateDbStatus(status, rsp.getStatus(), ERROR, QUERY_JOB_STATUS_FAILED);
+ throw new ApplicationException(500, QUERY_JOB_STATUS_FAILED);
+
+ case FINISHED:
+ if (rspDesc.getProgress() == 100) {
+ updateDbStatus(status, rsp.getStatus(), FINISHED, QUERY_JOB_STATUS_SUCCESS);
+ }
+ break;
+
+ case PROCESSING:
+ updateDbStatus(status, rsp.getStatus(), PROCESSING, QUERY_JOB_STATUS_SUCCESS);
+ break;
+ }
+ }
+
+ private void updateDbStatus(ResourceOperationStatus status, int rspStatus, JobStatus jobStatus,
+ String description) {
+ status.setErrorCode(valueOf(rspStatus));
+ status.setStatus(jobStatus.toString());
+ status.setStatusDescription(description);
+ logger.info("Updating DB status");
+ rscOperStatusRepo.save(status);
+ logger.info("Updating successful");
+ }
+
+ public void setRscOperStatusRepo(ResourceOperationStatusRepository rscOperStatusRepo) {
+ this.rscOperStatusRepo = rscOperStatusRepo;
+ }
+
+ public void setRestUtil(RestUtil restUtil) {
+ this.restUtil = restUtil;
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestResponse.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestResponse.java
new file mode 100644
index 0000000000..cc047e45c7
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestResponse.java
@@ -0,0 +1,92 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import java.util.Map;
+
+public class RestResponse {
+
+ // the response content
+ private String responseContent;
+
+ // the response status
+ private int status;
+
+ // the response header
+ private Map<String, String> respHeaderMap;
+
+ public RestResponse() {
+ this.status = -1;
+
+ this.respHeaderMap = null;
+ }
+
+ public int getStatus() {
+ return this.status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public Map<String, String> getRespHeaderMap() {
+ return this.respHeaderMap;
+ }
+
+ public void setRespHeaderMap(Map<String, String> header) {
+ this.respHeaderMap = header;
+ }
+
+ public int getRespHeaderInt(String key) {
+ if (this.respHeaderMap != null) {
+ String result = this.respHeaderMap.get(key);
+ if (result != null) {
+ return Integer.parseInt(result);
+ }
+ }
+ return -1;
+ }
+
+ public long getRespHeaderLong(String key) {
+ if (this.respHeaderMap != null) {
+ String result = this.respHeaderMap.get(key);
+ if (result != null) {
+ return Long.parseLong(result);
+ }
+ }
+ return -1L;
+ }
+
+ public String getRespHeaderStr(String key) {
+ if (this.respHeaderMap != null) {
+ return this.respHeaderMap.get(key);
+ }
+ return null;
+ }
+
+ public String getResponseContent() {
+ return this.responseContent;
+ }
+
+ public void setResponseContent(String responseString) {
+ this.responseContent = responseString;
+ }
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestUtil.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestUtil.java
new file mode 100644
index 0000000000..3592d4f6a3
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/RestUtil.java
@@ -0,0 +1,307 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import javax.net.ssl.SSLContext;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.X509TrustManager;
+import javax.ws.rs.core.UriBuilder;
+import java.net.SocketTimeoutException;
+import java.net.URI;
+import org.apache.http.Header;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.config.RequestConfig;
+import org.apache.http.client.methods.HttpEntityEnclosingRequestBase;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.methods.HttpPut;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.conn.ConnectTimeoutException;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.message.BasicHeader;
+import org.apache.http.util.EntityUtils;
+import org.onap.aai.domain.yang.EsrSystemInfo;
+import org.onap.aai.domain.yang.EsrSystemInfoList;
+import org.onap.aai.domain.yang.EsrThirdpartySdnc;
+import org.onap.aai.domain.yang.EsrThirdpartySdncList;
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.onap.so.adapters.nssmf.extclients.aai.AaiServiceProvider;
+import org.onap.so.adapters.nssmf.model.TokenRequest;
+import org.onap.so.adapters.nssmf.model.TokenResponse;
+import org.onap.so.beans.nsmf.EsrInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import static org.apache.http.entity.ContentType.APPLICATION_JSON;
+import static org.onap.so.adapters.nssmf.rest.HttpMethod.POST;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.BAD_REQUEST;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.marshal;
+import static org.onap.so.adapters.nssmf.util.NssmfAdapterUtil.unMarshal;
+import static org.onap.so.logger.ErrorCode.AvailabilityError;
+import static org.onap.so.logger.LoggingAnchor.FOUR;
+import static org.onap.so.logger.MessageEnum.RA_NS_EXC;
+
+@Component
+public class RestUtil {
+
+ private static final Logger logger = LoggerFactory.getLogger(RestUtil.class);
+
+ private static final int DEFAULT_TIME_OUT = 60000;
+
+ private static final String NSSMI_ADAPTER = "NSSMI Adapter";
+
+ private static final String TOKEN_URL = "/api/rest/securityManagement/v1" + "/oauth/token";
+
+ @Autowired
+ private AaiServiceProvider aaiSvcProv;
+
+
+ public NssmfInfo getNssmfHost(EsrInfo esrInfo) throws ApplicationException {
+ EsrThirdpartySdncList sdncList = aaiSvcProv.invokeGetThirdPartySdncList();
+ if (sdncList != null && sdncList.getEsrThirdpartySdnc() != null) {
+ for (EsrThirdpartySdnc sdncEsr : sdncList.getEsrThirdpartySdnc()) {
+
+ EsrSystemInfoList sysInfoList =
+ aaiSvcProv.invokeGetThirdPartySdncEsrSystemInfo(sdncEsr.getThirdpartySdncId());
+
+ if (sysInfoList != null && sysInfoList.getEsrSystemInfo() != null) {
+ for (EsrSystemInfo esr : sysInfoList.getEsrSystemInfo()) {
+ if (esr != null && esr.getType().equals(esrInfo.getNetworkType().getNetworkType())
+ && esr.getVendor().equals(esrInfo.getVendor())) {
+ logger.info("Found an entry with vendor name " + esrInfo.getVendor() + " and network type "
+ + esrInfo.getNetworkType() + " in ESR.");
+ NssmfInfo nssmfInfo = new NssmfInfo();
+ nssmfInfo.setIpAddress(esr.getIpAddress());
+ nssmfInfo.setPort(esr.getPort());
+ nssmfInfo.setCacert(esr.getSslCacert());
+ nssmfInfo.setUserName(esr.getUserName());
+ nssmfInfo.setPassword(esr.getPassword());
+ String endPoint = UriBuilder.fromPath("").host(esr.getIpAddress())
+ .port(Integer.valueOf(esr.getPort())).scheme("https").build().toString();
+ nssmfInfo.setUrl(endPoint);
+ return nssmfInfo;
+ }
+ }
+ }
+
+ }
+ }
+
+ throw new ApplicationException(BAD_REQUEST, "ESR information is improper");
+ }
+
+ public RestResponse sendRequest(String url, HttpMethod methodType, String content, EsrInfo esrInfo)
+ throws ApplicationException {
+
+ NssmfInfo nssmfInfo = getNssmfHost(esrInfo);
+
+ TokenRequest req = new TokenRequest();
+ req.setGrantType("password");
+ req.setUserName(nssmfInfo.getUserName());
+ req.setValue(nssmfInfo.getPassword());
+
+ String tokenReq = marshal(req);
+
+ logger.info("Sending token request to NSSMF: " + tokenReq);
+ RestResponse tokenRes = send(nssmfInfo.getUrl() + TOKEN_URL, POST, tokenReq, null);
+
+ TokenResponse res = unMarshal(tokenRes.getResponseContent(), TokenResponse.class);
+ String token = res.getAccessToken();
+ Header header = new BasicHeader("X-Auth-Token", token);
+ String nssmfUrl = nssmfInfo.getUrl() + url;
+ return send(nssmfUrl, methodType, content, header);
+ }
+
+ private RestResponse send(String url, HttpMethod methodType, String content, Header header) {
+
+ HttpRequestBase req = null;
+ HttpResponse res = null;
+
+ logger.debug("Beginning to send message {}: {}", methodType, url);
+
+ try {
+ int timeout = DEFAULT_TIME_OUT;
+
+ RequestConfig config = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
+ .setConnectionRequestTimeout(timeout).build();
+ logger.debug("Sending request to NSSMF: " + content);
+ req = getHttpReq(url, methodType, header, config, content);
+ res = getHttpsClient().execute(req);
+
+ String resContent = null;
+ if (res.getEntity() != null) {
+ resContent = EntityUtils.toString(res.getEntity(), "UTF-8");
+ }
+
+ int statusCode = res.getStatusLine().getStatusCode();
+ String statusMessage = res.getStatusLine().getReasonPhrase();
+ logger.info("NSSMF Response: {} {}", statusCode,
+ statusMessage + (resContent == null ? "" : System.lineSeparator() + resContent));
+
+ if (res.getStatusLine().getStatusCode() >= 300) {
+ String errMsg = "{\n \"errorCode\": " + res.getStatusLine().getStatusCode()
+ + "\n \"errorDescription\": " + statusMessage + "\n}";
+ logError(errMsg);
+ return createResponse(statusCode, errMsg);
+ }
+ if (null != req) {
+ req.reset();
+ } else {
+ logger.debug("method is NULL:");
+ }
+ req = null;
+
+ return createResponse(statusCode, resContent);
+
+ } catch (SocketTimeoutException | ConnectTimeoutException e) {
+ String errMsg = "Request to NSSMF timed out";
+ logError(errMsg, e);
+ return createResponse(408, errMsg);
+ } catch (Exception e) {
+ String errMsg = "Error processing request to NSSMF";
+ logError(errMsg, e);
+ return createResponse(500, errMsg);
+ } finally {
+ if (res != null) {
+ try {
+ EntityUtils.consume(res.getEntity());
+ } catch (Exception e) {
+ logger.debug("Exception :", e);
+ }
+ }
+ if (req != null) {
+ try {
+ req.reset();
+ } catch (Exception e) {
+ logger.debug("Exception :", e);
+ }
+ }
+ }
+ }
+
+ private RestResponse createResponse(int statusCode, String errMsg) {
+ RestResponse restResponse = new RestResponse();
+ restResponse.setStatus(statusCode);
+ restResponse.setResponseContent(errMsg);
+ return restResponse;
+ }
+
+ private HttpRequestBase getHttpReq(String url, HttpMethod method, Header header, RequestConfig config,
+ String content) throws ApplicationException {
+ HttpRequestBase base = null;
+ switch (method) {
+ case POST:
+ HttpPost post = new HttpPost(url);
+ post.setEntity(new StringEntity(content, APPLICATION_JSON));
+ base = post;
+ break;
+
+ case GET:
+ base = new HttpGet(url);
+ break;
+
+ case PUT:
+ HttpPut put = new HttpPut(url);
+ put.setEntity(new StringEntity(content, APPLICATION_JSON));
+ base = put;
+ break;
+
+ case PATCH:
+ break;
+
+ case DELETE:
+ HttpDeleteWithBody delete = new HttpDeleteWithBody(url);
+ if (content != null) {
+ delete.setEntity(new StringEntity(content, APPLICATION_JSON));
+ }
+ base = delete;
+ break;
+
+ }
+ base.setConfig(config);
+ if (header != null) {
+ base.setHeader(header);
+ }
+ return base;
+ }
+
+ class HttpDeleteWithBody extends HttpEntityEnclosingRequestBase {
+ public static final String METHOD_NAME = "DELETE";
+
+ public String getMethod() {
+ return METHOD_NAME;
+ }
+
+ public HttpDeleteWithBody(final String uri) {
+ super();
+ setURI(URI.create(uri));
+ }
+
+ public HttpDeleteWithBody(final URI uri) {
+ super();
+ setURI(uri);
+ }
+
+ public HttpDeleteWithBody() {
+ super();
+ }
+ }
+
+
+ public HttpClient getHttpsClient() {
+
+ TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
+ public java.security.cert.X509Certificate[] getAcceptedIssuers() {
+ return null;
+ }
+
+ public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+
+ public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {}
+ }};
+
+ // Install the all-trusting trust manager
+ try {
+ SSLContext sc = SSLContext.getInstance("SSL");
+ sc.init(null, trustAllCerts, new java.security.SecureRandom());
+ // HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
+
+ SSLConnectionSocketFactory sslsf =
+ new SSLConnectionSocketFactory(sc, new String[] {"TLSv1"}, null, new TrustAllHostNameVerifier());
+ return HttpClients.custom().setSSLSocketFactory(sslsf).build();
+ } catch (Exception e) {
+ throw new IllegalArgumentException(e);
+ }
+ }
+
+ private static void logError(String errMsg, Throwable t) {
+ logger.error(FOUR, RA_NS_EXC.toString(), NSSMI_ADAPTER, AvailabilityError.getValue(), errMsg, t);
+ }
+
+ private static void logError(String errMsg) {
+ logger.error(FOUR, RA_NS_EXC.toString(), NSSMI_ADAPTER, AvailabilityError.toString(), errMsg);
+ }
+}
+
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java
new file mode 100644
index 0000000000..254186bda8
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/rest/TrustAllHostNameVerifier.java
@@ -0,0 +1,32 @@
+/*-
+ * ============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.adapters.nssmf.rest;
+
+import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.SSLSession;
+
+public class TrustAllHostNameVerifier implements HostnameVerifier {
+
+ public boolean verify(String hostname, SSLSession session) {
+ return true;
+ }
+
+}
diff --git a/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java
new file mode 100644
index 0000000000..b0b84d822b
--- /dev/null
+++ b/adapters/mso-nssmf-adapter/src/main/java/org/onap/so/adapters/nssmf/util/NssmfAdapterUtil.java
@@ -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.adapters.nssmf.util;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.io.IOException;
+import org.onap.so.adapters.nssmf.exceptions.ApplicationException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.onap.so.logger.ErrorCode;
+import static org.onap.so.logger.LoggingAnchor.THREE;
+import static org.onap.so.logger.MessageEnum.RA_NS_EXC;
+
+public class NssmfAdapterUtil {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(NssmfAdapterUtil.class);
+
+ public static final int BAD_REQUEST = 400;
+
+ private static final String UNMARSHAL_FAIL_MSG = "Failed to unmarshal json";
+
+ private static final String MARSHAL_FAIL_MSG = "Failed to marshal object";
+
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ public static class StatusDesc {
+
+ public static final String ALLOCATE_NSS_SUCCESS = "Allocating nss is " + "successful";
+
+ public static final String CREATE_NSS_SUCCESS = "Creating nss is " + "successful";
+
+ public static final String DEALLOCATE_NSS_SUCCESS = "Deallocate nss " + "is successful";
+
+ public static final String ACTIVATE_NSS_SUCCESS = "Activate nss " + "is successful";
+
+ public static final String DEACTIVATE_NSS_SUCCESS = "Deactivate nss " + "is successful";
+
+ public static final String QUERY_JOB_STATUS_FAILED = "Query job " + "status failed";
+
+ public static final String QUERY_JOB_STATUS_SUCCESS = "Query job " + "status is successful";
+
+ private StatusDesc() {
+
+ }
+ }
+
+ private NssmfAdapterUtil() {
+
+ }
+
+ public static void assertObjectNotNull(Object object) throws ApplicationException {
+ if (null == object) {
+ LOGGER.error("Object is null.");
+ throw new ApplicationException(BAD_REQUEST, "An object is null.");
+ }
+ }
+
+ public static <T> T unMarshal(String jsonstr, Class<T> type) throws ApplicationException {
+ try {
+ return MAPPER.readValue(jsonstr, type);
+ } catch (IOException e) {
+ LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), UNMARSHAL_FAIL_MSG, e);
+ throw new ApplicationException(BAD_REQUEST, UNMARSHAL_FAIL_MSG);
+ }
+ }
+
+ public static String marshal(Object srcObj) throws ApplicationException {
+ try {
+ return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(srcObj);
+ } catch (IOException e) {
+ LOGGER.error(THREE, RA_NS_EXC.toString(), ErrorCode.BusinessProcessError.getValue(), MARSHAL_FAIL_MSG, e);
+ throw new ApplicationException(BAD_REQUEST, MARSHAL_FAIL_MSG);
+ }
+ }
+
+}
diff --git a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapter.java b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapter.java
index 110fc6c03e..84ff054a7c 100644
--- a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapter.java
+++ b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapter.java
@@ -26,6 +26,7 @@ import javax.jws.WebService;
import javax.xml.bind.annotation.XmlElement;
import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
import org.onap.so.db.request.beans.InfraActiveRequests;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
import org.onap.so.db.request.beans.ResourceOperationStatus;
/**
@@ -55,6 +56,20 @@ public interface MsoRequestsDbAdapter {
throws MsoRequestsDbException;
@WebMethod
+ public void setInstanceNfvoMappingRepository(
+ @WebParam(name = "instanceId") @XmlElement(required = true) String instanceId,
+ @WebParam(name = "nfvoName") @XmlElement(required = true) String nfvoName,
+ @WebParam(name = "endpoint") @XmlElement(required = true) String endpoint,
+ @WebParam(name = "username") @XmlElement(required = true) String username,
+ @WebParam(name = "password") @XmlElement(required = true) String password,
+ @WebParam(name = "apiRoot") @XmlElement(required = false) String apiRoot) throws MsoRequestsDbException;
+
+ @WebMethod
+ public InstanceNfvoMapping getInstanceNfvoMapping(
+ @WebParam(name = "instanceId") @XmlElement(required = true) String instanceId)
+ throws MsoRequestsDbException;
+
+ @WebMethod
public InfraActiveRequests getInfraRequest(
@WebParam(name = "requestId") @XmlElement(required = true) String requestId) throws MsoRequestsDbException;
diff --git a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapterImpl.java b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
index 085a255948..052a53bb1f 100644
--- a/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
+++ b/adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/MsoRequestsDbAdapterImpl.java
@@ -31,12 +31,14 @@ import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
import org.onap.so.db.request.beans.InfraActiveRequests;
import org.onap.so.db.request.beans.OperationStatus;
import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
import org.onap.so.db.request.beans.ResourceOperationStatusId;
import org.onap.so.db.request.beans.SiteStatus;
import org.onap.so.db.request.data.repository.InfraActiveRequestsRepository;
import org.onap.so.db.request.data.repository.OperationStatusRepository;
import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
import org.onap.so.db.request.data.repository.SiteStatusRepository;
+import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
import org.onap.so.logger.ErrorCode;
import org.onap.so.requestsdb.RequestsDbConstant;
import org.slf4j.Logger;
@@ -59,6 +61,9 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
private InfraActiveRequestsRepository infraActive;
@Autowired
+ private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
+
+ @Autowired
private SiteStatusRepository siteRepo;
@Autowired
@@ -69,6 +74,40 @@ public class MsoRequestsDbAdapterImpl implements MsoRequestsDbAdapter {
@Transactional
@Override
+ public void setInstanceNfvoMappingRepository(String instanceId, String nfvoName, String endpoint, String username,
+ String password, String apiRoot) {
+ InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
+ if (apiRoot != null) {
+ instanceNfvoMapping.setApiRoot(apiRoot);
+ }
+ if (endpoint != null) {
+ instanceNfvoMapping.setEndpoint(endpoint);
+ }
+ if (instanceId != null) {
+ instanceNfvoMapping.setInstanceId(instanceId);
+ }
+ if (nfvoName != null) {
+ instanceNfvoMapping.setNfvoName(nfvoName);
+ }
+ if (username != null) {
+ instanceNfvoMapping.setUsername(username);
+ }
+ if (password != null) {
+ instanceNfvoMapping.setPassword(password);
+ }
+
+ instanceNfvoMappingRepository.save(instanceNfvoMapping);
+ }
+
+ @Transactional
+ @Override
+ public InstanceNfvoMapping getInstanceNfvoMapping(String instanceId) {
+ InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(instanceId);
+ return instanceNfvoMapping;
+ }
+
+ @Transactional
+ @Override
public void updateInfraRequest(String requestId, String lastModifiedBy, String statusMessage, String responseBody,
RequestStatusType requestStatus, String progress, String vnfOutputs, String serviceInstanceId,
String networkId, String vnfId, String vfModuleId, String volumeGroupId, String serviceInstanceName,
diff --git a/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V6.1.1__Add_Instance_NFVO_Mapping_Table.sql b/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V6.1.1__Add_Instance_NFVO_Mapping_Table.sql
new file mode 100644
index 0000000000..165a9b33f8
--- /dev/null
+++ b/adapters/mso-requests-db-adapter/src/main/resources/db/migration/V6.1.1__Add_Instance_NFVO_Mapping_Table.sql
@@ -0,0 +1,12 @@
+use requestdb;
+
+CREATE TABLE `instance_nfvo_mapping` (
+ `INSTANCE_ID` varchar(256) NOT NULL,
+ `NFVO_NAME` varchar(256) DEFAULT NULL,
+ `ENDPOINT` varchar(256) DEFAULT NULL,
+ `USERNAME` varchar(256) DEFAULT NULL,
+ `PASSWORD` varchar(256) DEFAULT NULL,
+ `API_ROOT` varchar(256) DEFAULT NULL,
+ `JOB_ID` varchar(256) DEFAULT NULL,
+ PRIMARY KEY (`INSTANCE_ID`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1; \ No newline at end of file
diff --git a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/adapters/MSORequestDBImplTest.java b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/adapters/MSORequestDBImplTest.java
index fef9dbc22c..9ded5b4b79 100644
--- a/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/adapters/MSORequestDBImplTest.java
+++ b/adapters/mso-requests-db-adapter/src/test/java/org/onap/so/adapters/requestsdb/adapters/MSORequestDBImplTest.java
@@ -39,8 +39,10 @@ import org.onap.so.adapters.requestsdb.exceptions.MsoRequestsDbException;
import org.onap.so.db.request.beans.InfraActiveRequests;
import org.onap.so.db.request.beans.OperationStatus;
import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
import org.onap.so.db.request.data.repository.OperationStatusRepository;
import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
+import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
import org.onap.so.requestsdb.RequestsDbConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.web.server.LocalServerPort;
@@ -58,6 +60,9 @@ public class MSORequestDBImplTest extends RequestsAdapterBase {
@Autowired
private ResourceOperationStatusRepository resourceOperationStatusRepo;
+ @Autowired
+ private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
+
@Rule
public ExpectedException thrown = ExpectedException.none();
@@ -257,6 +262,29 @@ public class MSORequestDBImplTest extends RequestsAdapterBase {
}
@Test
+ public void setInstanceNfvoMappingRepository() throws MsoRequestsDbException {
+ InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
+ String instanceId = "9b9f02c0-298b-458a-bc9c-be3692e4f354";
+ String nfvoName = "testNFVO";
+ String endpoint = "http://127.0.0.1:80/";
+ String username = "admin";
+ String password = "admin";
+ String apiRoot = "v1";
+
+ instanceNfvoMapping.setApiRoot(apiRoot);
+ instanceNfvoMapping.setEndpoint(endpoint);
+ instanceNfvoMapping.setInstanceId(instanceId);
+ instanceNfvoMapping.setNfvoName(nfvoName);
+ instanceNfvoMapping.setUsername(username);
+ instanceNfvoMapping.setPassword(password);
+
+ dbAdapter.setInstanceNfvoMappingRepository(instanceId, nfvoName, endpoint, username, password, apiRoot);
+ InstanceNfvoMapping dbInstNfvoMap = dbAdapter.getInstanceNfvoMapping(instanceId);
+ assertThat(dbInstNfvoMap, sameBeanAs(instanceNfvoMapping));
+ }
+
+
+ @Test
public void updateServiceOperation() throws MsoRequestsDbException {
String serviceId = "serviceid";
String operationId = "operationid";
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/AaiConnection.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/AaiConnection.java
index a2bd603ae6..9b2a8c3d62 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/AaiConnection.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/AaiConnection.java
@@ -20,6 +20,8 @@
package org.onap.so.adapters.vevnfm.aai;
+import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import org.apache.logging.log4j.util.Strings;
@@ -43,27 +45,27 @@ public class AaiConnection {
private static final int FIRST_INDEX = 0;
- private static void isValid(final EsrSystemInfo info) throws VeVnfmException {
- if (info == null || Strings.isBlank(info.getServiceUrl())) {
+ private static void isValid(final List<EsrSystemInfo> infos) throws VeVnfmException {
+ if (infos == null || infos.isEmpty() || Strings.isBlank(infos.get(FIRST_INDEX).getServiceUrl())) {
throw new VeVnfmException("No 'url' field in VNFM info");
}
}
- public EsrSystemInfo receiveVnfm() throws VeVnfmException {
- EsrSystemInfo info;
+ public List<EsrSystemInfo> receiveVnfm() throws VeVnfmException {
+ List<EsrSystemInfo> infos;
try {
- info = receiveVnfmInternal();
+ infos = receiveVnfmInternal();
} catch (Exception e) {
throw new VeVnfmException(e);
}
- isValid(info);
+ isValid(infos);
- return info;
+ return infos;
}
- private EsrSystemInfo receiveVnfmInternal() {
+ private List<EsrSystemInfo> receiveVnfmInternal() {
final AAIResourcesClient resourcesClient = new AAIResourcesClient();
final AAIResourceUri resourceUri = AAIUriFactory.createResourceUri(AAIObjectType.VNFM_LIST);
final Optional<EsrVnfmList> response = resourcesClient.get(EsrVnfmList.class, resourceUri);
@@ -73,33 +75,29 @@ public class AaiConnection {
logger.info("The VNFM replied with: {}", esrVnfmList);
final List<EsrVnfm> esrVnfm = esrVnfmList.getEsrVnfm();
- if (esrVnfm.isEmpty()) {
- return null;
+ final List<EsrSystemInfo> infos = new LinkedList<>();
+
+ for (final EsrVnfm vnfm : esrVnfm) {
+ final String vnfmId = vnfm.getVnfmId();
+ infos.addAll(receiveVnfmServiceUrl(resourcesClient, vnfmId));
}
- final String vnfmId = esrVnfm.get(FIRST_INDEX).getVnfmId();
- return receiveVnfmServiceUrl(resourcesClient, vnfmId);
+ return infos;
}
return null;
}
- private EsrSystemInfo receiveVnfmServiceUrl(final AAIResourcesClient resourcesClient, final String vnfmId) {
+ private List<EsrSystemInfo> receiveVnfmServiceUrl(final AAIResourcesClient resourcesClient, final String vnfmId) {
final Optional<EsrVnfm> response = resourcesClient.get(EsrVnfm.class,
AAIUriFactory.createResourceUri(AAIObjectType.VNFM, vnfmId).depth(Depth.ONE));
if (response.isPresent()) {
final EsrVnfm esrVnfm = response.get();
logger.info("The VNFM replied with: {}", esrVnfm);
- final List<EsrSystemInfo> esrSystemInfo = esrVnfm.getEsrSystemInfoList().getEsrSystemInfo();
-
- if (esrSystemInfo.isEmpty()) {
- return null;
- }
-
- return esrSystemInfo.get(FIRST_INDEX);
+ return esrVnfm.getEsrSystemInfoList().getEsrSystemInfo();
}
- return null;
+ return Collections.emptyList();
}
}
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/EsrId.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/EsrId.java
new file mode 100644
index 0000000000..13ff2b6397
--- /dev/null
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/aai/EsrId.java
@@ -0,0 +1,45 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SO
+ * ================================================================================
+ * Copyright (C) 2020 Samsung. 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.adapters.vevnfm.aai;
+
+import org.onap.aai.domain.yang.EsrSystemInfo;
+
+public class EsrId {
+
+ private EsrSystemInfo info;
+ private String id;
+
+ public EsrSystemInfo getInfo() {
+ return info;
+ }
+
+ public void setInfo(final EsrSystemInfo info) {
+ this.info = info;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(final String id) {
+ this.id = id;
+ }
+}
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/StartupConfiguration.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/StartupConfiguration.java
index ae330f7ed6..c033fc3f96 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/StartupConfiguration.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/configuration/StartupConfiguration.java
@@ -20,6 +20,7 @@
package org.onap.so.adapters.vevnfm.configuration;
+import java.util.List;
import org.onap.aai.domain.yang.EsrSystemInfo;
import org.onap.so.adapters.vevnfm.service.StartupService;
import org.onap.so.adapters.vevnfm.service.SubscriptionScheduler;
@@ -47,8 +48,8 @@ public class StartupConfiguration {
@EventListener(ApplicationReadyEvent.class)
public void onApplicationReadyEvent() throws Exception {
if (!environment.acceptsProfiles(Profiles.of(TEST_PROFILE))) {
- final EsrSystemInfo info = startupService.receiveVnfm();
- subscriptionScheduler.setInfo(info);
+ final List<EsrSystemInfo> infos = startupService.receiveVnfm();
+ subscriptionScheduler.setInfos(infos);
}
}
}
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/DmaapService.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/DmaapService.java
index 59397cead3..36a4c3300d 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/DmaapService.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/DmaapService.java
@@ -25,12 +25,15 @@ public class DmaapService {
private HttpRestServiceProvider restProvider;
public void send(final VnfLcmOperationOccurrenceNotification notification) {
- final ResponseEntity<String> response = restProvider.postHttpRequest(notification, getUrl(), String.class);
-
- final HttpStatus statusCode = response.getStatusCode();
- final String body = response.getBody();
-
- logger.info("The DMaaP replied with the code {} and the body {}", statusCode, body);
+ try {
+ final ResponseEntity<String> response = restProvider.postHttpRequest(notification, getUrl(), String.class);
+ final HttpStatus statusCode = response.getStatusCode();
+ final String body = response.getBody();
+
+ logger.info("The DMaaP replied with the code {} and the body {}", statusCode, body);
+ } catch (Exception e) {
+ logger.warn("An issue connecting to DMaaP", e);
+ }
}
private String getUrl() {
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/StartupService.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/StartupService.java
index 3d215148f2..92906ef35c 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/StartupService.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/StartupService.java
@@ -20,6 +20,8 @@
package org.onap.so.adapters.vevnfm.service;
+import java.util.Collections;
+import java.util.List;
import org.onap.aai.domain.yang.EsrSystemInfo;
import org.onap.so.adapters.vevnfm.aai.AaiConnection;
import org.onap.so.adapters.vevnfm.exception.VeVnfmException;
@@ -45,18 +47,17 @@ public class StartupService {
@Autowired
private AaiConnection aaiConnection;
- @Retryable(value = {VeVnfmException.class}, maxAttempts = 5, backoff = @Backoff(delay = 5000, multiplier = 10))
- public EsrSystemInfo receiveVnfm() throws VeVnfmException {
+ @Retryable(value = {Exception.class}, maxAttempts = 5, backoff = @Backoff(delay = 5000, multiplier = 2))
+ public List<EsrSystemInfo> receiveVnfm() throws VeVnfmException {
return aaiConnection.receiveVnfm();
}
@Recover
- public EsrSystemInfo recoverReceiveVnfm(final Throwable e) {
+ public List<EsrSystemInfo> recoverReceiveVnfm(final Throwable t) {
logger.warn("Connection to AAI failed");
final EsrSystemInfo info = new EsrSystemInfo();
info.setServiceUrl(vnfmDefaultEndpoint);
logger.warn("This EsrSystemInfo is used by default: {}", info);
-
- return info;
+ return Collections.singletonList(info);
}
}
diff --git a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriptionScheduler.java b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriptionScheduler.java
index 16427437fc..d9f3acc3df 100644
--- a/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriptionScheduler.java
+++ b/adapters/mso-ve-vnfm-adapter/src/main/java/org/onap/so/adapters/vevnfm/service/SubscriptionScheduler.java
@@ -20,7 +20,10 @@
package org.onap.so.adapters.vevnfm.service;
+import java.util.LinkedList;
+import java.util.List;
import org.onap.aai.domain.yang.EsrSystemInfo;
+import org.onap.so.adapters.vevnfm.aai.EsrId;
import org.onap.so.adapters.vevnfm.exception.VeVnfmException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -38,33 +41,57 @@ public class SubscriptionScheduler {
@Autowired
private SubscriberService subscriberService;
- private String subscribedId;
+ private List<EsrId> esrIds;
- private EsrSystemInfo info;
+ public void setInfos(final List<EsrSystemInfo> infos) {
+ esrIds = new LinkedList<>();
- public void setInfo(final EsrSystemInfo info) {
- this.info = info;
+ for (final EsrSystemInfo info : infos) {
+ final EsrId esrId = new EsrId();
+ esrId.setInfo(info);
+ esrIds.add(esrId);
+ }
+ }
+
+ List<EsrId> getEsrIds() {
+ return esrIds;
}
@Scheduled(fixedRate = 5000, initialDelay = 2000)
void subscribeTask() throws VeVnfmException {
- if (info != null) {
- if (subscribedId == null) {
- logger.info("Starting subscribe task");
- subscribedId = subscriberService.subscribe(info);
+ if (isEsrIdsValid()) {
+ for (final EsrId esrId : esrIds) {
+ singleSubscribe(esrId);
}
}
}
@Scheduled(fixedRate = 20000)
void checkSubscribeTask() throws VeVnfmException {
- if (info != null) {
- if (subscribedId != null) {
- logger.info("Checking subscription: {}", subscribedId);
- if (!subscriberService.checkSubscription(info, subscribedId)) {
- logger.info("Subscription {} not available", subscribedId);
- subscribedId = null;
- }
+ if (isEsrIdsValid()) {
+ for (final EsrId esrId : esrIds) {
+ singleCheckSubscription(esrId);
+ }
+ }
+ }
+
+ private boolean isEsrIdsValid() {
+ return esrIds != null && !esrIds.isEmpty();
+ }
+
+ private void singleSubscribe(final EsrId esrId) throws VeVnfmException {
+ if (esrId.getId() == null) {
+ logger.info("Single subscribe task");
+ esrId.setId(subscriberService.subscribe(esrId.getInfo()));
+ }
+ }
+
+ private void singleCheckSubscription(final EsrId esrId) throws VeVnfmException {
+ if (esrId.getId() != null) {
+ logger.info("Checking subscription: {}", esrId.getId());
+ if (!subscriberService.checkSubscription(esrId.getInfo(), esrId.getId())) {
+ logger.info("Subscription {} not available", esrId.getId());
+ esrId.setId(null);
}
}
}
diff --git a/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/StartupServiceTest.java b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/StartupServiceTest.java
index d1d34a706f..9b18cf96dc 100644
--- a/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/StartupServiceTest.java
+++ b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/StartupServiceTest.java
@@ -23,6 +23,8 @@ package org.onap.so.adapters.vevnfm.service;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
+import java.util.Collections;
+import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -52,14 +54,15 @@ public class StartupServiceTest {
// given
final EsrSystemInfo info = new EsrSystemInfo();
info.setServiceUrl(URL);
+ final List<EsrSystemInfo> infos = Collections.singletonList(info);
- when(aaiConnection.receiveVnfm()).thenReturn(info);
+ when(aaiConnection.receiveVnfm()).thenReturn(infos);
// when
- final EsrSystemInfo systemInfo = startupService.receiveVnfm();
+ final List<EsrSystemInfo> systemInfo = startupService.receiveVnfm();
// then
verify(aaiConnection).receiveVnfm();
- assertEquals(info, systemInfo);
+ assertEquals(infos, systemInfo);
}
}
diff --git a/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/SubscriptionSchedulerTest.java b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/SubscriptionSchedulerTest.java
new file mode 100644
index 0000000000..d3da7c86ec
--- /dev/null
+++ b/adapters/mso-ve-vnfm-adapter/src/test/java/org/onap/so/adapters/vevnfm/service/SubscriptionSchedulerTest.java
@@ -0,0 +1,69 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * SO
+ * ================================================================================
+ * Copyright (C) 2020 Samsung. 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.adapters.vevnfm.service;
+
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import java.util.Collections;
+import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.junit.MockitoJUnitRunner;
+import org.onap.aai.domain.yang.EsrSystemInfo;
+
+@RunWith(MockitoJUnitRunner.class)
+public class SubscriptionSchedulerTest {
+
+ private static final String URL = "url";
+ private static final String ID = "id044";
+
+ @Mock
+ private SubscriberService subscriberService;
+
+ @InjectMocks
+ private SubscriptionScheduler subscriptionScheduler;
+
+ @Test
+ public void testFullScenario() throws Exception {
+ // given
+ final EsrSystemInfo info = new EsrSystemInfo();
+ info.setServiceUrl(URL);
+ final List<EsrSystemInfo> infos = Collections.singletonList(info);
+
+ when(subscriberService.subscribe(eq(info))).thenReturn(ID);
+ when(subscriberService.checkSubscription(eq(info), eq(ID))).thenReturn(false);
+
+ // when
+ subscriptionScheduler.setInfos(infos);
+ subscriptionScheduler.subscribeTask();
+ subscriptionScheduler.checkSubscribeTask();
+
+ // then
+ verify(subscriberService).subscribe(info);
+ verify(subscriberService).checkSubscription(info, ID);
+
+ assertNull(subscriptionScheduler.getEsrIds().get(0).getId());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java
index 04c6749b61..51a0fc0c97 100644
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/constant/CommonConstant.java
@@ -33,17 +33,32 @@ public class CommonConstant {
public static final String STR_EMPTY = "";
public static final String NFVO_CREATE_URL = "/api/nslcm/v1/ns";
+ public static final String SOL005_NFVO_CREATE_URL = "/api/nslcm/v1/ns_instances";
public static final String NFVO_INSTANTIATE_URL = "/api/nslcm/v1/ns/%s/instantiate";
+ public static final String SOL005_NFVO_INSTANTIATE_URL = "/api/nslcm/v1/ns_instances/%s/instantiate";
public static final String NFVO_TERMINATE_URL = "/api/nslcm/v1/ns/%s/terminate";
+ public static final String SOL005_NFVO_TERMINATE_URL = "/api/nslcm/v1/ns_instances/%s/terminate";
public static final String NFVO_DELETE_URL = "/api/nslcm/v1/ns/%s";
+ public static final String SOL005_NFVO_DELETE_URL = "/api/nslcm/v1/ns_instances/%s";
public static final String NFVO_QUERY_URL = "/api/nslcm/v1/jobs/%s";
+ public static final String SOL005_NFVO_QUERY_URL = "/api/nslcm/v1/ns_lcm_op_occs/%s";
public static final String NFVO_SCALE_URL = "/api/nslcm/v1/ns/%s/scale";
+ public enum operationState {
+ PROCESSING, COMPLETED, PARTIALLY_COMPLETED, FAILED_TEMP, FAILED, ROLLING_BACK, ROLLED_BACK
+ }
+ public enum lcmOperationType {
+ INSTANTIATE, SCALE, UPDATE, TERMINATE, HEAL
+ };
+ public enum cancelMode {
+ GRACEFUL, FORCEFUL
+ };
+
/**
*
* <br>
@@ -107,8 +122,11 @@ public class CommonConstant {
public static final String DESC = "description";
public static final String NS_INSTANCE_ID = "nsInstanceId";
+ public static final String SOL005_NS_INSTANCE_ID = "id";
+
public static final String JOB_ID = "jobId";
+ public static final String JOB_URI = "Location";
public static final String ADDITIONAL_PARAM_FOR_NS = "additionalParamForNs";
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java
new file mode 100644
index 0000000000..d312501fd7
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddPnfData.java
@@ -0,0 +1,68 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class AddPnfData {
+ private String pnfId;
+ private String pnfName;
+ private String pnfdId;
+ private String pnfProfileId;
+ private List<PnfExtCpData> cpData;
+
+ /***
+ *
+ * @return id of pnf
+ */
+ public String getPnfId() {
+ return pnfId;
+ }
+
+ public void setPnfId(String pnfId) {
+ this.pnfId = pnfId;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public String getPnfdId() {
+ return pnfdId;
+ }
+
+ public void setPnfdId(String pnfdId) {
+ this.pnfdId = pnfdId;
+ }
+
+ public String getPnfProfileId() {
+ return pnfProfileId;
+ }
+
+ public void setPnfProfileId(String pnfProfileId) {
+ this.pnfProfileId = pnfProfileId;
+ }
+
+ public List<PnfExtCpData> getCpData() {
+ return cpData;
+ }
+
+ public void setCpData(List<PnfExtCpData> cpData) {
+ this.cpData = cpData;
+ }
+}
+
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java
new file mode 100644
index 0000000000..9f357a549d
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AddressRange.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AddressRange {
+ private String minAddress;
+ private String maxAddress;
+
+ public String getMinAddress() {
+ return minAddress;
+ }
+
+ public void setMinAddress(String minAddress) {
+ this.minAddress = minAddress;
+ }
+
+ public String getMaxAddress() {
+ return maxAddress;
+ }
+
+ public void setMaxAddress(String maxAddress) {
+ this.maxAddress = maxAddress;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java
new file mode 100644
index 0000000000..fa502f3962
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedNs.java
@@ -0,0 +1,40 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedNs {
+ private String nsInstanceId;
+ private String nsdId;
+
+ private enum changeType {
+ ADD, REMOVE, INSTANTIATE, TERMINATE, SCALE, UPDATE, HEAL
+ }
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED, PARTIALLY_COMPLETED
+ }
+
+ public String getNsInstanceId() {
+ return nsInstanceId;
+ }
+
+ public void setNsInstanceId(String nsInstanceId) {
+ this.nsInstanceId = nsInstanceId;
+ }
+
+ public String getNsdId() {
+ return nsdId;
+ }
+
+ public void setNsdId(String nsdId) {
+ this.nsdId = nsdId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java
new file mode 100644
index 0000000000..9d98e1c256
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedPnf.java
@@ -0,0 +1,67 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedPnf {
+ private String pnfid;
+ private String pnfdid;
+ private String pnfProfileId;
+ private String pnfName;
+ private String cpInstanceId;
+
+ private enum changeType {
+ ADD, REMOVE, MODIFY
+ }
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED
+ }
+
+ public String getPnfid() {
+ return pnfid;
+ }
+
+ public void setPnfid(String pnfid) {
+ this.pnfid = pnfid;
+ }
+
+ public String getPnfdid() {
+ return pnfdid;
+ }
+
+ public void setPnfdid(String pnfdid) {
+ this.pnfdid = pnfdid;
+ }
+
+ public String getPnfProfileId() {
+ return pnfProfileId;
+ }
+
+ public void setPnfProfileId(String pnfProfileId) {
+ this.pnfProfileId = pnfProfileId;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public String getCpInstanceId() {
+ return cpInstanceId;
+ }
+
+ public void setCpInstanceId(String cpInstanceId) {
+ this.cpInstanceId = cpInstanceId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java
new file mode 100644
index 0000000000..62f4f92fa9
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedSap.java
@@ -0,0 +1,49 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedSap {
+ private String sapInstanceId;
+ private String sapdId;
+ private String sapName;
+
+ private enum changeType {
+ ADD, REMOVE, MODIFY
+ }
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED
+ }
+
+ public String getSapInstanceId() {
+ return sapInstanceId;
+ }
+
+ public void setSapInstanceId(String sapInstanceId) {
+ this.sapInstanceId = sapInstanceId;
+ }
+
+ public String getSapdId() {
+ return sapdId;
+ }
+
+ public void setSapdId(String sapdId) {
+ this.sapdId = sapdId;
+ }
+
+ public String getSapName() {
+ return sapName;
+ }
+
+ public void setSapName(String sapName) {
+ this.sapName = sapName;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java
new file mode 100644
index 0000000000..ecaa1c5d3b
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVirtualLink.java
@@ -0,0 +1,49 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedVirtualLink {
+ private String nsVirtualLinkInstanceId;
+ private String nsVirtualLinkDescId;
+ private String vlProfileId;
+
+ private enum changeType {
+ ADD, DELETE, MODIFY, ADD_LINK_PORT, REMOVE_LINK_PORT
+ };
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED
+ }
+
+ public String getNsVirtualLinkInstanceId() {
+ return nsVirtualLinkInstanceId;
+ }
+
+ public void setNsVirtualLinkInstanceId(String nsVirtualLinkInstanceId) {
+ this.nsVirtualLinkInstanceId = nsVirtualLinkInstanceId;
+ }
+
+ public String getNsVirtualLinkDescId() {
+ return nsVirtualLinkDescId;
+ }
+
+ public void setNsVirtualLinkDescId(String nsVirtualLinkDescId) {
+ this.nsVirtualLinkDescId = nsVirtualLinkDescId;
+ }
+
+ public String getVlProfileId() {
+ return vlProfileId;
+ }
+
+ public void setVlProfileId(String vlProfileId) {
+ this.vlProfileId = vlProfileId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java
new file mode 100644
index 0000000000..6463c7a129
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnf.java
@@ -0,0 +1,78 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedVnf {
+ private String vnfInstanceId;
+ private String vnfdId;
+ private String vnfProfileId;
+ private String vnfName;
+
+ private enum changeType {
+ ADD,
+ REMOVE,
+ INSTANTIATE,
+ TERMINATE,
+ SCALE,
+ CHANGE_FLAVOUR,
+ HEAL,
+ OPERATE,
+ MODIFY_INFORMATION,
+ CHANGE_EXTERNAL_VNF_CONNECTIVITY
+ };
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED
+ }
+
+ private ChangedInfo changedInfo;
+
+
+ public String getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(String vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+
+ public String getVnfdId() {
+ return vnfdId;
+ }
+
+ public void setVnfdId(String vnfdId) {
+ this.vnfdId = vnfdId;
+ }
+
+ public String getVnfProfileId() {
+ return vnfProfileId;
+ }
+
+ public void setVnfProfileId(String vnfProfileId) {
+ this.vnfProfileId = vnfProfileId;
+ }
+
+ public String getVnfName() {
+ return vnfName;
+ }
+
+ public void setVnfName(String vnfName) {
+ this.vnfName = vnfName;
+ }
+
+ public ChangedInfo getChangedInfo() {
+ return changedInfo;
+ }
+
+ public void setChangedInfo(ChangedInfo changedInfo) {
+ this.changedInfo = changedInfo;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java
new file mode 100644
index 0000000000..04e9481190
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffectedVnffg.java
@@ -0,0 +1,40 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class AffectedVnffg {
+ private String vnffgInstanceId;
+ private String vnffgdId;
+
+ private enum changeType {
+ ADD, REMOVE, MODIFY
+ }
+ private enum changeResult {
+ COMPLETED, ROLLED_BACK, FAILED
+ }
+
+ public String getVnffgInstanceId() {
+ return vnffgInstanceId;
+ }
+
+ public void setVnffgInstanceId(String vnffgInstanceId) {
+ this.vnffgInstanceId = vnffgInstanceId;
+ }
+
+ public String getVnffgdId() {
+ return vnffgdId;
+ }
+
+ public void setVnffgdId(String vnffgdId) {
+ this.vnffgdId = vnffgdId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java
new file mode 100644
index 0000000000..7f019bcf40
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRule.java
@@ -0,0 +1,51 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class AffinityOrAntiAffinityRule {
+ private String vnfdId;
+ private List<String> vnfProfileId;
+ private List<String> vnfInstanceId;
+
+ private enum affinityOrAntiAffiinty {
+ AFFINITY, ANTI_AFFIINTY
+ };
+ private enum scope {
+ NFVI_POP, ZONE, ZONE_GROUP, NFVI_NODE
+ };
+
+ public String getVnfdId() {
+ return vnfdId;
+ }
+
+ public void setVnfdId(String vnfdId) {
+ this.vnfdId = vnfdId;
+ }
+
+ public List<String> getVnfProfileId() {
+ return vnfProfileId;
+ }
+
+ public void setVnfProfileId(List<String> vnfProfileId) {
+ this.vnfProfileId = vnfProfileId;
+ }
+
+ public List<String> getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(List<String> vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java
new file mode 100644
index 0000000000..5de6cbf139
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ChangedInfo.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class ChangedInfo {
+ private ModifyVnfInfoData changedVnfInfo;
+ private ExtVirtualLinkInfo changedExtConnectivity;
+
+ public ModifyVnfInfoData getChangedVnfInfo() {
+ return changedVnfInfo;
+ }
+
+ public void setChangedVnfInfo(ModifyVnfInfoData changedVnfInfo) {
+ this.changedVnfInfo = changedVnfInfo;
+ }
+
+ public ExtVirtualLinkInfo getChangedExtConnectivity() {
+ return changedExtConnectivity;
+ }
+
+ public void setChangedExtConnectivity(ExtVirtualLinkInfo changedExtConnectivity) {
+ this.changedExtConnectivity = changedExtConnectivity;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java
new file mode 100644
index 0000000000..2a63d39be0
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CivicAddressElement.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class CivicAddressElement {
+ private int caType;
+ private String caValue;
+
+ public int getCaType() {
+ return caType;
+ }
+
+ public void setCaType(int caType) {
+ this.caType = caType;
+ }
+
+ public String getCaValue() {
+ return caValue;
+ }
+
+ public void setCaValue(String caValue) {
+ this.caValue = caValue;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java
new file mode 100644
index 0000000000..27272ea22a
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolData.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class CpProtocolData {
+ private String layerProtocol;
+ private IpOverEthernetAddressData ipOverEthernet;
+
+ public String getLayerProtocol() {
+ return layerProtocol;
+ }
+
+ public void setLayerProtocol(String layerProtocol) {
+ this.layerProtocol = layerProtocol;
+ }
+
+ public IpOverEthernetAddressData getIpOverEthernet() {
+ return ipOverEthernet;
+ }
+
+ public void setIpOverEthernet(IpOverEthernetAddressData ipOverEthernet) {
+ this.ipOverEthernet = ipOverEthernet;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java
new file mode 100644
index 0000000000..5f1191efe9
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CpProtocolInfo.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class CpProtocolInfo {
+ @NotNull
+ private enum layerProtocol {
+ IP_OVER_ETHERNET
+ };
+
+ private IpOverEthernetAddressData ipOverEthernet;
+
+ public IpOverEthernetAddressData getIpOverEthernet() {
+ return ipOverEthernet;
+ }
+
+ public void setIpOverEthernet(IpOverEthernetAddressData ipOverEthernet) {
+ this.ipOverEthernet = ipOverEthernet;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java
new file mode 100644
index 0000000000..878ce60ba1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/CreateNsRequest.java
@@ -0,0 +1,53 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class CreateNsRequest {
+
+ String nsdId;
+
+ String nsName;
+
+ String nsDescription;
+
+
+ public String getNsdId() {
+ return nsdId;
+ }
+
+ public void setNsdId(String nsdId) {
+ this.nsdId = nsdId;
+ }
+
+ public String getNsDescription() {
+ return nsDescription;
+ }
+
+ public void setNsDescription(String nsDescription) {
+ this.nsDescription = nsDescription;
+ }
+
+ /**
+ * @return Returns the nsName.
+ */
+ public String getNsName() {
+ return nsName;
+ }
+
+ /**
+ * @param nsName The nsName to set.
+ */
+ public void setNsName(String nsName) {
+ this.nsName = nsName;
+ }
+
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java
new file mode 100644
index 0000000000..63ca66bd43
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtCpInfo.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class ExtCpInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String cpdId;
+ private List<CpProtocolData> cpProtocolInfo;
+ private List<String> extLinkPortId;
+
+
+
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java
new file mode 100644
index 0000000000..a1ab3fdb97
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfo.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class ExtLinkPortInfo {
+ private String id;
+ private ResourceHandle resourceHandle;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ResourceHandle getResourceHandle() {
+ return resourceHandle;
+ }
+
+ public void setResourceHandle(ResourceHandle resourceHandle) {
+ this.resourceHandle = resourceHandle;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java
new file mode 100644
index 0000000000..3f643a8330
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtManagedVirtualLinkInfo.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class ExtManagedVirtualLinkInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String vnfVirtualLinkDescId;
+ @NotNull
+ private ResourceHandle networkResource;
+ private List<VnfLinkPortInfo> vnfLinkPorts;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getVnfVirtualLinkDescId() {
+ return vnfVirtualLinkDescId;
+ }
+
+ public void setVnfVirtualLinkDescId(String vnfVirtualLinkDescId) {
+ this.vnfVirtualLinkDescId = vnfVirtualLinkDescId;
+ }
+
+ public ResourceHandle getNetworkResource() {
+ return networkResource;
+ }
+
+ public void setNetworkResource(ResourceHandle networkResource) {
+ this.networkResource = networkResource;
+ }
+
+ public List<VnfLinkPortInfo> getVnfLinkPorts() {
+ return vnfLinkPorts;
+ }
+
+ public void setVnfLinkPorts(List<VnfLinkPortInfo> vnfLinkPorts) {
+ this.vnfLinkPorts = vnfLinkPorts;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java
new file mode 100644
index 0000000000..ce7d1cfe6d
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfo.java
@@ -0,0 +1,42 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class ExtVirtualLinkInfo {
+ private String id;
+ private ResourceHandle resourceHandle;
+ private ExtLinkPortInfo extLinkPorts;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ResourceHandle getResourceHandle() {
+ return resourceHandle;
+ }
+
+ public void setResourceHandle(ResourceHandle resourceHandle) {
+ this.resourceHandle = resourceHandle;
+ }
+
+ public ExtLinkPortInfo getExtLinkPorts() {
+ return extLinkPorts;
+ }
+
+ public void setExtLinkPorts(ExtLinkPortInfo extLinkPorts) {
+ this.extLinkPorts = extLinkPorts;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java
new file mode 100644
index 0000000000..ff0730a527
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiateNsRequest.java
@@ -0,0 +1,207 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+import java.util.Map;
+
+public class InstantiateNsRequest {
+
+ private String nsFlavourId;
+ private List<SapData> sapData;
+ private List<AddPnfData> addpnfData;
+ private List<VnfInstanceData> vnfInstanceData;
+ private List<String> nestedNsInstanceId;
+ private List<VnfLocationConstraint> localizationLanguage;
+ private Map<String, Object> aditionalParamsForNs;
+ private List<ParamsForVnf> additionalParamsForVnf;
+ private String startTime;
+ private String nsInstantiationLevelId;
+ private List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffiniityRule;
+
+ /***
+ *
+ * @return nsFlavourId
+ */
+ public String getNsFlavourId() {
+ return nsFlavourId;
+ }
+
+ /***
+ *
+ * @param nsFlavourId
+ */
+ public void setNsFlavourId(String nsFlavourId) {
+ this.nsFlavourId = nsFlavourId;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<SapData> getSapData() {
+ return sapData;
+ }
+
+ /***
+ *
+ * @param sapData
+ */
+ public void setSapData(List<SapData> sapData) {
+ this.sapData = sapData;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<AddPnfData> getAddpnfData() {
+ return addpnfData;
+ }
+
+ /***
+ *
+ * @param addpnfData
+ */
+ public void setAddpnfData(List<AddPnfData> addpnfData) {
+ this.addpnfData = addpnfData;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<VnfInstanceData> getVnfInstanceData() {
+ return vnfInstanceData;
+ }
+
+ /***
+ *
+ * @param vnfInstanceData
+ */
+ public void setVnfInstanceData(List<VnfInstanceData> vnfInstanceData) {
+ this.vnfInstanceData = vnfInstanceData;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<String> getNestedNsInstanceId() {
+ return nestedNsInstanceId;
+ }
+
+ /***
+ *
+ * @param nestedNsInstanceId
+ */
+ public void setNestedNsInstanceId(List<String> nestedNsInstanceId) {
+ this.nestedNsInstanceId = nestedNsInstanceId;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<VnfLocationConstraint> getLocalizationLanguage() {
+ return localizationLanguage;
+ }
+
+ /***
+ *
+ * @param localizationLanguage
+ */
+ public void setLocalizationLanguage(List<VnfLocationConstraint> localizationLanguage) {
+ this.localizationLanguage = localizationLanguage;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public Map<String, Object> getAditionalParamsForNs() {
+ return aditionalParamsForNs;
+ }
+
+ /***
+ *
+ * @param aditionalParamsForNs
+ */
+ public void setAditionalParamsForNs(Map<String, Object> aditionalParamsForNs) {
+ this.aditionalParamsForNs = aditionalParamsForNs;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<ParamsForVnf> getAdditionalParamsForVnf() {
+ return additionalParamsForVnf;
+ }
+
+ /***
+ *
+ * @param additionalParamsForVnf
+ */
+ public void setAdditionalParamsForVnf(List<ParamsForVnf> additionalParamsForVnf) {
+ this.additionalParamsForVnf = additionalParamsForVnf;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public String getStartTime() {
+ return startTime;
+ }
+
+ /***
+ *
+ * @param startTime
+ */
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public String getNsInstantiationLevelId() {
+ return nsInstantiationLevelId;
+ }
+
+ /***
+ *
+ * @param nsInstantiationLevelId
+ */
+ public void setNsInstantiationLevelId(String nsInstantiationLevelId) {
+ this.nsInstantiationLevelId = nsInstantiationLevelId;
+ }
+
+ /***
+ *
+ * @return
+ */
+ public List<AffinityOrAntiAffinityRule> getAdditionalAffinityOrAntiAffiniityRule() {
+ return additionalAffinityOrAntiAffiniityRule;
+ }
+
+ /***
+ *
+ * @param additionalAffinityOrAntiAffiniityRule
+ */
+ public void setAdditionalAffinityOrAntiAffiniityRule(
+ List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffiniityRule) {
+ this.additionalAffinityOrAntiAffiniityRule = additionalAffinityOrAntiAffiniityRule;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java
new file mode 100644
index 0000000000..83a8a56756
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/InstantiatedVnfInfo.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+
+public class InstantiatedVnfInfo {
+ @NotNull
+ private String flavourId;
+ @NotNull
+ private String vnfState;
+ private List<VnfScaleInfo> vnfScaleInfos;
+ @NotNull
+ private List<ExtCpInfo> extCpInfo;
+ private List<ExtVirtualLinkInfo> extVirtualLinkInfo;
+ private List<ExtManagedVirtualLinkInfo> extManagedVirtualLinkInfo;
+ // Defination of MonitoringParameter is not there in ETSI document
+ // considering as String
+ private List<String> monitoringParameters;
+ private String localizationLanguage;
+
+ private List<VnfcResourceInfo> vnfcResourceInfo;
+ // Defination of VirtualStorageResourceInfo is not there in ETSI document
+ // considering as String
+ private List<String> virtualStorageResourceInfo;
+
+ public String getFlavourId() {
+ return flavourId;
+ }
+
+ public void setFlavourId(String flavourId) {
+ this.flavourId = flavourId;
+ }
+
+ public String getVnfState() {
+ return vnfState;
+ }
+
+ public void setVnfState(String vnfState) {
+ this.vnfState = vnfState;
+ }
+
+ public List<VnfScaleInfo> getVnfScaleInfos() {
+ return vnfScaleInfos;
+ }
+
+ public void setVnfScaleInfos(List<VnfScaleInfo> vnfScaleInfos) {
+ this.vnfScaleInfos = vnfScaleInfos;
+ }
+
+ public List<ExtCpInfo> getExtCpInfo() {
+ return extCpInfo;
+ }
+
+ public void setExtCpInfo(List<ExtCpInfo> extCpInfo) {
+ this.extCpInfo = extCpInfo;
+ }
+
+ public List<ExtVirtualLinkInfo> getExtVirtualLinkInfo() {
+ return extVirtualLinkInfo;
+ }
+
+ public void setExtVirtualLinkInfo(List<ExtVirtualLinkInfo> extVirtualLinkInfo) {
+ this.extVirtualLinkInfo = extVirtualLinkInfo;
+ }
+
+ public List<ExtManagedVirtualLinkInfo> getExtManagedVirtualLinkInfo() {
+ return extManagedVirtualLinkInfo;
+ }
+
+ public void setExtManagedVirtualLinkInfo(List<ExtManagedVirtualLinkInfo> extManagedVirtualLinkInfo) {
+ this.extManagedVirtualLinkInfo = extManagedVirtualLinkInfo;
+ }
+
+ public List<String> getMonitoringParameters() {
+ return monitoringParameters;
+ }
+
+ public void setMonitoringParameters(List<String> monitoringParameters) {
+ this.monitoringParameters = monitoringParameters;
+ }
+
+ public String getLocalizationLanguage() {
+ return localizationLanguage;
+ }
+
+ public void setLocalizationLanguage(String localizationLanguage) {
+ this.localizationLanguage = localizationLanguage;
+ }
+
+ public List<VnfcResourceInfo> getVnfcResourceInfo() {
+ return vnfcResourceInfo;
+ }
+
+ public void setVnfcResourceInfo(List<VnfcResourceInfo> vnfcResourceInfo) {
+ this.vnfcResourceInfo = vnfcResourceInfo;
+ }
+
+ public List<String> getVirtualStorageResourceInfo() {
+ return virtualStorageResourceInfo;
+ }
+
+ public void setVirtualStorageResourceInfo(List<String> virtualStorageResourceInfo) {
+ this.virtualStorageResourceInfo = virtualStorageResourceInfo;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java
new file mode 100644
index 0000000000..32c5571d96
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpAddresses.java
@@ -0,0 +1,63 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class IpAddresses {
+ private String type;
+ private List<String> fixedAddresses;
+ private int numDynamicAddresses;
+ private AddressRange addressRange;
+ private String subnetId;
+
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public List<String> getFixedAddresses() {
+ return fixedAddresses;
+ }
+
+ public void setFixedAddresses(List<String> fixedAddresses) {
+ this.fixedAddresses = fixedAddresses;
+ }
+
+ public int getNumDynamicAddresses() {
+ return numDynamicAddresses;
+ }
+
+ public void setNumDynamicAddresses(int numDynamicAddresses) {
+ this.numDynamicAddresses = numDynamicAddresses;
+ }
+
+ public AddressRange getAddressRange() {
+ return addressRange;
+ }
+
+ public void setAddressRange(AddressRange addressRange) {
+ this.addressRange = addressRange;
+ }
+
+ public String getSubnetId() {
+ return subnetId;
+ }
+
+ public void setSubnetId(String subnetId) {
+ this.subnetId = subnetId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java
new file mode 100644
index 0000000000..48529e5f76
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressData.java
@@ -0,0 +1,35 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class IpOverEthernetAddressData {
+ private String macAddress;
+ private List<IpAddresses> ipAddresses;
+
+ public String getMacAddress() {
+ return macAddress;
+ }
+
+ public void setMacAddress(String macAddress) {
+ this.macAddress = macAddress;
+ }
+
+ public List<IpAddresses> getIpAddresses() {
+ return ipAddresses;
+ }
+
+ public void setIpAddresses(List<IpAddresses> ipAddresses) {
+ this.ipAddresses = ipAddresses;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java
new file mode 100644
index 0000000000..2459346826
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Link.java
@@ -0,0 +1,24 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class Link {
+ private String href;
+
+ public String getHref() {
+ return href;
+ }
+
+ public void setHref(String href) {
+ this.href = href;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java
new file mode 100644
index 0000000000..8ad8f000c1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Links.java
@@ -0,0 +1,78 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class Links {
+ private Link self;
+ private Link nsInstance;
+ private Link cancel;
+ private Link retry;
+ private Link rollback;
+ private Link continues;
+ private Link fail;
+
+ public Link getSelf() {
+ return self;
+ }
+
+ public void setSelf(Link self) {
+ this.self = self;
+ }
+
+ public Link getNsInstance() {
+ return nsInstance;
+ }
+
+ public void setNsInstance(Link nsInstance) {
+ this.nsInstance = nsInstance;
+ }
+
+ public Link getCancel() {
+ return cancel;
+ }
+
+ public void setCancel(Link cancel) {
+ this.cancel = cancel;
+ }
+
+ public Link getRetry() {
+ return retry;
+ }
+
+ public void setRetry(Link retry) {
+ this.retry = retry;
+ }
+
+ public Link getRollback() {
+ return rollback;
+ }
+
+ public void setRollback(Link rollback) {
+ this.rollback = rollback;
+ }
+
+ public Link getContinues() {
+ return continues;
+ }
+
+ public void setContinues(Link continues) {
+ this.continues = continues;
+ }
+
+ public Link getFail() {
+ return fail;
+ }
+
+ public void setFail(Link fail) {
+ this.fail = fail;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java
new file mode 100644
index 0000000000..b636d49edf
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/LocationConstraints.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class LocationConstraints {
+ private String countryCode;
+ private CivicAddressElement civicAddressElement;
+
+ public String getCountryCode() {
+ return countryCode;
+ }
+
+ public void setCountryCode(String countryCode) {
+ this.countryCode = countryCode;
+ }
+
+ public CivicAddressElement getCivicAddressElement() {
+ return civicAddressElement;
+ }
+
+ public void setCivicAddressElement(CivicAddressElement civicAddressElement) {
+ this.civicAddressElement = civicAddressElement;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java
new file mode 100644
index 0000000000..352f47e19f
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/Mask.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class Mask {
+ @NotNull
+ private int startingPoint;
+ @NotNull
+ private int length;
+ @NotNull
+ private String value;
+
+ public int getStartingPoint() {
+ return startingPoint;
+ }
+
+ public void setStartingPoint(int startingPoint) {
+ this.startingPoint = startingPoint;
+ }
+
+ public int getLength() {
+ return length;
+ }
+
+ public void setLength(int length) {
+ this.length = length;
+ }
+
+ public String getValue() {
+ return value;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java
new file mode 100644
index 0000000000..55ab21e8e2
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoData.java
@@ -0,0 +1,80 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.Map;
+
+public class ModifyVnfInfoData {
+ private String vnfInstanceId;
+ private String vnfInstanceName;
+ private String vnfInstanceDescription;
+ private String vnfPkgId;
+ private Map<String, Object> vnfConfigurableProperties;
+ private Map<String, Object> Metadata;
+ private Map<String, Object> Extensions;
+
+ public String getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(String vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+
+ public String getVnfInstanceName() {
+ return vnfInstanceName;
+ }
+
+ public void setVnfInstanceName(String vnfInstanceName) {
+ this.vnfInstanceName = vnfInstanceName;
+ }
+
+ public String getVnfInstanceDescription() {
+ return vnfInstanceDescription;
+ }
+
+ public void setVnfInstanceDescription(String vnfInstanceDescription) {
+ this.vnfInstanceDescription = vnfInstanceDescription;
+ }
+
+ public String getVnfPkgId() {
+ return vnfPkgId;
+ }
+
+ public void setVnfPkgId(String vnfPkgId) {
+ this.vnfPkgId = vnfPkgId;
+ }
+
+ public Map<String, Object> getVnfConfigurableProperties() {
+ return vnfConfigurableProperties;
+ }
+
+ public void setVnfConfigurableProperties(Map<String, Object> vnfConfigurableProperties) {
+ this.vnfConfigurableProperties = vnfConfigurableProperties;
+ }
+
+ public Map<String, Object> getMetadata() {
+ return Metadata;
+ }
+
+ public void setMetadata(Map<String, Object> metadata) {
+ Metadata = metadata;
+ }
+
+ public Map<String, Object> getExtensions() {
+ return Extensions;
+ }
+
+ public void setExtensions(Map<String, Object> extensions) {
+ Extensions = extensions;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java
new file mode 100644
index 0000000000..a6e3963725
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpInfo.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class NfpInfo {
+ @NotNull
+ private String id;
+ private String nfpdId;
+ private String nfpName;
+ private String description;
+ @NotNull
+ private List<NsCpHandle> nscpHandle;
+ private int totalCp;
+ @NotNull
+ private NfpRule nfpRule;
+
+ @NotNull
+ private enum nfpState {
+ ENABLED, DISABLED
+ };
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getNfpdId() {
+ return nfpdId;
+ }
+
+ public void setNfpdId(String nfpdId) {
+ this.nfpdId = nfpdId;
+ }
+
+ public String getNfpName() {
+ return nfpName;
+ }
+
+ public void setNfpName(String nfpName) {
+ this.nfpName = nfpName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public List<NsCpHandle> getNscpHandle() {
+ return nscpHandle;
+ }
+
+ public void setNscpHandle(List<NsCpHandle> nscpHandle) {
+ this.nscpHandle = nscpHandle;
+ }
+
+ public int getTotalCp() {
+ return totalCp;
+ }
+
+ public void setTotalCp(int totalCp) {
+ this.totalCp = totalCp;
+ }
+
+ public NfpRule getNfpRule() {
+ return nfpRule;
+ }
+
+ public void setNfpRule(NfpRule nfpRule) {
+ this.nfpRule = nfpRule;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java
new file mode 100644
index 0000000000..b4f684a3e2
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NfpRule.java
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class NfpRule {
+ private String etherDestinationAddress;
+ private String etherSourceAddress;
+
+ private enum etherType {
+ IPV4, IPV6
+ };
+
+ private List<String> vlanTag;
+
+ private enum protocol {
+ TCP, UDP, ICMP
+ }
+
+ private String dscp;
+ private PortRange sourcePortRange;
+ private PortRange destinationPortRange;
+ private String sourceIpAddressPrefix;
+ private String destinationIpAddressPrefix;
+ private List<Mask> extendedCriteria;
+
+ public String getEtherDestinationAddress() {
+ return etherDestinationAddress;
+ }
+
+ public void setEtherDestinationAddress(String etherDestinationAddress) {
+ this.etherDestinationAddress = etherDestinationAddress;
+ }
+
+ public String getEtherSourceAddress() {
+ return etherSourceAddress;
+ }
+
+ public void setEtherSourceAddress(String etherSourceAddress) {
+ this.etherSourceAddress = etherSourceAddress;
+ }
+
+ public List<String> getVlanTag() {
+ return vlanTag;
+ }
+
+ public void setVlanTag(List<String> vlanTag) {
+ this.vlanTag = vlanTag;
+ }
+
+ public String getDscp() {
+ return dscp;
+ }
+
+ public void setDscp(String dscp) {
+ this.dscp = dscp;
+ }
+
+ public PortRange getSourcePortRange() {
+ return sourcePortRange;
+ }
+
+ public void setSourcePortRange(PortRange sourcePortRange) {
+ this.sourcePortRange = sourcePortRange;
+ }
+
+ public PortRange getDestinationPortRange() {
+ return destinationPortRange;
+ }
+
+ public void setDestinationPortRange(PortRange destinationPortRange) {
+ this.destinationPortRange = destinationPortRange;
+ }
+
+ public String getSourceIpAddressPrefix() {
+ return sourceIpAddressPrefix;
+ }
+
+ public void setSourceIpAddressPrefix(String sourceIpAddressPrefix) {
+ this.sourceIpAddressPrefix = sourceIpAddressPrefix;
+ }
+
+ public String getDestinationIpAddressPrefix() {
+ return destinationIpAddressPrefix;
+ }
+
+ public void setDestinationIpAddressPrefix(String destinationIpAddressPrefix) {
+ this.destinationIpAddressPrefix = destinationIpAddressPrefix;
+ }
+
+ public List<Mask> getExtendedCriteria() {
+ return extendedCriteria;
+ }
+
+ public void setExtendedCriteria(List<Mask> extendedCriteria) {
+ this.extendedCriteria = extendedCriteria;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java
new file mode 100644
index 0000000000..326488fb76
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsCpHandle.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class NsCpHandle {
+ private String vnfInstanceId;
+ private String vnfExtCpInstanceId;
+ private String pnfInfoId;
+ private String pnfExtCpInstanceId;
+ private String nsInstanceId;
+ private String nsSapInstanceId;
+
+ public String getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(String vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+
+ public String getVnfExtCpInstanceId() {
+ return vnfExtCpInstanceId;
+ }
+
+ public void setVnfExtCpInstanceId(String vnfExtCpInstanceId) {
+ this.vnfExtCpInstanceId = vnfExtCpInstanceId;
+ }
+
+ public String getPnfInfoId() {
+ return pnfInfoId;
+ }
+
+ public void setPnfInfoId(String pnfInfoId) {
+ this.pnfInfoId = pnfInfoId;
+ }
+
+ public String getPnfExtCpInstanceId() {
+ return pnfExtCpInstanceId;
+ }
+
+ public void setPnfExtCpInstanceId(String pnfExtCpInstanceId) {
+ this.pnfExtCpInstanceId = pnfExtCpInstanceId;
+ }
+
+ public String getNsInstanceId() {
+ return nsInstanceId;
+ }
+
+ public void setNsInstanceId(String nsInstanceId) {
+ this.nsInstanceId = nsInstanceId;
+ }
+
+ public String getNsSapInstanceId() {
+ return nsSapInstanceId;
+ }
+
+ public void setNsSapInstanceId(String nsSapInstanceId) {
+ this.nsSapInstanceId = nsSapInstanceId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java
new file mode 100644
index 0000000000..d2d4b4e772
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstance.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class NsInstance {
+ @NotNull
+ private String id;
+ @NotNull
+ private String nsInstanceName;
+ @NotNull
+ private String nsInstanceDescription;
+ @NotNull
+ private String nsdId;
+ @NotNull
+ private String nsdInfoId;
+ private String flavourId;
+ private List<VnfInstance> vnfInstance;
+ private List<PnfInfo> pnfInfo;
+ private List<NsVirtualLinkInfo> virtualLinkInfo;
+ private List<VnffgInfo> vnffgInfo;
+ private List<SapInfo> sapInfo;
+ private List<String> nestedNsInstanceId;
+
+ @NotNull
+ private enum nsState {
+ NOT_INSTANTIATED, INSTANTIATED
+ };
+
+ private List<NsScaleInfo> nsScaleStatus;
+ private List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffinityRule;
+ @NotNull
+ private NsInstanceLinks _links;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getNsInstanceName() {
+ return nsInstanceName;
+ }
+
+ public void setNsInstanceName(String nsInstanceName) {
+ this.nsInstanceName = nsInstanceName;
+ }
+
+ public String getNsInstanceDescription() {
+ return nsInstanceDescription;
+ }
+
+ public void setNsInstanceDescription(String nsInstanceDescription) {
+ this.nsInstanceDescription = nsInstanceDescription;
+ }
+
+ public String getNsdId() {
+ return nsdId;
+ }
+
+ public void setNsdId(String nsdId) {
+ this.nsdId = nsdId;
+ }
+
+ public String getNsdInfoId() {
+ return nsdInfoId;
+ }
+
+ public void setNsdInfoId(String nsdInfoId) {
+ this.nsdInfoId = nsdInfoId;
+ }
+
+ public String getFlavourId() {
+ return flavourId;
+ }
+
+ public void setFlavourId(String flavourId) {
+ this.flavourId = flavourId;
+ }
+
+ public List<VnfInstance> getVnfInstance() {
+ return vnfInstance;
+ }
+
+ public void setVnfInstance(List<VnfInstance> vnfInstance) {
+ this.vnfInstance = vnfInstance;
+ }
+
+ public List<PnfInfo> getPnfInfo() {
+ return pnfInfo;
+ }
+
+ public void setPnfInfo(List<PnfInfo> pnfInfo) {
+ this.pnfInfo = pnfInfo;
+ }
+
+ public List<NsVirtualLinkInfo> getVirtualLinkInfo() {
+ return virtualLinkInfo;
+ }
+
+ public void setVirtualLinkInfo(List<NsVirtualLinkInfo> virtualLinkInfo) {
+ this.virtualLinkInfo = virtualLinkInfo;
+ }
+
+ public List<VnffgInfo> getVnffgInfo() {
+ return vnffgInfo;
+ }
+
+ public void setVnffgInfo(List<VnffgInfo> vnffgInfo) {
+ this.vnffgInfo = vnffgInfo;
+ }
+
+ public List<SapInfo> getSapInfo() {
+ return sapInfo;
+ }
+
+ public void setSapInfo(List<SapInfo> sapInfo) {
+ this.sapInfo = sapInfo;
+ }
+
+ public List<String> getNestedNsInstanceId() {
+ return nestedNsInstanceId;
+ }
+
+ public void setNestedNsInstanceId(List<String> nestedNsInstanceId) {
+ this.nestedNsInstanceId = nestedNsInstanceId;
+ }
+
+ public List<NsScaleInfo> getNsScaleStatus() {
+ return nsScaleStatus;
+ }
+
+ public void setNsScaleStatus(List<NsScaleInfo> nsScaleStatus) {
+ this.nsScaleStatus = nsScaleStatus;
+ }
+
+ public List<AffinityOrAntiAffinityRule> getAdditionalAffinityOrAntiAffinityRule() {
+ return additionalAffinityOrAntiAffinityRule;
+ }
+
+ public void setAdditionalAffinityOrAntiAffinityRule(
+ List<AffinityOrAntiAffinityRule> additionalAffinityOrAntiAffinityRule) {
+ this.additionalAffinityOrAntiAffinityRule = additionalAffinityOrAntiAffinityRule;
+ }
+
+ public NsInstanceLinks get_links() {
+ return _links;
+ }
+
+ public void set_links(NsInstanceLinks _links) {
+ this._links = _links;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java
new file mode 100644
index 0000000000..08b3c63c08
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsInstanceLinks.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class NsInstanceLinks {
+ @NotNull
+ private Link self;
+ private List<Link> nestedNsInstances;
+ private Link instantiate;
+ private Link terminate;
+ private Link update;
+ private Link scale;
+ private Link heal;
+
+ public Link getSelf() {
+ return self;
+ }
+
+ public void setSelf(Link self) {
+ this.self = self;
+ }
+
+ public List<Link> getNestedNsInstances() {
+ return nestedNsInstances;
+ }
+
+ public void setNestedNsInstances(List<Link> nestedNsInstances) {
+ this.nestedNsInstances = nestedNsInstances;
+ }
+
+ public Link getInstantiate() {
+ return instantiate;
+ }
+
+ public void setInstantiate(Link instantiate) {
+ this.instantiate = instantiate;
+ }
+
+ public Link getTerminate() {
+ return terminate;
+ }
+
+ public void setTerminate(Link terminate) {
+ this.terminate = terminate;
+ }
+
+ public Link getUpdate() {
+ return update;
+ }
+
+ public void setUpdate(Link update) {
+ this.update = update;
+ }
+
+ public Link getScale() {
+ return scale;
+ }
+
+ public void setScale(Link scale) {
+ this.scale = scale;
+ }
+
+ public Link getHeal() {
+ return heal;
+ }
+
+ public void setHeal(Link heal) {
+ this.heal = heal;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java
new file mode 100644
index 0000000000..559b1f7ba7
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLcmOpOcc.java
@@ -0,0 +1,125 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.onap.so.adapters.vfc.constant.CommonConstant;
+
+public class NsLcmOpOcc {
+ private String id;
+ private CommonConstant.operationState operationState;
+ private String statusEnteredTime;
+ private String nsInstanceId;
+ private CommonConstant.lcmOperationType lcmOperationType;
+ private String startTime;
+ private Boolean isAutomaticInvocation;
+ private String operationParams;
+ private Boolean isCancelPending;
+ private CommonConstant.cancelMode cancelMode;
+ private ProblemDetails error;
+ private Links links;
+
+ public CommonConstant.lcmOperationType getLcmOperationType() {
+ return lcmOperationType;
+ }
+
+ public void setLcmOperationType(CommonConstant.lcmOperationType lcmOperationType) {
+ this.lcmOperationType = lcmOperationType;
+ }
+
+ public CommonConstant.cancelMode getCancelMode() {
+ return cancelMode;
+ }
+
+ public void setCancelMode(CommonConstant.cancelMode cancelMode) {
+ this.cancelMode = cancelMode;
+ }
+
+ public CommonConstant.operationState getOperationState() {
+ return operationState;
+ }
+
+ public void setOperationState(CommonConstant.operationState operationState) {
+ this.operationState = operationState;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getStatusEnteredTime() {
+ return statusEnteredTime;
+ }
+
+ public void setStatusEnteredTime(String statusEnteredTime) {
+ this.statusEnteredTime = statusEnteredTime;
+ }
+
+ public String getNsInstanceId() {
+ return nsInstanceId;
+ }
+
+ public void setNsInstanceId(String nsInstanceId) {
+ this.nsInstanceId = nsInstanceId;
+ }
+
+ public String getStartTime() {
+ return startTime;
+ }
+
+ public void setStartTime(String startTime) {
+ this.startTime = startTime;
+ }
+
+ public Boolean getAutomaticInvocation() {
+ return isAutomaticInvocation;
+ }
+
+ public void setAutomaticInvocation(Boolean automaticInvocation) {
+ isAutomaticInvocation = automaticInvocation;
+ }
+
+ public String getOperationParams() {
+ return operationParams;
+ }
+
+ public void setOperationParams(String operationParams) {
+ this.operationParams = operationParams;
+ }
+
+ public Boolean getCancelPending() {
+ return isCancelPending;
+ }
+
+ public void setCancelPending(Boolean cancelPending) {
+ isCancelPending = cancelPending;
+ }
+
+ public ProblemDetails getError() {
+ return error;
+ }
+
+ public void setError(ProblemDetails error) {
+ this.error = error;
+ }
+
+ public Links getLinks() {
+ return links;
+ }
+
+ public void setLinks(Links links) {
+ this.links = links;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java
new file mode 100644
index 0000000000..20c8972c98
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsLinkPortInfo.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class NsLinkPortInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private ResourceHandle resourceHandle;
+ private NsCpHandle nsCpHandle;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ResourceHandle getResourceHandle() {
+ return resourceHandle;
+ }
+
+ public void setResourceHandle(ResourceHandle resourceHandle) {
+ this.resourceHandle = resourceHandle;
+ }
+
+ public NsCpHandle getNsCpHandle() {
+ return nsCpHandle;
+ }
+
+ public void setNsCpHandle(NsCpHandle nsCpHandle) {
+ this.nsCpHandle = nsCpHandle;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java
new file mode 100644
index 0000000000..59acf564c2
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsScaleInfo.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class NsScaleInfo {
+ @NotNull
+ private String nsScalingAspectId;
+ @NotNull
+ private String nsScaleLevelId;
+
+ public String getNsScalingAspectId() {
+ return nsScalingAspectId;
+ }
+
+ public void setNsScalingAspectId(String nsScalingAspectId) {
+ this.nsScalingAspectId = nsScalingAspectId;
+ }
+
+ public String getNsScaleLevelId() {
+ return nsScaleLevelId;
+ }
+
+ public void setNsScaleLevelId(String nsScaleLevelId) {
+ this.nsScaleLevelId = nsScaleLevelId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java
new file mode 100644
index 0000000000..ed2debd2e6
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/NsVirtualLinkInfo.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class NsVirtualLinkInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String nsVirtualLinkDescId;
+ @NotNull
+ private List<ResourceHandle> resourceHandle;
+ private List<NsLinkPortInfo> linkPort;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getNsVirtualLinkDescId() {
+ return nsVirtualLinkDescId;
+ }
+
+ public void setNsVirtualLinkDescId(String nsVirtualLinkDescId) {
+ this.nsVirtualLinkDescId = nsVirtualLinkDescId;
+ }
+
+ public List<ResourceHandle> getResourceHandle() {
+ return resourceHandle;
+ }
+
+ public void setResourceHandle(List<ResourceHandle> resourceHandle) {
+ this.resourceHandle = resourceHandle;
+ }
+
+ public List<NsLinkPortInfo> getLinkPort() {
+ return linkPort;
+ }
+
+ public void setLinkPort(List<NsLinkPortInfo> linkPort) {
+ this.linkPort = linkPort;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java
new file mode 100644
index 0000000000..b7324e50fe
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ParamsForVnf.java
@@ -0,0 +1,35 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.Map;
+
+public class ParamsForVnf {
+ private String vnfProfileId;
+ private Map<String, Object> additionalParams;
+
+ public String getVnfProfileId() {
+ return vnfProfileId;
+ }
+
+ public void setVnfProfileId(String vnfProfileId) {
+ this.vnfProfileId = vnfProfileId;
+ }
+
+ public Map<String, Object> getAdditionalParams() {
+ return additionalParams;
+ }
+
+ public void setAdditionalParams(Map<String, Object> additionalParams) {
+ this.additionalParams = additionalParams;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java
new file mode 100644
index 0000000000..d5d091fcb1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpData.java
@@ -0,0 +1,44 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class PnfExtCpData {
+ private String cpInstanceI16;
+ private String cpdId;
+ private List<CpProtocolData> cpProtocolData;
+
+ public String getCpInstanceI16() {
+ return cpInstanceI16;
+ }
+
+ public void setCpInstanceI16(String cpInstanceI16) {
+ this.cpInstanceI16 = cpInstanceI16;
+ }
+
+ public String getCpdId() {
+ return cpdId;
+ }
+
+ public void setCpdId(String cpdId) {
+ this.cpdId = cpdId;
+ }
+
+ public List<CpProtocolData> getCpProtocolData() {
+ return cpProtocolData;
+ }
+
+ public void setCpProtocolData(List<CpProtocolData> cpProtocolData) {
+ this.cpProtocolData = cpProtocolData;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java
new file mode 100644
index 0000000000..402cb83147
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfExtCpInfo.java
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class PnfExtCpInfo {
+ @NotNull
+ private String cpInstanceId;
+ @NotNull
+ private String cpdId;
+ @NotNull
+ private List<CpProtocolData> cpProtocolData;
+
+ public String getCpInstanceI16() {
+ return cpInstanceId;
+ }
+
+ public void setCpInstanceI16(String cpInstanceI16) {
+ this.cpInstanceId = cpInstanceI16;
+ }
+
+ public String getCpdId() {
+ return cpdId;
+ }
+
+ public void setCpdId(String cpdId) {
+ this.cpdId = cpdId;
+ }
+
+ public List<CpProtocolData> getCpProtocolData() {
+ return cpProtocolData;
+ }
+
+ public void setCpProtocolData(List<CpProtocolData> cpProtocolData) {
+ this.cpProtocolData = cpProtocolData;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java
new file mode 100644
index 0000000000..a1cc11bd0c
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PnfInfo.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class PnfInfo {
+
+ @NotNull
+ private String pnfId;
+ @NotNull
+ private String pnfName;
+ @NotNull
+ private String pnfdId;
+ @NotNull
+ private String pnfdInfoId;
+ @NotNull
+ private String pnfProfileId;
+ private List<PnfExtCpData> cpData;
+
+ /***
+ *
+ * @return id of pnf
+ */
+ public String getPnfId() {
+ return pnfId;
+ }
+
+ public void setPnfId(String pnfId) {
+ this.pnfId = pnfId;
+ }
+
+ public String getPnfName() {
+ return pnfName;
+ }
+
+ public void setPnfName(String pnfName) {
+ this.pnfName = pnfName;
+ }
+
+ public String getPnfdId() {
+ return pnfdId;
+ }
+
+ public void setPnfdId(String pnfdId) {
+ this.pnfdId = pnfdId;
+ }
+
+ public String getPnfProfileId() {
+ return pnfProfileId;
+ }
+
+ public void setPnfProfileId(String pnfProfileId) {
+ this.pnfProfileId = pnfProfileId;
+ }
+
+ public List<PnfExtCpData> getCpData() {
+ return cpData;
+ }
+
+ public void setCpData(List<PnfExtCpData> cpData) {
+ this.cpData = cpData;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java
new file mode 100644
index 0000000000..8318a8ccff
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/PortRange.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class PortRange {
+ @NotNull
+ private int lowerPort;
+ @NotNull
+ private int upperPort;
+
+ public int getLowerPort() {
+ return lowerPort;
+ }
+
+ public void setLowerPort(int lowerPort) {
+ this.lowerPort = lowerPort;
+ }
+
+ public int getUpperPort() {
+ return upperPort;
+ }
+
+ public void setUpperPort(int upperPort) {
+ this.upperPort = upperPort;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java
new file mode 100644
index 0000000000..efaa5de7a8
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ProblemDetails.java
@@ -0,0 +1,62 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class ProblemDetails {
+ private String type;
+ private String title;
+ private int status;
+ private String detail;
+ private String instance;
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public String getInstance() {
+ return instance;
+ }
+
+ public void setInstance(String instance) {
+ this.instance = instance;
+ }
+
+
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java
new file mode 100644
index 0000000000..062a6aa32a
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceChanges.java
@@ -0,0 +1,71 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class ResourceChanges {
+ private List<AffectedVnf> affectedVnfs;
+ private List<AffectedPnf> affectedPnfs;
+ private List<AffectedVirtualLink> affectedVls;
+ private List<AffectedVnffg> affectedVnffgs;
+ private List<AffectedNs> affectedNss;
+ private List<AffectedSap> affectedSaps;
+
+ public List<AffectedVnf> getAffectedVnfs() {
+ return affectedVnfs;
+ }
+
+ public void setAffectedVnfs(List<AffectedVnf> affectedVnfs) {
+ this.affectedVnfs = affectedVnfs;
+ }
+
+ public List<AffectedPnf> getAffectedPnfs() {
+ return affectedPnfs;
+ }
+
+ public void setAffectedPnfs(List<AffectedPnf> affectedPnfs) {
+ this.affectedPnfs = affectedPnfs;
+ }
+
+ public List<AffectedVirtualLink> getAffectedVls() {
+ return affectedVls;
+ }
+
+ public void setAffectedVls(List<AffectedVirtualLink> affectedVls) {
+ this.affectedVls = affectedVls;
+ }
+
+ public List<AffectedVnffg> getAffectedVnffgs() {
+ return affectedVnffgs;
+ }
+
+ public void setAffectedVnffgs(List<AffectedVnffg> affectedVnffgs) {
+ this.affectedVnffgs = affectedVnffgs;
+ }
+
+ public List<AffectedNs> getAffectedNss() {
+ return affectedNss;
+ }
+
+ public void setAffectedNss(List<AffectedNs> affectedNss) {
+ this.affectedNss = affectedNss;
+ }
+
+ public List<AffectedSap> getAffectedSaps() {
+ return affectedSaps;
+ }
+
+ public void setAffectedSaps(List<AffectedSap> affectedSaps) {
+ this.affectedSaps = affectedSaps;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java
new file mode 100644
index 0000000000..fbfecaa007
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/ResourceHandle.java
@@ -0,0 +1,51 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class ResourceHandle {
+ private String vimId;
+ private String resourceProviderId;
+ private String resourceId;
+ private String vimLevelResourceType;
+
+ public String getVimId() {
+ return vimId;
+ }
+
+ public void setVimId(String vimId) {
+ this.vimId = vimId;
+ }
+
+ public String getResourceProviderId() {
+ return resourceProviderId;
+ }
+
+ public void setResourceProviderId(String resourceProviderId) {
+ this.resourceProviderId = resourceProviderId;
+ }
+
+ public String getResourceId() {
+ return resourceId;
+ }
+
+ public void setResourceId(String resourceId) {
+ this.resourceId = resourceId;
+ }
+
+ public String getVimLevelResourceType() {
+ return vimLevelResourceType;
+ }
+
+ public void setVimLevelResourceType(String vimLevelResourceType) {
+ this.vimLevelResourceType = vimLevelResourceType;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java
new file mode 100644
index 0000000000..d8e96e22f5
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapData.java
@@ -0,0 +1,56 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import java.util.List;
+
+public class SapData {
+ private String sapdId;
+ private String sapName;
+ private String description;
+ private List<CpProtocolData> sapProtocolData;
+
+ public String getSapdId() {
+ return sapdId;
+ }
+
+ public void setSapdId(String sapdId) {
+ this.sapdId = sapdId;
+ }
+
+ public String getSapName() {
+ return sapName;
+ }
+
+ public void setSapName(String sapName) {
+ this.sapName = sapName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public List<CpProtocolData> getSapProtocolData() {
+ return sapProtocolData;
+ }
+
+ public void setSapProtocolData(List<CpProtocolData> sapProtocolData) {
+ this.sapProtocolData = sapProtocolData;
+ }
+
+
+
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java
new file mode 100644
index 0000000000..182aceb127
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/SapInfo.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class SapInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String sapdId;
+ @NotNull
+ private String sapName;
+ @NotNull
+ private String description;
+ @NotNull
+ private List<CpProtocolInfo> sapProtocolInfo;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getSapdId() {
+ return sapdId;
+ }
+
+ public void setSapdId(String sapdId) {
+ this.sapdId = sapdId;
+ }
+
+ public String getSapName() {
+ return sapName;
+ }
+
+ public void setSapName(String sapName) {
+ this.sapName = sapName;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public List<CpProtocolInfo> getSapProtocolInfo() {
+ return sapProtocolInfo;
+ }
+
+ public void setSapProtocolInfo(List<CpProtocolInfo> sapProtocolInfo) {
+ this.sapProtocolInfo = sapProtocolInfo;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java
new file mode 100644
index 0000000000..ccd6532ee0
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstance.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.Map;
+
+public class VnfInstance {
+ @NotNull
+ private String id;
+ private String vnfInstanceName;
+ private String vnfInstanceDescription;
+ @NotNull
+ private String vnfdId;
+ @NotNull
+ private String vnfProvider;
+ @NotNull
+ private String vnfProductName;
+ @NotNull
+ private String vnfSoftwareVersion;
+ @NotNull
+ private String vnfdVersion;
+ @NotNull
+ private String vnfPkgId;
+ private Map<String, Object> vnfConfigurableProperties;
+ private String vimId;
+
+ private enum instantiationState {
+ NOT_INSTANTIATED, INSTANTIATED
+ };
+
+ private InstantiatedVnfInfo instantiatedVnfInfo;
+ private Map<String, Object> metadata;
+ private Map<String, Object> extensions;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getVnfInstanceName() {
+ return vnfInstanceName;
+ }
+
+ public void setVnfInstanceName(String vnfInstanceName) {
+ this.vnfInstanceName = vnfInstanceName;
+ }
+
+ public String getVnfInstanceDescription() {
+ return vnfInstanceDescription;
+ }
+
+ public void setVnfInstanceDescription(String vnfInstanceDescription) {
+ this.vnfInstanceDescription = vnfInstanceDescription;
+ }
+
+ public String getVnfdId() {
+ return vnfdId;
+ }
+
+ public void setVnfdId(String vnfdId) {
+ this.vnfdId = vnfdId;
+ }
+
+ public String getVnfProvider() {
+ return vnfProvider;
+ }
+
+ public void setVnfProvider(String vnfProvider) {
+ this.vnfProvider = vnfProvider;
+ }
+
+ public String getVnfProductName() {
+ return vnfProductName;
+ }
+
+ public void setVnfProductName(String vnfProductName) {
+ this.vnfProductName = vnfProductName;
+ }
+
+ public String getVnfSoftwareVersion() {
+ return vnfSoftwareVersion;
+ }
+
+ public void setVnfSoftwareVersion(String vnfSoftwareVersion) {
+ this.vnfSoftwareVersion = vnfSoftwareVersion;
+ }
+
+ public String getVnfdVersion() {
+ return vnfdVersion;
+ }
+
+ public void setVnfdVersion(String vnfdVersion) {
+ this.vnfdVersion = vnfdVersion;
+ }
+
+ public String getVnfPkgId() {
+ return vnfPkgId;
+ }
+
+ public void setVnfPkgId(String vnfPkgId) {
+ this.vnfPkgId = vnfPkgId;
+ }
+
+ public Map<String, Object> getVnfConfigurableProperties() {
+ return vnfConfigurableProperties;
+ }
+
+ public void setVnfConfigurableProperties(Map<String, Object> vnfConfigurableProperties) {
+ this.vnfConfigurableProperties = vnfConfigurableProperties;
+ }
+
+ public String getVimId() {
+ return vimId;
+ }
+
+ public void setVimId(String vimId) {
+ this.vimId = vimId;
+ }
+
+ public InstantiatedVnfInfo getInstantiatedVnfInfo() {
+ return instantiatedVnfInfo;
+ }
+
+ public void setInstantiatedVnfInfo(InstantiatedVnfInfo instantiatedVnfInfo) {
+ this.instantiatedVnfInfo = instantiatedVnfInfo;
+ }
+
+ public Map<String, Object> getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(Map<String, Object> metadata) {
+ this.metadata = metadata;
+ }
+
+ public Map<String, Object> getExtensions() {
+ return extensions;
+ }
+
+ public void setExtensions(Map<String, Object> extensions) {
+ this.extensions = extensions;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java
new file mode 100644
index 0000000000..83345fcb4c
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfInstanceData.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class VnfInstanceData {
+ private String vnfInstanceId;
+ private String vnfProfileId;
+
+ public String getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(String vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+
+ public String getVnfProfileId() {
+ return vnfProfileId;
+ }
+
+ public void setVnfProfileId(String vnfProfileId) {
+ this.vnfProfileId = vnfProfileId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java
new file mode 100644
index 0000000000..0b09d066fa
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLinkPortInfo.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class VnfLinkPortInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private ResourceHandle resourceHandle;
+ private String cpInstanceId;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public ResourceHandle getResourceHandle() {
+ return resourceHandle;
+ }
+
+ public void setResourceHandle(ResourceHandle resourceHandle) {
+ this.resourceHandle = resourceHandle;
+ }
+
+ public String getCpInstanceId() {
+ return cpInstanceId;
+ }
+
+ public void setCpInstanceId(String cpInstanceId) {
+ this.cpInstanceId = cpInstanceId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java
new file mode 100644
index 0000000000..5db3060b88
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfLocationConstraint.java
@@ -0,0 +1,33 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+public class VnfLocationConstraint {
+ private String vnfProfileId;
+ private LocationConstraint locationConstraints;
+
+ public String getVnfProfileId() {
+ return vnfProfileId;
+ }
+
+ public void setVnfProfileId(String vnfProfileId) {
+ this.vnfProfileId = vnfProfileId;
+ }
+
+ public LocationConstraint getLocationConstraints() {
+ return locationConstraints;
+ }
+
+ public void setLocationConstraints(LocationConstraint locationConstraints) {
+ this.locationConstraints = locationConstraints;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java
new file mode 100644
index 0000000000..e702edc821
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfScaleInfo.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+
+public class VnfScaleInfo {
+ @NotNull
+ private String aspectlId;
+ @NotNull
+ private int scaleLevel;
+
+ public String getAspectlId() {
+ return aspectlId;
+ }
+
+ public void setAspectlId(String aspectlId) {
+ this.aspectlId = aspectlId;
+ }
+
+ public int getScaleLevel() {
+ return scaleLevel;
+ }
+
+ public void setScaleLevel(int scaleLevel) {
+ this.scaleLevel = scaleLevel;
+ }
+
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java
new file mode 100644
index 0000000000..9f41a383fc
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfVirtualLinkResourceInfo.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+
+public class VnfVirtualLinkResourceInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String virtualLinkDescId;
+ @NotNull
+ private ResourceHandle networkResource;
+ private String reservationId;
+ private List<VnfLinkPortInfo> vnfLinkPorts;
+ Map<String, Object> metadata;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getVirtualLinkDescId() {
+ return virtualLinkDescId;
+ }
+
+ public void setVirtualLinkDescId(String virtualLinkDescId) {
+ this.virtualLinkDescId = virtualLinkDescId;
+ }
+
+ public ResourceHandle getNetworkResource() {
+ return networkResource;
+ }
+
+ public void setNetworkResource(ResourceHandle networkResource) {
+ this.networkResource = networkResource;
+ }
+
+ public String getReservationId() {
+ return reservationId;
+ }
+
+ public void setReservationId(String reservationId) {
+ this.reservationId = reservationId;
+ }
+
+ public List<VnfLinkPortInfo> getVnfLinkPorts() {
+ return vnfLinkPorts;
+ }
+
+ public void setVnfLinkPorts(List<VnfLinkPortInfo> vnfLinkPorts) {
+ this.vnfLinkPorts = vnfLinkPorts;
+ }
+
+ public Map<String, Object> getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(Map<String, Object> metadata) {
+ this.metadata = metadata;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java
new file mode 100644
index 0000000000..ec629effd2
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcCpInfo.java
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class VnfcCpInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String cpdId;
+ private String vnfExtCpId;
+ private List<CpProtocolInfo> cpProtocolInfo;
+ private String vnfLinkPortId;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getCpdId() {
+ return cpdId;
+ }
+
+ public void setCpdId(String cpdId) {
+ this.cpdId = cpdId;
+ }
+
+ public String getVnfExtCpId() {
+ return vnfExtCpId;
+ }
+
+ public void setVnfExtCpId(String vnfExtCpId) {
+ this.vnfExtCpId = vnfExtCpId;
+ }
+
+ public List<CpProtocolInfo> getCpProtocolInfo() {
+ return cpProtocolInfo;
+ }
+
+ public void setCpProtocolInfo(List<CpProtocolInfo> cpProtocolInfo) {
+ this.cpProtocolInfo = cpProtocolInfo;
+ }
+
+ public String getVnfLinkPortId() {
+ return vnfLinkPortId;
+ }
+
+ public void setVnfLinkPortId(String vnfLinkPortId) {
+ this.vnfLinkPortId = vnfLinkPortId;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java
new file mode 100644
index 0000000000..1f7aa67b8d
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnfcResourceInfo.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+import java.util.Map;
+
+public class VnfcResourceInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String vduId;
+ @NotNull
+ private ResourceHandle computeResource;
+ private List<String> storageResourceIds;
+ private String reservationId;
+ private List<VnfcCpInfo> vnfcCpInfo;
+ private Map<String, Object> metadata;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getVduId() {
+ return vduId;
+ }
+
+ public void setVduId(String vduId) {
+ this.vduId = vduId;
+ }
+
+ public ResourceHandle getComputeResource() {
+ return computeResource;
+ }
+
+ public void setComputeResource(ResourceHandle computeResource) {
+ this.computeResource = computeResource;
+ }
+
+ public List<String> getStorageResourceIds() {
+ return storageResourceIds;
+ }
+
+ public void setStorageResourceIds(List<String> storageResourceIds) {
+ this.storageResourceIds = storageResourceIds;
+ }
+
+ public String getReservationId() {
+ return reservationId;
+ }
+
+ public void setReservationId(String reservationId) {
+ this.reservationId = reservationId;
+ }
+
+ public List<VnfcCpInfo> getVnfcCpInfo() {
+ return vnfcCpInfo;
+ }
+
+ public void setVnfcCpInfo(List<VnfcCpInfo> vnfcCpInfo) {
+ this.vnfcCpInfo = vnfcCpInfo;
+ }
+
+ public Map<String, Object> getMetadata() {
+ return metadata;
+ }
+
+ public void setMetadata(Map<String, Object> metadata) {
+ this.metadata = metadata;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java
new file mode 100644
index 0000000000..c02d5177db
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/model/VnffgInfo.java
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+public class VnffgInfo {
+ @NotNull
+ private String id;
+ @NotNull
+ private String vnffgdId;
+ @NotNull
+ private List<String> vnfInstanceId;
+ private String pnfInfoId;
+ @NotNull
+ private List<String> nsVirtualLinkInfoId;
+ @NotNull
+ private List<NsCpHandle> nsCpHandle;
+ @NotNull
+ private List<NfpInfo> nfpInfo;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getVnffgdId() {
+ return vnffgdId;
+ }
+
+ public void setVnffgdId(String vnffgdId) {
+ this.vnffgdId = vnffgdId;
+ }
+
+ public List<String> getVnfInstanceId() {
+ return vnfInstanceId;
+ }
+
+ public void setVnfInstanceId(List<String> vnfInstanceId) {
+ this.vnfInstanceId = vnfInstanceId;
+ }
+
+ public String getPnfInfoId() {
+ return pnfInfoId;
+ }
+
+ public void setPnfInfoId(String pnfInfoId) {
+ this.pnfInfoId = pnfInfoId;
+ }
+
+ public List<String> getNsVirtualLinkInfoId() {
+ return nsVirtualLinkInfoId;
+ }
+
+ public void setNsVirtualLinkInfoId(List<String> nsVirtualLinkInfoId) {
+ this.nsVirtualLinkInfoId = nsVirtualLinkInfoId;
+ }
+
+ public List<NsCpHandle> getNsCpHandle() {
+ return nsCpHandle;
+ }
+
+ public void setNsCpHandle(List<NsCpHandle> nsCpHandle) {
+ this.nsCpHandle = nsCpHandle;
+ }
+
+ public List<NfpInfo> getNfpInfo() {
+ return nfpInfo;
+ }
+
+ public void setNfpInfo(List<NfpInfo> nfpInfo) {
+ this.nfpInfo = nfpInfo;
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java
index bb9ae69f51..5a89c04a5a 100644
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcAdapterRest.java
@@ -37,6 +37,8 @@ import org.onap.so.adapters.vfc.model.NsOperationKey;
import org.onap.so.adapters.vfc.model.RestfulResponse;
import org.onap.so.adapters.vfc.util.JsonUtil;
import org.onap.so.adapters.vfc.util.ValidateUtil;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
+import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -58,7 +60,12 @@ public class VfcAdapterRest {
private static final String REQUEST_DEBUG_MSG = "body from request is {}";
private static final String APPLICATION_EXCEPTION = "ApplicationException: ";
@Autowired
+ private VfcManagerSol005 vfcManagerSol005;
+
+ @Autowired
private VfcManager driverMgr;
+ @Autowired
+ private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
public VfcAdapterRest() {
@@ -80,7 +87,13 @@ public class VfcAdapterRest {
ValidateUtil.assertObjectNotNull(data);
logger.debug(REQUEST_DEBUG_MSG + data);
NSResourceInputParameter nsInput = JsonUtil.unMarshal(data, NSResourceInputParameter.class);
- RestfulResponse rsp = driverMgr.createNs(nsInput);
+ RestfulResponse rsp;
+ if (nsInput.getNsParameters().getAdditionalParamForNs().containsKey("isSol005Interface")) {
+ rsp = vfcManagerSol005.createNs(nsInput);
+ } else {
+ rsp = driverMgr.createNs(nsInput);
+ }
+
return buildResponse(rsp);
} catch (ApplicationException e) {
logger.debug(APPLICATION_EXCEPTION, e);
@@ -106,7 +119,13 @@ public class VfcAdapterRest {
ValidateUtil.assertObjectNotNull(data);
logger.debug(REQUEST_DEBUG_MSG + data);
NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp = driverMgr.deleteNs(nsOperationKey, nsInstanceId);
+ RestfulResponse rsp;
+ InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
+ if (instanceNfvoMapping != null) {
+ rsp = vfcManagerSol005.deleteNs(nsOperationKey, nsInstanceId);
+ } else {
+ rsp = driverMgr.deleteNs(nsOperationKey, nsInstanceId);
+ }
return buildResponse(rsp);
} catch (ApplicationException e) {
logger.debug(APPLICATION_EXCEPTION, e);
@@ -131,7 +150,13 @@ public class VfcAdapterRest {
ValidateUtil.assertObjectNotNull(data);
logger.debug(REQUEST_DEBUG_MSG + data);
NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp = driverMgr.getNsProgress(nsOperationKey, jobId);
+ RestfulResponse rsp;
+ InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByJobId(jobId);
+ if (instanceNfvoMapping != null) {
+ rsp = vfcManagerSol005.getNsProgress(nsOperationKey, jobId);
+ } else {
+ rsp = driverMgr.getNsProgress(nsOperationKey, jobId);
+ }
return buildResponse(rsp);
} catch (ApplicationException e) {
logger.debug(APPLICATION_EXCEPTION, e);
@@ -156,7 +181,12 @@ public class VfcAdapterRest {
ValidateUtil.assertObjectNotNull(data);
logger.debug(REQUEST_DEBUG_MSG + data);
NSResourceInputParameter nsInput = JsonUtil.unMarshal(data, NSResourceInputParameter.class);
- RestfulResponse rsp = driverMgr.instantiateNs(nsInstanceId, nsInput);
+ RestfulResponse rsp;
+ if (nsInput.getNsParameters().getAdditionalParamForNs().containsKey("isSol005Interface")) {
+ rsp = vfcManagerSol005.instantiateNs(nsInstanceId, nsInput);
+ } else {
+ rsp = driverMgr.instantiateNs(nsInstanceId, nsInput);
+ }
return buildResponse(rsp);
} catch (ApplicationException e) {
logger.debug(APPLICATION_EXCEPTION, e);
@@ -181,7 +211,14 @@ public class VfcAdapterRest {
ValidateUtil.assertObjectNotNull(data);
logger.debug(REQUEST_DEBUG_MSG + data);
NsOperationKey nsOperationKey = JsonUtil.unMarshal(data, NsOperationKey.class);
- RestfulResponse rsp = driverMgr.terminateNs(nsOperationKey, nsInstanceId);
+ RestfulResponse rsp;
+ InstanceNfvoMapping instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
+ if (instanceNfvoMapping != null) {
+ rsp = vfcManagerSol005.terminateNs(nsOperationKey, nsInstanceId);
+ } else {
+ rsp = driverMgr.terminateNs(nsOperationKey, nsInstanceId);
+ }
+
return buildResponse(rsp);
} catch (ApplicationException e) {
logger.debug(APPLICATION_EXCEPTION, e);
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java
new file mode 100644
index 0000000000..9033becf8a
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005.java
@@ -0,0 +1,620 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.rest;
+
+import java.time.LocalDateTime;
+import java.util.*;
+import org.onap.so.adapters.vfc.constant.CommonConstant;
+import org.onap.so.adapters.vfc.constant.CommonConstant.Step;
+import org.onap.so.adapters.vfc.constant.DriverExceptionID;
+import org.onap.so.adapters.vfc.constant.HttpCode;
+import org.onap.so.adapters.vfc.exceptions.ApplicationException;
+import org.onap.so.adapters.vfc.model.*;
+import org.onap.so.adapters.vfc.util.JsonUtil;
+import org.onap.so.adapters.vfc.util.RestfulUtil;
+import org.onap.so.adapters.vfc.util.ValidateUtil;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
+import org.onap.so.db.request.beans.OperationStatus;
+import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
+import org.onap.so.db.request.data.repository.OperationStatusRepository;
+import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
+import org.onap.so.requestsdb.RequestsDbConstant;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.domain.Example;
+import org.springframework.stereotype.Component;
+
+/**
+ * VF-C Manager <br>
+ * <p>
+ * </p>
+ *
+ * @author
+ * @version ONAP Amsterdam Release 2017-08-28
+ */
+@Component
+@Primary
+public class VfcManagerSol005 {
+
+ private static final Logger LOGGER = LoggerFactory.getLogger(VfcManagerSol005.class);
+
+ /**
+ * nfvo url map
+ */
+ private Map<String, String> nfvoUrlMap;
+
+ @Autowired
+ private ResourceOperationStatusRepository resourceOperationStatusRepository;
+
+ @Autowired
+ private RestfulUtil restfulUtil;
+
+ @Autowired
+ private OperationStatusRepository operationStatusRepository;
+
+ @Autowired
+ private InstanceNfvoMappingRepository instanceNfvoMappingRepository;
+
+ private InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
+
+ public VfcManagerSol005() {
+ nfvoUrlMap = new HashMap<>();
+ nfvoUrlMap.put(Step.CREATE, CommonConstant.SOL005_NFVO_CREATE_URL);
+ nfvoUrlMap.put(Step.INSTANTIATE, CommonConstant.SOL005_NFVO_INSTANTIATE_URL);
+ nfvoUrlMap.put(Step.TERMINATE, CommonConstant.SOL005_NFVO_TERMINATE_URL);
+ nfvoUrlMap.put(Step.DELETE, CommonConstant.SOL005_NFVO_DELETE_URL);
+ nfvoUrlMap.put(Step.QUERY, CommonConstant.SOL005_NFVO_QUERY_URL);
+ nfvoUrlMap.put(Step.SCALE, CommonConstant.NFVO_SCALE_URL);
+ }
+
+ /**
+ * create network service <br>
+ *
+ * @param segInput input parameters for current node from http request
+ * @return
+ * @since ONAP Dubilin Release
+ */
+ public RestfulResponse createNs(NSResourceInputParameter segInput) throws ApplicationException {
+
+ Map<String, String> nfvoDetails;
+ // Step1: get service template by node type
+ String nsdId = segInput.getNsServiceModelUUID();
+ // nsdId for NFVO is "id" in the response, while for SDNO is "servcice template id"
+ LOGGER.info("serviceTemplateId is {}, id is {}", nsdId, nsdId);
+
+
+ LOGGER.info("SOL005 create ns -> begin");
+ // Step2: Prepare url and method type
+ String url = getUrl(null, CommonConstant.Step.CREATE);
+ String methodType = CommonConstant.MethodType.POST;
+
+ // Step3: Prepare restful parameters and options
+ CreateNsRequest createNsRequest = new CreateNsRequest();
+ createNsRequest.setNsDescription(segInput.getNsServiceDescription());
+ createNsRequest.setNsdId(segInput.getNsServiceModelUUID());
+ createNsRequest.setNsName(segInput.getNsServiceName());
+
+ String createReq = JsonUtil.marshal(createNsRequest);
+ RestfulResponse aaiRestfulResponse = null;
+ NsParameters nsParameters = segInput.getNsParameters();
+ if (nsParameters.getAdditionalParamForNs().containsKey("orchestrator")) {
+ if (nsParameters.getAdditionalParamForNs().get("orchestrator") != null) {
+ String nfvo = nsParameters.getAdditionalParamForNs().get("nfvo").toString();
+ aaiRestfulResponse = restfulUtil.getNfvoFromAAI(nfvo);
+ nfvoDetails = JsonUtil.unMarshal(aaiRestfulResponse.getResponseContent(), Map.class);
+ url = nfvoDetails.get("url") + nfvoDetails.get("api-root") + url;
+
+ }
+ } else {
+ LOGGER.error("Nfvo not present in AAI");
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_CREATE_NS);
+ }
+
+
+ // Prepare request header for createNs request.
+ Map<String, String> requestHeader = new HashMap<>();
+ requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
+ requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
+
+ // Step4: Call NFVO or SDNO lcm to create ns
+ LOGGER.info("Request Payload for CreateNs: " + createReq);
+
+ RestfulResponse createRsp = restfulUtil.send(url, methodType, createReq, requestHeader);
+ ValidateUtil.assertObjectNotNull(createRsp);
+ LOGGER.info("create ns response status is : {}", createRsp.getStatus());
+ LOGGER.info("create ns response content is : {}", createRsp.getResponseContent());
+
+ // Step 5: save resource operation information
+ ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
+ segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
+ status.setStatus(RequestsDbConstant.Status.PROCESSING);
+ status = resourceOperationStatusRepository.save(status);
+ if (!HttpCode.isSucess(createRsp.getStatus())) {
+ LOGGER.error("update segment operation status : fail to create ns");
+ status.setProgress("40");
+ status.setStatusDescription("NS not created");
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(createRsp.getStatus()));
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_CREATE_NS);
+ }
+ // TODO: Capture all the content of the response. Currently fetching ID value alone.
+ // Should be converted into the NsInstance.class
+ @SuppressWarnings("unchecked")
+ Map<String, String> rsp = JsonUtil.unMarshal(createRsp.getResponseContent(), Map.class);
+ String nsInstanceId = rsp.get(CommonConstant.SOL005_NS_INSTANCE_ID);
+ if (ValidateUtil.isStrEmpty(nsInstanceId)) {
+ LOGGER.error("Invalid instanceId from create operation");
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
+ DriverExceptionID.INVALID_RESPONSEE_FROM_CREATE_OPERATION);
+ }
+
+ nfvoDetails = JsonUtil.unMarshal(aaiRestfulResponse.getResponseContent(), Map.class);
+ instanceNfvoMapping.setInstanceId(nsInstanceId);
+ instanceNfvoMapping.setPassword(nfvoDetails.get("password"));
+ instanceNfvoMapping.setUsername(nfvoDetails.get("userName"));
+ instanceNfvoMapping.setNfvoName(nfvoDetails.get("nfvoId"));
+ instanceNfvoMapping.setEndpoint(nfvoDetails.get("url"));
+ instanceNfvoMapping.setApiRoot(nfvoDetails.get("api-root"));
+ instanceNfvoMappingRepository.save(instanceNfvoMapping);
+ LOGGER.info("create ns -> end");
+ LOGGER.info("save segment and operaton info -> begin");
+ // Step 6: add relation between service and NS
+ AaiUtil.addRelation(segInput.getNsOperationKey().getGlobalSubscriberId(),
+ segInput.getNsOperationKey().getServiceType(), segInput.getNsOperationKey().getServiceId(),
+ nsInstanceId);
+ LOGGER.info("save segment and operation info -> end");
+ return createRsp;
+ }
+
+ /**
+ * delete network service <br>
+ *
+ * @param nsOperationKey The operation key of the NS resource
+ * @param nsInstanceId The NS instance id
+ * @return
+ * @since ONAP Dublin Release
+ */
+ public RestfulResponse deleteNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
+ LOGGER.info("SOL005 delete ns -> begin");
+ // Step1: prepare url and methodType
+ String url = getUrl(nsInstanceId, CommonConstant.Step.DELETE);
+ String methodType = CommonConstant.MethodType.DELETE;
+
+ // Step2: prepare restful parameters and options
+ RestfulResponse deleteRsp = restfulUtil.send(url, methodType, "");
+ ValidateUtil.assertObjectNotNull(deleteRsp);
+ LOGGER.info("delete ns response status is : {}", deleteRsp.getStatus());
+ LOGGER.info("delete ns response content is : {}", deleteRsp.getResponseContent());
+ LOGGER.info("delete ns -> end");
+
+ ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
+ nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
+ if (!HttpCode.isSucess(deleteRsp.getStatus())) {
+ LOGGER.error("fail to delete ns");
+
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_DELETE_NS);
+ }
+
+ // Step3: remove relation info between service and ns
+ AaiUtil.removeRelation(nsOperationKey.getGlobalSubscriberId(), nsOperationKey.getServiceType(),
+ nsOperationKey.getServiceId(), nsInstanceId);
+ LOGGER.info("delete segment information -> end");
+
+ // Step4: update service segment operation status
+ status.setStatus(RequestsDbConstant.Status.FINISHED);
+ status.setErrorCode(String.valueOf(deleteRsp.getStatus()));
+ status.setProgress("100");
+ status.setStatusDescription("VFC resource deletion finished");
+ resourceOperationStatusRepository.save(status);
+ LOGGER.info("update segment operaton status for delete -> end");
+
+ return deleteRsp;
+
+ }
+
+ /**
+ * instantiate network service <br>
+ *
+ * @param nsInstanceId The NS instance id
+ * @param segInput input parameters for current node from http request
+ * @return
+ * @since ONAP Dublin Release
+ */
+ public RestfulResponse instantiateNs(String nsInstanceId, NSResourceInputParameter segInput)
+ throws ApplicationException {
+ // Call the NFVO or SDNO service to instantiate service
+ LOGGER.info("SOL005 instantiate ns -> begin");
+
+ // Step1: Prepare restful parameters and options
+ InstantiateNsRequest instantiateNsRequest = new InstantiateNsRequest();
+
+ NsInstantiateReq oRequest = new NsInstantiateReq();
+ oRequest.setNsInstanceId(nsInstanceId);
+ NsParameters nsParameters = segInput.getNsParameters();
+
+ ArrayList<VnfLocationConstraint> vnfLocationConstraints = new ArrayList<VnfLocationConstraint>();
+ for (LocationConstraint locationConstraint : nsParameters.getLocationConstraints()) {
+ VnfLocationConstraint vnfLocationConstraint = new VnfLocationConstraint();
+ vnfLocationConstraint.setVnfProfileId(locationConstraint.getVnfProfileId());
+ vnfLocationConstraint.setLocationConstraints(null);
+ vnfLocationConstraints.add(vnfLocationConstraint);
+
+ }
+ instantiateNsRequest.setAditionalParamsForNs(nsParameters.getAdditionalParamForNs());
+ // Setting FlavourID which is a mandatory paramater to default
+ // as UUI is not sending this parameter to so
+ instantiateNsRequest.setNsFlavourId("default");
+ String instReq = JsonUtil.marshal(instantiateNsRequest);
+ LOGGER.info("Request Payload for InstantiateNs: " + instReq);
+ // Step2: prepare url and
+ String url = getUrl(nsInstanceId, CommonConstant.Step.INSTANTIATE);
+ String methodType = CommonConstant.MethodType.POST;
+ instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
+
+ if (instanceNfvoMapping != null) {
+
+ url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
+
+ } else {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+
+ }
+ // Step3: prepare restful parameters and options
+ Map<String, String> reqBody = new HashMap<>();
+ reqBody.put("terminationTime", LocalDateTime.now().toString());
+ RestfulResponse instRsp = restfulUtil.send(url, methodType, instReq);
+ ResourceOperationStatus status = new ResourceOperationStatus(segInput.getNsOperationKey().getServiceId(),
+ segInput.getNsOperationKey().getOperationId(), segInput.getNsOperationKey().getNodeTemplateUUID());
+ ValidateUtil.assertObjectNotNull(instRsp);
+ if (!HttpCode.isSucess(instRsp.getStatus())) {
+ LOGGER.error("update segment operation status : fail to instantiate ns");
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(instRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ }
+ LOGGER.info("instantiate ns response status is : {}", instRsp.getStatus());
+ LOGGER.info("response payload is {}", instRsp.getResponseContent());
+ String jobId = null;
+ if (instRsp.getStatus() == 202) {
+ String jobUri = instRsp.getRespHeaderStr(CommonConstant.JOB_URI);
+ LOGGER.info("JOB URI" + jobUri);
+ jobId = jobUri.split("/")[4];
+ if (ValidateUtil.isStrEmpty(jobId)) {
+ LOGGER.error("Invalid jobId from instantiate operation");
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(instRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
+ DriverExceptionID.INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION);
+ }
+
+ } else if (instRsp.getStatus() > 400 && instRsp.getStatus() < 600) {
+ LOGGER.error("ERROR while executing instantiateNs request");
+ ProblemDetails problemDetails = JsonUtil.unMarshal(instRsp.getResponseContent(), ProblemDetails.class);
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(instRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED + problemDetails.getDetail());
+ resourceOperationStatusRepository.save(status);
+ if (instRsp.getStatus() == 406) {
+ throw new ApplicationException(HttpCode.NOT_ACCEPTABLE, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ } else if (instRsp.getStatus() == 400) {
+ throw new ApplicationException(HttpCode.BAD_REQUEST, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ } else if (instRsp.getStatus() == 404) {
+ throw new ApplicationException(HttpCode.NOT_FOUND, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ } else if (instRsp.getStatus() == 409) {
+ LOGGER.error("The operation cannot be executed currently,\n"
+ + "due to a conflict with the state of the resource");
+ throw new ApplicationException(HttpCode.RESPOND_CONFLICT, DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ } else if (instRsp.getStatus() == 500) {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
+ DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ } else {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
+ DriverExceptionID.FAIL_TO_INSTANTIATE_NS);
+ }
+
+ }
+ LOGGER.info("Job id is " + jobId);
+ LOGGER.info("Nfvo Details" + instanceNfvoMapping.toString());
+ LOGGER.info("instantiate ns -> end");
+ // Step 3: update segment operation job id
+ LOGGER.info("update resource operation status job id -> begin");
+ status.setJobId(jobId);
+ status.setProgress("100");
+ status.setStatusDescription("NS initiation completed.");
+ resourceOperationStatusRepository.save(status);
+ instanceNfvoMapping.setJobId(jobId);
+ instanceNfvoMappingRepository.save(instanceNfvoMapping);
+ LOGGER.info("update segment operation job id -> end" + instanceNfvoMapping.toString());
+ return instRsp;
+ }
+
+ /**
+ * terminate network service <br>
+ *
+ * @param nsOperationKey The operation key for NS resource
+ * @param nsInstanceId The NS instance id
+ * @return
+ * @since ONAP Dublin Release
+ */
+ public RestfulResponse terminateNs(NsOperationKey nsOperationKey, String nsInstanceId) throws ApplicationException {
+ // Step1: save segment operation info for delete process
+ LOGGER.info("save segment operation for delete process");
+ ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
+ nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
+ status.setStatus(RequestsDbConstant.Status.PROCESSING);
+ resourceOperationStatusRepository.save(status);
+
+ LOGGER.info("SOL005 terminate ns -> begin");
+ // Step2: prepare url and method type
+ String url = getUrl(nsInstanceId, CommonConstant.Step.TERMINATE);
+ String methodType = CommonConstant.MethodType.POST;
+
+ instanceNfvoMapping = instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId);
+
+ if (instanceNfvoMapping != null) {
+
+ url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
+
+ } else {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ }
+ // Step3: prepare restful parameters and options
+ Map<String, String> reqBody = new HashMap<>();
+ reqBody.put("terminationTime", LocalDateTime.now().toString());
+
+ // Step4: Call the NFVO or SDNO service to terminate service
+ LOGGER.info("request body for terminate NS" + JsonUtil.marshal(reqBody));
+ RestfulResponse terminateRsp = restfulUtil.send(url, methodType, JsonUtil.marshal(reqBody));
+ ValidateUtil.assertObjectNotNull(terminateRsp);
+ LOGGER.info("terminate ns response status is : {}", terminateRsp.getStatus());
+ LOGGER.info("terminate ns response content is : {}", terminateRsp.getResponseContent());
+ // Step 3: update segment operation
+ if (!HttpCode.isSucess(terminateRsp.getStatus())) {
+ LOGGER.error("fail to terminate ns");
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED);
+ resourceOperationStatusRepository.save(status);
+
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ }
+ // @SuppressWarnings("unchecked")
+ String jobId = null;
+ Map<String, String> rsp = new HashMap<>();
+ if (terminateRsp.getStatus() == 202) {
+ String jobUri = terminateRsp.getRespHeaderStr(CommonConstant.JOB_URI);
+ jobId = jobUri.split("/")[4];
+ jobId.split("/");
+ if (ValidateUtil.isStrEmpty(jobId)) {
+ LOGGER.error("Invalid jobId from instantiate operation");
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED);
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR,
+ DriverExceptionID.INVALID_RESPONSE_FROM_INSTANTIATE_OPERATION);
+ }
+ rsp.put(CommonConstant.JOB_ID, jobId);
+ LOGGER.info("terminate ns -> end");
+ LOGGER.info("update segment job id -> begin");
+ status.setProgress("60");
+ status.setStatusDescription("NS is termination completed");
+ status.setJobId(jobId);
+ resourceOperationStatusRepository.save(status);
+ LOGGER.info("update segment job id -> end");
+ } else if (terminateRsp.getStatus() > 400 && terminateRsp.getStatus() < 600) {
+ LOGGER.error("ERROR while executing instantiateNs request");
+ ProblemDetails problemDetails = JsonUtil.unMarshal(terminateRsp.getResponseContent(), ProblemDetails.class);
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setErrorCode(String.valueOf(terminateRsp.getStatus()));
+ status.setStatusDescription(CommonConstant.StatusDesc.TERMINATE_NS_FAILED + problemDetails.getDetail());
+ resourceOperationStatusRepository.save(status);
+ if (terminateRsp.getStatus() == 406) {
+ throw new ApplicationException(HttpCode.NOT_ACCEPTABLE, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ } else if (terminateRsp.getStatus() == 400) {
+ throw new ApplicationException(HttpCode.BAD_REQUEST, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ } else if (terminateRsp.getStatus() == 404) {
+ throw new ApplicationException(HttpCode.NOT_FOUND, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ } else if (terminateRsp.getStatus() == 409) {
+ LOGGER.error("The operation cannot be executed currently,\n"
+ + "due to a conflict with the state of the resource");
+ throw new ApplicationException(HttpCode.RESPOND_CONFLICT, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ } else if (terminateRsp.getStatus() == 500) {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ } else {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_TERMINATE_NS);
+ }
+
+ }
+ instanceNfvoMapping.setJobId(jobId);
+ instanceNfvoMappingRepository.save(instanceNfvoMapping);
+ terminateRsp.setResponseContent(rsp.toString());
+ return terminateRsp;
+ }
+
+ /**
+ * get ns progress by job Id <br>
+ *
+ * @param nsOperationKey The OperationKey for NS resource
+ * @param jobId the job id
+ * @return
+ * @since ONAP Dublin Release
+ */
+ public RestfulResponse getNsProgress(NsOperationKey nsOperationKey, String jobId) throws ApplicationException {
+
+ ValidateUtil.assertObjectNotNull(jobId);
+ // Step 1: query the current resource operation status
+ ResourceOperationStatus status = new ResourceOperationStatus(nsOperationKey.getServiceId(),
+ nsOperationKey.getOperationId(), nsOperationKey.getNodeTemplateUUID());
+ // status = resourceOperationStatusRepository.findOne(Example.of(status))
+ // .orElseThrow(() -> new ApplicationException(404, "Cannot Find Operation Status"));
+
+ // Get NFVO details
+ instanceNfvoMapping = instanceNfvoMappingRepository.findOneByJobId(jobId);
+
+ // Step 2: start query
+ LOGGER.info("SOL005 query ns status -> begin");
+ String url = getUrl(jobId, CommonConstant.Step.QUERY);
+ String methodType = CommonConstant.MethodType.GET;
+ if (instanceNfvoMapping != null) {
+
+ url = instanceNfvoMapping.getEndpoint() + instanceNfvoMapping.getApiRoot() + url;
+
+ } else {
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
+ }
+
+ // prepare restful parameters and options
+ RestfulResponse rsp = restfulUtil.send(url, methodType, "");
+ ValidateUtil.assertObjectNotNull(rsp);
+ LOGGER.info("query ns progress response status is : {}", rsp.getStatus());
+ LOGGER.info("query ns progress response content is : {}", rsp.getResponseContent());
+ // Step 3:check the response staus
+ if (!HttpCode.isSucess(rsp.getStatus())) {
+ LOGGER.info("fail to query job status");
+ ProblemDetails problemDetails = JsonUtil.unMarshal(rsp.getResponseContent(), ProblemDetails.class);
+ status.setErrorCode(String.valueOf(rsp.getStatus()));
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setStatusDescription(CommonConstant.StatusDesc.QUERY_JOB_STATUS_FAILED + problemDetails.getDetail());
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
+ }
+ // Step 4: Process Network Service Instantiate Response
+ NsLcmOpOcc nsProgress = JsonUtil.unMarshal(rsp.getResponseContent(), NsLcmOpOcc.class);
+ if (CommonConstant.operationState.FAILED.equals(nsProgress.getOperationState())) {
+ LOGGER.info("NS instantiate fails");
+ status.setErrorCode(String.valueOf(rsp.getStatus()));
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setStatusDescription(
+ CommonConstant.StatusDesc.INSTANTIATE_NS_FAILED + nsProgress.getError().getDetail());
+ resourceOperationStatusRepository.save(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.FAIL_TO_QUERY_JOB_STATUS);
+ }
+ // Step 5: update segment operation progress
+
+ if (nsProgress.getOperationState().equals(CommonConstant.operationState.PROCESSING)) {
+ status.setProgress("40");
+ status.setStatus(RequestsDbConstant.Status.PROCESSING);
+ status.setStatusDescription("NS operation is in progress");
+ resourceOperationStatusRepository.save(status);
+ updateOperationStatusBasedOnResourceStatus(status);
+ } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.PARTIALLY_COMPLETED)) {
+ status.setProgress("60");
+ status.setStatus(RequestsDbConstant.Status.PROCESSING);
+ status.setStatusDescription("NS operation is partially completed");
+ resourceOperationStatusRepository.save(status);
+ } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.COMPLETED)) {
+ status.setStatus(RequestsDbConstant.Status.FINISHED);
+ status.setProgress("100");
+ status.setStatusDescription("NS operation is Completed");
+ resourceOperationStatusRepository.save(status);
+ updateOperationStatusBasedOnResourceStatus(status);
+
+ } else if (nsProgress.getOperationState().equals(CommonConstant.operationState.FAILED)
+ || nsProgress.getOperationState().equals(CommonConstant.operationState.FAILED_TEMP)) {
+ status.setStatus(RequestsDbConstant.Status.ERROR);
+ status.setProgress("0");
+ status.setStatusDescription("NS operation Failed");
+ resourceOperationStatusRepository.save(status);
+ updateOperationStatusBasedOnResourceStatus(status);
+ throw new ApplicationException(HttpCode.INTERNAL_SERVER_ERROR, DriverExceptionID.JOB_STATUS_ERROR);
+ } else {
+ LOGGER.error("unexcepted response status");
+
+ }
+ return rsp;
+ }
+
+ /**
+ * get url for the operation <br>
+ *
+ * @param variable variable should be put in the url
+ * @param step step of the operation (terminate,query,delete)
+ * @return
+ * @since ONAP Dublin Release
+ */
+ private String getUrl(String variable, String step) {
+
+ String url;
+ String originalUrl;
+ originalUrl = nfvoUrlMap.get(step);
+ url = String.format(originalUrl, variable);
+ return url;
+
+ }
+
+ private void updateOperationStatusBasedOnResourceStatus(ResourceOperationStatus operStatus) {
+ String serviceId = operStatus.getServiceId();
+ String operationId = operStatus.getOperationId();
+
+ LOGGER.debug("Request database - update Operation Status Based On Resource Operation Status with service Id: "
+ + "{}, operationId: {}", serviceId, operationId);
+
+ List<ResourceOperationStatus> lstResourceStatus =
+ resourceOperationStatusRepository.findByServiceIdAndOperationId(serviceId, operationId);
+ if (lstResourceStatus == null) {
+ LOGGER.error("Unable to retrieve resourceOperStatus Object by ServiceId: {} operationId: {}", serviceId,
+ operationId);
+ return;
+ }
+
+ // count the total progress
+ int resourceCount = lstResourceStatus.size();
+ int progress = 0;
+ boolean isFinished = true;
+ for (ResourceOperationStatus lstResourceStatu : lstResourceStatus) {
+ progress = progress + Integer.valueOf(lstResourceStatu.getProgress()) / resourceCount;
+ if (RequestsDbConstant.Status.PROCESSING.equals(lstResourceStatu.getStatus())) {
+ isFinished = false;
+ }
+ }
+
+ OperationStatus serviceOperStatus =
+ operationStatusRepository.findOneByServiceIdAndOperationId(serviceId, operationId);
+ if (serviceOperStatus == null) {
+ String error = "Entity not found. Unable to retrieve OperationStatus Object ServiceId: " + serviceId
+ + " operationId: " + operationId;
+ LOGGER.error(error);
+
+ serviceOperStatus = new OperationStatus();
+ serviceOperStatus.setOperationId(operationId);
+ serviceOperStatus.setServiceId(serviceId);
+ }
+
+ progress = progress > 100 ? 100 : progress;
+ serviceOperStatus.setProgress(String.valueOf(progress));
+ serviceOperStatus.setOperationContent(operStatus.getStatusDescription());
+ // if current resource failed. service failed.
+ if (RequestsDbConstant.Status.ERROR.equals(operStatus.getStatus())) {
+ serviceOperStatus.setResult(RequestsDbConstant.Status.ERROR);
+ serviceOperStatus.setReason(operStatus.getStatusDescription());
+ } else if (isFinished) {
+ // if finished
+ serviceOperStatus.setResult(RequestsDbConstant.Status.FINISHED);
+ serviceOperStatus.setProgress(RequestsDbConstant.Progress.ONE_HUNDRED);
+ }
+
+ operationStatusRepository.save(serviceOperStatus);
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java
index 647fcafa66..984cdb8016 100644
--- a/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java
+++ b/adapters/mso-vfc-adapter/src/main/java/org/onap/so/adapters/vfc/util/RestfulUtil.java
@@ -26,8 +26,13 @@ package org.onap.so.adapters.vfc.util;
import java.net.HttpURLConnection;
import java.net.SocketTimeoutException;
+import java.util.Base64;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
import javax.ws.rs.core.UriBuilder;
import org.onap.so.logger.LoggingAnchor;
+import org.apache.http.Header;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
@@ -102,9 +107,10 @@ public class RestfulUtil {
}
- public RestfulResponse send(String url, String methodType, String content) {
- String msbUrl = getMsbHost() + url;
- logger.debug("Begin to sent message {}: {}", methodType, msbUrl);
+
+ public RestfulResponse send(String msbUrl, String methodType, String content, Map<String, String> requestHeader) {
+ // String msbUrl = getMsbHost() + url;
+ logger.debug("Begin to sent message " + methodType + ": " + msbUrl);
HttpRequestBase method = null;
HttpResponse httpResponse = null;
@@ -115,9 +121,14 @@ public class RestfulUtil {
RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
.setConnectionRequestTimeout(timeout).build();
+ HttpClient client = HttpClientBuilder.create().build();
+
if ("POST".equalsIgnoreCase(methodType)) {
HttpPost httpPost = new HttpPost(msbUrl);
httpPost.setConfig(requestConfig);
+ for (String key : requestHeader.keySet()) {
+ httpPost.setHeader(key, requestHeader.get(key));
+ }
httpPost.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
method = httpPost;
} else if ("PUT".equalsIgnoreCase(methodType)) {
@@ -135,11 +146,24 @@ public class RestfulUtil {
method = httpDelete;
}
- httpResponse = client.execute(method);
+ // now VFC have no auth
+ // String userCredentials =
+ // SDNCAdapterProperties.getEncryptedProperty(Constants.SDNC_AUTH_PROP,
+ // Constants.DEFAULT_SDNC_AUTH, Constants.ENCRYPTION_KEY);
+ // String authorization = "Basic " +
+ // DatatypeConverter.printBase64Binary(userCredentials.getBytes());
+ // method.setHeader("Authorization", authorization);
+ httpResponse = client.execute(method);
+ Map<String, String> responseHeader = new HashMap<>();
String responseContent = null;
if (httpResponse.getEntity() != null) {
responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
+ Header[] httpResponseAllHeaders = httpResponse.getAllHeaders();
+ for (Header header : httpResponseAllHeaders) {
+ responseHeader.put(header.getName(), header.getValue());
+
+ }
}
int statusCode = httpResponse.getStatusLine().getStatusCode();
@@ -163,7 +187,115 @@ public class RestfulUtil {
}
method = null;
- return createResponse(statusCode, responseContent);
+ return createResponse(statusCode, responseContent, responseHeader);
+
+ } catch (SocketTimeoutException | ConnectTimeoutException e) {
+ String errMsg = "Request to VFC timed out";
+ logError(errMsg, e);
+ return createResponse(HttpURLConnection.HTTP_CLIENT_TIMEOUT, errMsg);
+
+ } catch (Exception e) {
+ String errMsg = "Error processing request to VFC";
+ logError(errMsg, e);
+ return createResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, errMsg);
+
+ } finally {
+ if (httpResponse != null) {
+ try {
+ EntityUtils.consume(httpResponse.getEntity());
+ } catch (Exception e) {
+ logger.debug("Exception :", e);
+ }
+ }
+
+ if (method != null) {
+ try {
+ method.reset();
+ } catch (Exception e) {
+ logger.debug("Exception :", e);
+ }
+ }
+ }
+ }
+
+ public RestfulResponse send(String msbUrl, String methodType, String content) {
+ if (!msbUrl.contains("http")) {
+ msbUrl = getMsbHost() + msbUrl;
+ }
+ // String msbUrl = getMsbHost() + url;
+ logger.debug("Begin to sent message " + methodType + ": " + msbUrl);
+
+ HttpRequestBase method = null;
+ HttpResponse httpResponse = null;
+
+ try {
+ int timeout = DEFAULT_TIME_OUT;
+
+ RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(timeout).setConnectTimeout(timeout)
+ .setConnectionRequestTimeout(timeout).build();
+
+ if ("POST".equalsIgnoreCase(methodType)) {
+ HttpPost httpPost = new HttpPost(msbUrl);
+ httpPost.setConfig(requestConfig);
+ httpPost.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
+ method = httpPost;
+ } else if ("PUT".equalsIgnoreCase(methodType)) {
+ HttpPut httpPut = new HttpPut(msbUrl);
+ httpPut.setConfig(requestConfig);
+ httpPut.setEntity(new StringEntity(content, ContentType.APPLICATION_JSON));
+ method = httpPut;
+ } else if ("GET".equalsIgnoreCase(methodType)) {
+ HttpGet httpGet = new HttpGet(msbUrl);
+ httpGet.setConfig(requestConfig);
+ method = httpGet;
+ } else if ("DELETE".equalsIgnoreCase(methodType)) {
+ HttpDelete httpDelete = new HttpDelete(msbUrl);
+ httpDelete.setConfig(requestConfig);
+ method = httpDelete;
+ }
+
+ // now VFC have no auth
+ // String userCredentials =
+ // SDNCAdapterProperties.getEncryptedProperty(Constants.SDNC_AUTH_PROP,
+ // Constants.DEFAULT_SDNC_AUTH, Constants.ENCRYPTION_KEY);
+ // String authorization = "Basic " +
+ // DatatypeConverter.printBase64Binary(userCredentials.getBytes());
+ // method.setHeader("Authorization", authorization);
+
+ httpResponse = client.execute(method);
+ Map<String, String> responseHeader = new HashMap<>();
+ String responseContent = null;
+ if (httpResponse.getEntity() != null) {
+ responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
+ Header[] httpResponseAllHeaders = httpResponse.getAllHeaders();
+ for (Header header : httpResponseAllHeaders) {
+ responseHeader.put(header.getName(), header.getValue());
+
+ }
+ }
+
+ int statusCode = httpResponse.getStatusLine().getStatusCode();
+ String statusMessage = httpResponse.getStatusLine().getReasonPhrase();
+
+ logger.debug("VFC Response: " + statusCode + " " + statusMessage
+ + (responseContent == null ? "" : System.lineSeparator() + responseContent));
+
+ if (httpResponse.getStatusLine().getStatusCode() >= 300) {
+ String errMsg = "VFC returned " + statusCode + " " + statusMessage;
+ logError(errMsg);
+ return createResponse(statusCode, errMsg);
+ }
+
+ httpResponse = null;
+
+ if (null != method) {
+ method.reset();
+ } else {
+ logger.debug("method is NULL:");
+ }
+
+ method = null;
+ return createResponse(statusCode, responseContent, responseHeader);
} catch (SocketTimeoutException | ConnectTimeoutException e) {
String errMsg = "Request to VFC timed out";
@@ -194,6 +326,46 @@ public class RestfulUtil {
}
}
+ public RestfulResponse getNfvoFromAAI(String nfvo) {
+ HttpRequestBase method = null;
+ HttpResponse httpResponse = null;
+ String endPoint = getMsbHost() + "/api/aai-esr-server/v1/nfvos/" + nfvo;
+ logger.info("Endpoint URL" + endPoint);
+ RequestConfig requestConfig = RequestConfig.custom().setSocketTimeout(DEFAULT_TIME_OUT)
+ .setConnectTimeout(DEFAULT_TIME_OUT).setConnectionRequestTimeout(DEFAULT_TIME_OUT).build();
+ HttpClient client = HttpClientBuilder.create().build();
+ HttpGet httpGet = new HttpGet(endPoint);
+ httpGet.setConfig(requestConfig);
+ String encoding = Base64.getEncoder().encodeToString(("AAI:AAI").getBytes());
+ httpGet.setHeader("Authorization", "Basic " + encoding);
+ method = httpGet;
+ String responseContent = null;
+ Map<String, String> responseHeader = null;
+ try {
+ httpResponse = client.execute(method);
+ if (httpResponse.getEntity() != null) {
+ responseContent = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
+ }
+
+ int statusCode = httpResponse.getStatusLine().getStatusCode();
+ String statusMessage = httpResponse.getStatusLine().getReasonPhrase();
+
+ logger.debug("AAI Response: " + statusCode + " " + statusMessage
+ + (responseContent == null ? "" : System.lineSeparator() + responseContent));
+
+ if (httpResponse.getStatusLine().getStatusCode() >= 300) {
+ String errMsg = "AAI returned " + statusCode + " " + statusMessage;
+ logError(errMsg);
+ return createResponse(statusCode, errMsg);
+ }
+ } catch (Exception e) {
+ String errMsg = "Error processing request to AAI";
+ logError(errMsg, e);
+ return createResponse(HttpURLConnection.HTTP_INTERNAL_ERROR, errMsg);
+ }
+ return createResponse(200, responseContent);
+ }
+
private static void logError(String errMsg, Throwable t) {
logger.error(LoggingAnchor.FOUR, MessageEnum.RA_NS_EXC.toString(), VFC_ADAPTER,
ErrorCode.AvailabilityError.getValue(), errMsg, t);
@@ -211,4 +383,12 @@ public class RestfulUtil {
return rsp;
}
+ private static RestfulResponse createResponse(int statusCode, String content, Map<String, String> responseHeader) {
+ RestfulResponse rsp = new RestfulResponse();
+ rsp.setStatus(statusCode);
+ rsp.setRespHeaderMap(responseHeader);
+ rsp.setResponseContent(content);
+ return rsp;
+ }
+
}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java
new file mode 100644
index 0000000000..1fedac9cc9
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddPnfDataTest.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class AddPnfDataTest {
+ AddPnfData pnfData = new AddPnfData();
+
+ @Test
+ public void getPnfId() {
+ pnfData.getPnfId();
+ }
+
+
+ @Test
+ public void setPnfId() {
+ pnfData.setPnfId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getPnfName() {
+ pnfData.getPnfName();
+ }
+
+ @Test
+ public void setPnfName() {
+ pnfData.setPnfName("Router");
+ }
+
+ @Test
+ public void getPnfdId() {
+ pnfData.getPnfdId();
+ }
+
+ @Test
+ public void setPnfdId() {
+ pnfData.setPnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getPnfProfileId() {
+ pnfData.getPnfProfileId();
+ }
+
+ @Test
+ public void setPnfProfileId() {
+ pnfData.setPnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getCpData() {
+ pnfData.getCpData();
+ }
+
+ @Test
+ public void setCpData() {
+ pnfData.setCpData(new List<PnfExtCpData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<PnfExtCpData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(PnfExtCpData pnfExtCpData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends PnfExtCpData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends PnfExtCpData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public PnfExtCpData get(int index) {
+ return null;
+ }
+
+ @Override
+ public PnfExtCpData set(int index, PnfExtCpData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, PnfExtCpData element) {
+
+ }
+
+ @Override
+ public PnfExtCpData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<PnfExtCpData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<PnfExtCpData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<PnfExtCpData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java
new file mode 100644
index 0000000000..9444efd4c5
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AddressRangeTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AddressRangeTest {
+ AddressRange addressRange = new AddressRange();
+
+ @Test
+ public void getMinAddress() {
+ addressRange.getMinAddress();
+ }
+
+ @Test
+ public void setMinAddress() {
+ addressRange.setMinAddress("192.168.10.10");
+ }
+
+ @Test
+ public void getMaxAddress() {
+ addressRange.getMaxAddress();
+ }
+
+ @Test
+ public void setMaxAddress() {
+ addressRange.setMaxAddress("192.168.10.10");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java
new file mode 100644
index 0000000000..06c52e2e52
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedNsTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedNsTest {
+
+ AffectedNs affectedNs = new AffectedNs();
+
+ @Test
+ public void getNsInstanceId() {
+ affectedNs.getNsInstanceId();
+ }
+
+ @Test
+ public void setNsInstanceId() {
+ affectedNs.setNsInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getNsdId() {
+ affectedNs.getNsdId();
+ }
+
+ @Test
+ public void setNsdId() {
+ affectedNs.setNsdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java
new file mode 100644
index 0000000000..beecbe0675
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedPnfTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedPnfTest {
+ AffectedPnf affectedPnf = new AffectedPnf();
+
+ @Test
+ public void getPnfid() {
+ affectedPnf.getPnfid();
+ }
+
+ @Test
+ public void setPnfid() {
+ affectedPnf.setPnfid("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getPnfdid() {
+ affectedPnf.getPnfdid();
+ }
+
+ @Test
+ public void setPnfdid() {
+ affectedPnf.setPnfdid("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getPnfProfileId() {
+ affectedPnf.getPnfProfileId();
+ }
+
+ @Test
+ public void setPnfProfileId() {
+ affectedPnf.setPnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getPnfName() {
+ affectedPnf.getPnfName();
+ }
+
+ @Test
+ public void setPnfName() {
+ affectedPnf.setPnfName("Router");
+ }
+
+ @Test
+ public void getCpInstanceId() {
+ affectedPnf.getCpInstanceId();
+ }
+
+ @Test
+ public void setCpInstanceId() {
+ affectedPnf.setCpInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java
new file mode 100644
index 0000000000..b96fe32836
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedSapTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedSapTest {
+ AffectedSap affectedSap = new AffectedSap();
+
+ @Test
+ public void getSapInstanceId() {
+ affectedSap.getSapInstanceId();
+ }
+
+ @Test
+ public void setSapInstanceId() {
+ affectedSap.setSapInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getSapdId() {
+ affectedSap.getSapdId();
+ }
+
+ @Test
+ public void setSapdId() {
+ affectedSap.setSapdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getSapName() {
+ affectedSap.getSapName();
+ }
+
+ @Test
+ public void setSapName() {
+ affectedSap.setSapName("Dummy SAP");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java
new file mode 100644
index 0000000000..dbc6d0811f
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVirtualLinkTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedVirtualLinkTest {
+ AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
+
+ @Test
+ public void getNsVirtualLinkInstanceId() {
+ affectedVirtualLink.getNsVirtualLinkInstanceId();
+ }
+
+ @Test
+ public void setNsVirtualLinkInstanceId() {
+ affectedVirtualLink.setNsVirtualLinkInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getNsVirtualLinkDescId() {
+ affectedVirtualLink.getNsVirtualLinkDescId();
+ }
+
+ @Test
+ public void setNsVirtualLinkDescId() {
+ affectedVirtualLink.setNsVirtualLinkDescId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVlProfileId() {
+ affectedVirtualLink.getVlProfileId();
+ }
+
+ @Test
+ public void setVlProfileId() {
+ affectedVirtualLink.setVlProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java
new file mode 100644
index 0000000000..810f32d005
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnfTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedVnfTest {
+ AffectedVnf affectedVnf = new AffectedVnf();
+
+ @Test
+ public void getVnfInstanceId() {
+ affectedVnf.getVnfInstanceId();
+ }
+
+ @Test
+ public void setVnfInstanceId() {
+ affectedVnf.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfdId() {
+ affectedVnf.getVnfdId();
+ }
+
+ @Test
+ public void setVnfdId() {
+ affectedVnf.setVnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfProfileId() {
+ affectedVnf.getVnfProfileId();
+ }
+
+ @Test
+ public void setVnfProfileId() {
+ affectedVnf.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfName() {
+ affectedVnf.getVnfName();
+ }
+
+ @Test
+ public void setVnfName() {
+ affectedVnf.setVnfName("Dummy Vnf Name");
+ }
+
+ @Test
+ public void getChangedInfo() {
+ affectedVnf.getChangedInfo();
+ }
+
+ @Test
+ public void setChangedInfo() {
+ affectedVnf.setChangedInfo(new ChangedInfo());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java
new file mode 100644
index 0000000000..0d5670133d
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffectedVnffgTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AffectedVnffgTest {
+ AffectedVnffg affectedVnffg = new AffectedVnffg();
+
+ @Test
+ public void getVnffgInstanceId() {
+ affectedVnffg.getVnffgInstanceId();
+ }
+
+ @Test
+ public void setVnffgInstanceId() {
+ affectedVnffg.setVnffgInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnffgdId() {
+ affectedVnffg.getVnffgdId();
+ }
+
+ @Test
+ public void setVnffgdId() {
+ affectedVnffg.setVnffgdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java
new file mode 100644
index 0000000000..99a40e4ee1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/AffinityOrAntiAffinityRuleTest.java
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class AffinityOrAntiAffinityRuleTest {
+ AffinityOrAntiAffinityRule affinityOrAntiAffinityRule = new AffinityOrAntiAffinityRule();
+
+ @Test
+ public void getVnfdId() {
+ affinityOrAntiAffinityRule.getVnfdId();
+ }
+
+ @Test
+ public void setVnfdId() {
+ affinityOrAntiAffinityRule.setVnfdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfProfileId() {
+ affinityOrAntiAffinityRule.getVnfProfileId();
+ }
+
+ @Test
+ public void setVnfProfileId() {
+ affinityOrAntiAffinityRule.setVnfProfileId(new List<String>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<String> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(String s) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public String get(int index) {
+ return null;
+ }
+
+ @Override
+ public String set(int index, String element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, String element) {
+
+ }
+
+ @Override
+ public String remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<String> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<String> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<String> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getVnfInstanceId() {
+ affinityOrAntiAffinityRule.getVnfInstanceId();
+ }
+
+ @Test
+ public void setVnfInstanceId() {
+ affinityOrAntiAffinityRule.setVnfInstanceId(new List<String>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<String> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(String s) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public String get(int index) {
+ return null;
+ }
+
+ @Override
+ public String set(int index, String element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, String element) {
+
+ }
+
+ @Override
+ public String remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<String> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<String> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<String> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java
new file mode 100644
index 0000000000..41077fbe67
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ChangedInfoTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ChangedInfoTest {
+ ChangedInfo changedInfo = new ChangedInfo();
+
+ @Test
+ public void getChangedVnfInfo() {
+ changedInfo.getChangedVnfInfo();
+ }
+
+ @Test
+ public void setChangedVnfInfo() {
+ changedInfo.setChangedVnfInfo(new ModifyVnfInfoData());
+ }
+
+ @Test
+ public void getChangedExtConnectivity() {
+ changedInfo.getChangedExtConnectivity();
+ }
+
+ @Test
+ public void setChangedExtConnectivity() {
+ changedInfo.setChangedExtConnectivity(new ExtVirtualLinkInfo());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java
new file mode 100644
index 0000000000..e9c011b86a
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CivicAddressElementTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class CivicAddressElementTest {
+ CivicAddressElement civicAddressElement = new CivicAddressElement();
+
+ @Test
+ public void getCaType() {
+ civicAddressElement.getCaType();
+ }
+
+ @Test
+ public void setCaType() {
+ civicAddressElement.setCaType(12);
+ }
+
+ @Test
+ public void getCaValue() {
+ civicAddressElement.getCaValue();
+ }
+
+ @Test
+ public void setCaValue() {
+ civicAddressElement.setCaValue("Dummy Ca value");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java
new file mode 100644
index 0000000000..e47d02c926
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CpProtocolDataTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class CpProtocolDataTest {
+ CpProtocolData cpProtocolData = new CpProtocolData();
+
+ @Test
+ public void getLayerProtocol() {
+ cpProtocolData.getLayerProtocol();
+ }
+
+ @Test
+ public void setLayerProtocol() {
+ cpProtocolData.setLayerProtocol("BGP");
+ }
+
+ @Test
+ public void getIpOverEthernet() {
+ cpProtocolData.getIpOverEthernet();
+ }
+
+ @Test
+ public void setIpOverEthernet() {
+ cpProtocolData.setIpOverEthernet(new IpOverEthernetAddressData());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java
new file mode 100644
index 0000000000..a2a6ae4fe1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/CreateNsRequestTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class CreateNsRequestTest {
+ CreateNsRequest createNsRequest = new CreateNsRequest();
+
+ @Test
+ public void getNsdId() {
+ createNsRequest.getNsdId();
+ }
+
+ @Test
+ public void setNsdId() {
+ createNsRequest.setNsdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getNsDescription() {
+ createNsRequest.getNsDescription();
+ }
+
+ @Test
+ public void setNsDescription() {
+ createNsRequest.setNsDescription("Dummy description");
+ }
+
+ @Test
+ public void getNsName() {
+ createNsRequest.getNsName();
+ }
+
+ @Test
+ public void setNsName() {
+ createNsRequest.setNsName("Dummy Name");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java
new file mode 100644
index 0000000000..92cec88b34
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtLinkPortInfoTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ExtLinkPortInfoTest {
+
+ ExtLinkPortInfo extLinkPortInfo = new ExtLinkPortInfo();
+
+ @Test
+ public void getId() {
+ extLinkPortInfo.getId();
+ }
+
+ @Test
+ public void setId() {
+ extLinkPortInfo.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getResourceHandle() {
+ extLinkPortInfo.getResourceHandle();
+ }
+
+ @Test
+ public void setResourceHandle() {
+ extLinkPortInfo.setResourceHandle(new ResourceHandle());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java
new file mode 100644
index 0000000000..c455b36a46
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ExtVirtualLinkInfoTest.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ExtVirtualLinkInfoTest {
+ ExtVirtualLinkInfo extVirtualLinkInfo = new ExtVirtualLinkInfo();
+
+ @Test
+ public void getId() {
+ extVirtualLinkInfo.getId();
+ }
+
+ @Test
+ public void setId() {
+ extVirtualLinkInfo.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getResourceHandle() {
+ extVirtualLinkInfo.getResourceHandle();
+ }
+
+ @Test
+ public void setResourceHandle() {
+ extVirtualLinkInfo.setResourceHandle(new ResourceHandle());
+ }
+
+ @Test
+ public void getExtLinkPorts() {
+ extVirtualLinkInfo.getExtLinkPorts();
+ }
+
+ @Test
+ public void setExtLinkPorts() {
+ extVirtualLinkInfo.setExtLinkPorts(new ExtLinkPortInfo());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java
new file mode 100644
index 0000000000..f27b041690
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/InstantiateNsRequestTest.java
@@ -0,0 +1,413 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class InstantiateNsRequestTest {
+ InstantiateNsRequest instantiateNsRequest = new InstantiateNsRequest();
+
+ @Test
+ public void getNsFlavourId() {
+ instantiateNsRequest.getNsFlavourId();
+ }
+
+ @Test
+ public void setNsFlavourId() {
+ instantiateNsRequest.setNsFlavourId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getSapData() {
+ instantiateNsRequest.getSapData();
+ }
+
+ @Test
+ public void setSapData() {
+ instantiateNsRequest.setSapData(new List<SapData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<SapData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(SapData sapData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends SapData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends SapData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public SapData get(int index) {
+ return null;
+ }
+
+ @Override
+ public SapData set(int index, SapData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, SapData element) {
+
+ }
+
+ @Override
+ public SapData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<SapData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<SapData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<SapData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAddpnfData() {
+ instantiateNsRequest.getAddpnfData();
+ }
+
+ @Test
+ public void setAddpnfData() {
+ instantiateNsRequest.setAddpnfData(new List<AddPnfData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AddPnfData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AddPnfData addPnfData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AddPnfData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AddPnfData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AddPnfData get(int index) {
+ return null;
+ }
+
+ @Override
+ public AddPnfData set(int index, AddPnfData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AddPnfData element) {
+
+ }
+
+ @Override
+ public AddPnfData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AddPnfData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AddPnfData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AddPnfData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getVnfInstanceData() {
+ instantiateNsRequest.getVnfInstanceData();
+ }
+
+ @Test
+ public void setVnfInstanceData() {
+ instantiateNsRequest.setVnfInstanceData(new List<VnfInstanceData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<VnfInstanceData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(VnfInstanceData vnfInstanceData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends VnfInstanceData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends VnfInstanceData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public VnfInstanceData get(int index) {
+ return null;
+ }
+
+ @Override
+ public VnfInstanceData set(int index, VnfInstanceData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, VnfInstanceData element) {
+
+ }
+
+ @Override
+ public VnfInstanceData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<VnfInstanceData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<VnfInstanceData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<VnfInstanceData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getNestedNsInstanceId() {
+ instantiateNsRequest.getNestedNsInstanceId();
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java
new file mode 100644
index 0000000000..edf6346bca
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpAddressesTest.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class IpAddressesTest {
+ IpAddresses ipAddresses = new IpAddresses();
+
+ @Test
+ public void getType() {
+ ipAddresses.getType();
+ }
+
+ @Test
+ public void setType() {
+ ipAddresses.setType("Dummy Type");
+ }
+
+ @Test
+ public void getFixedAddresses() {
+ ipAddresses.getFixedAddresses();
+ }
+
+ @Test
+ public void setFixedAddresses() {
+ ipAddresses.setFixedAddresses(new List<String>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<String> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(String s) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends String> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public String get(int index) {
+ return null;
+ }
+
+ @Override
+ public String set(int index, String element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, String element) {
+
+ }
+
+ @Override
+ public String remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<String> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<String> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<String> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getNumDynamicAddresses() {
+ ipAddresses.getNumDynamicAddresses();
+ }
+
+ @Test
+ public void setNumDynamicAddresses() {
+ ipAddresses.setNumDynamicAddresses(5);
+ }
+
+ @Test
+ public void getAddressRange() {
+ ipAddresses.getAddressRange();
+ }
+
+ @Test
+ public void setAddressRange() {
+ ipAddresses.setAddressRange(new AddressRange());
+ }
+
+ @Test
+ public void getSubnetId() {
+ ipAddresses.getSubnetId();
+ }
+
+ @Test
+ public void setSubnetId() {
+ ipAddresses.setSubnetId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java
new file mode 100644
index 0000000000..0088cdc50b
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/IpOverEthernetAddressDataTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class IpOverEthernetAddressDataTest {
+ IpOverEthernetAddressData ipOverEthernetAddressData = new IpOverEthernetAddressData();
+
+ @Test
+ public void getMacAddress() {
+ ipOverEthernetAddressData.getMacAddress();
+ }
+
+ @Test
+ public void setMacAddress() {
+ ipOverEthernetAddressData.setMacAddress("4e:86:9f:62:c1:bf");
+ }
+
+ @Test
+ public void getIpAddresses() {
+ ipOverEthernetAddressData.getIpAddresses();
+ }
+
+ @Test
+ public void setIpAddresses() {
+ ipOverEthernetAddressData.setIpAddresses(new List<IpAddresses>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<IpAddresses> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(IpAddresses ipAddresses) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends IpAddresses> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends IpAddresses> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public IpAddresses get(int index) {
+ return null;
+ }
+
+ @Override
+ public IpAddresses set(int index, IpAddresses element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, IpAddresses element) {
+
+ }
+
+ @Override
+ public IpAddresses remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<IpAddresses> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<IpAddresses> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<IpAddresses> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java
new file mode 100644
index 0000000000..e447c85ee7
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinkTest.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class LinkTest {
+ Link link = new Link();
+
+ @Test
+ public void getHref() {
+ link.getHref();
+ }
+
+ @Test
+ public void setHref() {
+ link.setHref("dummy href");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java
new file mode 100644
index 0000000000..aef87c47b1
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LinksTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class LinksTest {
+ Links links = new Links();
+
+ @Test
+ public void getSelf() {
+ links.getSelf();
+ }
+
+ @Test
+ public void setSelf() {
+ links.setSelf(new Link());
+ }
+
+ @Test
+ public void getNsInstance() {
+ links.getNsInstance();
+ }
+
+ @Test
+ public void setNsInstance() {
+ links.setNsInstance(new Link());
+ }
+
+ @Test
+ public void getCancel() {
+ links.getCancel();
+ }
+
+ @Test
+ public void setCancel() {
+ links.setCancel(new Link());
+ }
+
+ @Test
+ public void getRetry() {
+ links.getRetry();
+ }
+
+ @Test
+ public void setRetry() {
+ links.setRetry(new Link());
+ }
+
+ @Test
+ public void getRollback() {
+ links.getRollback();
+ }
+
+ @Test
+ public void setRollback() {
+ links.setRollback(new Link());
+ }
+
+ @Test
+ public void getContinues() {
+ links.getContinues();
+ }
+
+ @Test
+ public void setContinues() {
+ links.setContinues(new Link());
+ }
+
+ @Test
+ public void getFail() {
+ links.getFail();
+ }
+
+ @Test
+ public void setFail() {
+ links.setFail(new Link());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java
new file mode 100644
index 0000000000..e68b12a626
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/LocationConstraintsTest.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class LocationConstraintsTest {
+ LocationConstraints locationConstraints = new LocationConstraints();
+
+ @Test
+ public void getCountryCode() {
+ locationConstraints.getCountryCode();
+ }
+
+ @Test
+ public void setCountryCode() {
+ locationConstraints.setCountryCode("IND");
+
+ }
+
+ @Test
+ public void getCivicAddressElement() {
+ locationConstraints.getCivicAddressElement();
+ }
+
+ @Test
+ public void setCivicAddressElement() {
+ locationConstraints.setCivicAddressElement(new CivicAddressElement());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java
new file mode 100644
index 0000000000..c300923857
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ModifyVnfInfoDataTest.java
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.HashMap;
+import static org.junit.Assert.*;
+
+public class ModifyVnfInfoDataTest {
+ ModifyVnfInfoData modifyVnfInfoData = new ModifyVnfInfoData();
+
+ @Test
+ public void getVnfInstanceId() {
+ modifyVnfInfoData.getVnfInstanceId();
+ }
+
+ @Test
+ public void setVnfInstanceId() {
+ modifyVnfInfoData.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfInstanceName() {
+ modifyVnfInfoData.getVnfInstanceName();
+ }
+
+ @Test
+ public void setVnfInstanceName() {
+ modifyVnfInfoData.setVnfInstanceName("Dummy vnfInstanceName");
+ }
+
+ @Test
+ public void getVnfInstanceDescription() {
+ modifyVnfInfoData.getVnfInstanceDescription();
+ }
+
+ @Test
+ public void setVnfInstanceDescription() {
+ modifyVnfInfoData.setVnfInstanceDescription("Dummy vnfInstanceDescription");
+ }
+
+ @Test
+ public void getVnfPkgId() {
+ modifyVnfInfoData.getVnfPkgId();
+ }
+
+ @Test
+ public void setVnfPkgId() {
+ modifyVnfInfoData.setVnfPkgId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfConfigurableProperties() {
+ modifyVnfInfoData.getVnfConfigurableProperties();
+ }
+
+ @Test
+ public void setVnfConfigurableProperties() {
+ modifyVnfInfoData.setVnfConfigurableProperties(new HashMap<>());
+ }
+
+ @Test
+ public void getMetadata() {
+ modifyVnfInfoData.getMetadata();
+ }
+
+ @Test
+ public void setMetadata() {
+ modifyVnfInfoData.setMetadata(new HashMap<>());
+ }
+
+ @Test
+ public void getExtensions() {
+ modifyVnfInfoData.getExtensions();
+ }
+
+ @Test
+ public void setExtensions() {
+ modifyVnfInfoData.setExtensions(new HashMap<>());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java
new file mode 100644
index 0000000000..f5d485a8c7
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/NsLcmOpOccTest.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import org.onap.so.adapters.vfc.constant.CommonConstant;
+import java.time.LocalDateTime;
+import java.util.Date;
+import static org.junit.Assert.*;
+
+public class NsLcmOpOccTest {
+ NsLcmOpOcc nsLcmOpOcc = new NsLcmOpOcc();
+
+ @Test
+ public void getLcmOperationType() {
+ nsLcmOpOcc.getLcmOperationType();
+ }
+
+ @Test
+ public void setLcmOperationType() {
+ nsLcmOpOcc.setLcmOperationType(CommonConstant.lcmOperationType.INSTANTIATE);
+ }
+
+ @Test
+ public void getCancelMode() {
+ nsLcmOpOcc.getCancelMode();
+ }
+
+ @Test
+ public void setCancelMode() {
+ nsLcmOpOcc.setCancelMode(CommonConstant.cancelMode.GRACEFUL);
+ }
+
+ @Test
+ public void getOperationState() {
+ nsLcmOpOcc.getOperationState();
+ }
+
+ @Test
+ public void setOperationState() {
+ nsLcmOpOcc.setOperationState(CommonConstant.operationState.COMPLETED);
+ }
+
+ @Test
+ public void getId() {
+ nsLcmOpOcc.getId();
+ }
+
+ @Test
+ public void setId() {
+ nsLcmOpOcc.setId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getStatusEnteredTime() {
+ nsLcmOpOcc.getStatusEnteredTime();
+ }
+
+ @Test
+ public void setStatusEnteredTime() {
+ nsLcmOpOcc.setStatusEnteredTime(LocalDateTime.now().toString());
+ }
+
+ @Test
+ public void getNsInstanceId() {
+ nsLcmOpOcc.getNsInstanceId();
+ }
+
+ @Test
+ public void setNsInstanceId() {
+ nsLcmOpOcc.setNsInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getStartTime() {
+ nsLcmOpOcc.getStartTime();
+ }
+
+ @Test
+ public void setStartTime() {
+ nsLcmOpOcc.setStartTime(LocalDateTime.now().toString());
+ }
+
+ @Test
+ public void getAutomaticInvocation() {
+ nsLcmOpOcc.getAutomaticInvocation();
+ }
+
+ @Test
+ public void setAutomaticInvocation() {
+ nsLcmOpOcc.setAutomaticInvocation(true);
+ }
+
+ @Test
+ public void getOperationParams() {
+ nsLcmOpOcc.getOperationParams();
+ }
+
+ @Test
+ public void setOperationParams() {
+ nsLcmOpOcc.setOperationParams("Dummy operationParams");
+ }
+
+ @Test
+ public void getCancelPending() {
+ nsLcmOpOcc.getCancelPending();
+ }
+
+ @Test
+ public void setCancelPending() {
+ nsLcmOpOcc.setCancelPending(true);
+ }
+
+ @Test
+ public void getError() {
+ nsLcmOpOcc.getError();
+ }
+
+ @Test
+ public void setError() {
+ nsLcmOpOcc.setError(new ProblemDetails());
+ }
+
+ @Test
+ public void getLinks() {
+ nsLcmOpOcc.getLinks();
+ }
+
+ @Test
+ public void setLinks() {
+ nsLcmOpOcc.setLinks(new Links());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java
new file mode 100644
index 0000000000..e0455b0728
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ParamsForVnfTest.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.HashMap;
+import static org.junit.Assert.*;
+
+public class ParamsForVnfTest {
+
+ ParamsForVnf paramsForVnf = new ParamsForVnf();
+
+ @Test
+ public void getVnfProfileId() {
+ paramsForVnf.getVnfProfileId();
+ }
+
+ @Test
+ public void setVnfProfileId() {
+ paramsForVnf.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getAdditionalParams() {
+ paramsForVnf.getAdditionalParams();
+ }
+
+ @Test
+ public void setAdditionalParams() {
+ paramsForVnf.setAdditionalParams(new HashMap<>());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java
new file mode 100644
index 0000000000..c586c7eb65
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/PnfExtCpDataTest.java
@@ -0,0 +1,168 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class PnfExtCpDataTest {
+ PnfExtCpData pnfExtCpData = new PnfExtCpData();
+
+ @Test
+ public void getCpInstanceI16() {
+ pnfExtCpData.getCpInstanceI16();
+ }
+
+ @Test
+ public void setCpInstanceI16() {
+ pnfExtCpData.setCpInstanceI16("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getCpdId() {
+ pnfExtCpData.getCpdId();
+ }
+
+ @Test
+ public void setCpdId() {
+ pnfExtCpData.setCpdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getCpProtocolData() {
+ pnfExtCpData.getCpProtocolData();
+ }
+
+ @Test
+ public void setCpProtocolData() {
+ pnfExtCpData.setCpProtocolData(new List<CpProtocolData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<CpProtocolData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(CpProtocolData cpProtocolData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends CpProtocolData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends CpProtocolData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public CpProtocolData get(int index) {
+ return null;
+ }
+
+ @Override
+ public CpProtocolData set(int index, CpProtocolData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, CpProtocolData element) {
+
+ }
+
+ @Override
+ public CpProtocolData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<CpProtocolData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<CpProtocolData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<CpProtocolData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java
new file mode 100644
index 0000000000..ddea6cca40
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ProblemDetailsTest.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ProblemDetailsTest {
+ ProblemDetails problemDetails = new ProblemDetails();
+
+ @Test
+ public void getType() {
+ problemDetails.getType();
+ }
+
+ @Test
+ public void setType() {
+ problemDetails.setType("Dummy Type");
+ }
+
+ @Test
+ public void getTitle() {
+ problemDetails.getTitle();
+ }
+
+ @Test
+ public void setTitle() {
+ problemDetails.setTitle("Dummy Title");
+ }
+
+ @Test
+ public void getStatus() {
+ problemDetails.getStatus();
+ }
+
+ @Test
+ public void setStatus() {
+ problemDetails.setStatus(200);
+ }
+
+ @Test
+ public void getDetail() {
+ problemDetails.getDetail();
+ }
+
+ @Test
+ public void setDetail() {
+ problemDetails.setTitle("Dummy Title");
+ }
+
+ @Test
+ public void getInstance() {
+ problemDetails.getInstance();
+ }
+
+ @Test
+ public void setInstance() {
+ problemDetails.setInstance("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java
new file mode 100644
index 0000000000..9c4a0295e6
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceChangesTest.java
@@ -0,0 +1,773 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class ResourceChangesTest {
+ ResourceChanges resourceChanges = new ResourceChanges();
+
+ @Test
+ public void getAffectedVnfs() {
+ resourceChanges.getAffectedVnfs();
+ }
+
+ @Test
+ public void setAffectedVnfs() {
+ resourceChanges.setAffectedVnfs(new List<AffectedVnf>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedVnf> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedVnf affectedVnf) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedVnf> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedVnf> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedVnf get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedVnf set(int index, AffectedVnf element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedVnf element) {
+
+ }
+
+ @Override
+ public AffectedVnf remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedVnf> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedVnf> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedVnf> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAffectedPnfs() {
+ resourceChanges.getAffectedPnfs();
+ }
+
+ @Test
+ public void setAffectedPnfs() {
+ resourceChanges.setAffectedPnfs(new List<AffectedPnf>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedPnf> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedPnf affectedPnf) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedPnf> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedPnf> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedPnf get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedPnf set(int index, AffectedPnf element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedPnf element) {
+
+ }
+
+ @Override
+ public AffectedPnf remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedPnf> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedPnf> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedPnf> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAffectedVls() {
+ resourceChanges.getAffectedVls();
+ }
+
+ @Test
+ public void setAffectedVls() {
+ resourceChanges.setAffectedVls(new List<AffectedVirtualLink>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedVirtualLink> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedVirtualLink affectedVirtualLink) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedVirtualLink> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedVirtualLink> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedVirtualLink get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedVirtualLink set(int index, AffectedVirtualLink element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedVirtualLink element) {
+
+ }
+
+ @Override
+ public AffectedVirtualLink remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedVirtualLink> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedVirtualLink> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedVirtualLink> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAffectedVnffgs() {
+ resourceChanges.getAffectedVnffgs();
+ }
+
+ @Test
+ public void setAffectedVnffgs() {
+ resourceChanges.setAffectedVnffgs(new List<AffectedVnffg>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedVnffg> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedVnffg affectedVnffg) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedVnffg> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedVnffg> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedVnffg get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedVnffg set(int index, AffectedVnffg element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedVnffg element) {
+
+ }
+
+ @Override
+ public AffectedVnffg remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedVnffg> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedVnffg> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedVnffg> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAffectedNss() {
+ resourceChanges.getAffectedNss();
+ }
+
+ @Test
+ public void setAffectedNss() {
+ resourceChanges.setAffectedNss(new List<AffectedNs>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedNs> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedNs affectedNs) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedNs> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedNs> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedNs get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedNs set(int index, AffectedNs element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedNs element) {
+
+ }
+
+ @Override
+ public AffectedNs remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedNs> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedNs> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedNs> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+
+ @Test
+ public void getAffectedSaps() {
+ resourceChanges.getAffectedSaps();
+ }
+
+ @Test
+ public void setAffectedSaps() {
+ resourceChanges.setAffectedSaps(new List<AffectedSap>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<AffectedSap> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(AffectedSap affectedSap) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends AffectedSap> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends AffectedSap> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public AffectedSap get(int index) {
+ return null;
+ }
+
+ @Override
+ public AffectedSap set(int index, AffectedSap element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, AffectedSap element) {
+
+ }
+
+ @Override
+ public AffectedSap remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<AffectedSap> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<AffectedSap> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<AffectedSap> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java
new file mode 100644
index 0000000000..6390c5afbd
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/ResourceHandleTest.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ResourceHandleTest {
+ ResourceHandle resourceHandle = new ResourceHandle();
+
+ @Test
+ public void getVimId() {
+ resourceHandle.getVimId();
+ }
+
+ @Test
+ public void setVimId() {
+ resourceHandle.setVimId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getResourceProviderId() {
+ resourceHandle.getResourceProviderId();
+ }
+
+ @Test
+ public void setResourceProviderId() {
+ resourceHandle.setResourceProviderId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getResourceId() {
+ resourceHandle.getResourceId();
+ }
+
+ @Test
+ public void setResourceId() {
+ resourceHandle.setResourceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVimLevelResourceType() {
+ resourceHandle.getVimLevelResourceType();
+ }
+
+ @Test
+ public void setVimLevelResourceType() {
+ resourceHandle.setVimLevelResourceType("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java
new file mode 100644
index 0000000000..2a455994b8
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/SapDataTest.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.List;
+import java.util.ListIterator;
+import static org.junit.Assert.*;
+
+public class SapDataTest {
+
+ SapData sapData = new SapData();
+
+ @Test
+ public void getSapdId() {
+ sapData.getSapdId();
+ }
+
+ @Test
+ public void setSapdId() {
+ sapData.setSapdId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getSapName() {
+ sapData.getSapName();
+ }
+
+ @Test
+ public void setSapName() {
+ sapData.setSapName("Dummy SapName");
+ }
+
+ @Test
+ public void getDescription() {
+ sapData.getDescription();
+ }
+
+ @Test
+ public void setDescription() {
+ sapData.setDescription("Dummy Description");
+ }
+
+ @Test
+ public void getSapProtocolData() {
+ sapData.getSapProtocolData();
+ }
+
+ @Test
+ public void setSapProtocolData() {
+ sapData.setSapProtocolData(new List<CpProtocolData>() {
+ @Override
+ public int size() {
+ return 0;
+ }
+
+ @Override
+ public boolean isEmpty() {
+ return false;
+ }
+
+ @Override
+ public boolean contains(Object o) {
+ return false;
+ }
+
+ @Override
+ public Iterator<CpProtocolData> iterator() {
+ return null;
+ }
+
+ @Override
+ public Object[] toArray() {
+ return new Object[0];
+ }
+
+ @Override
+ public <T> T[] toArray(T[] a) {
+ return null;
+ }
+
+ @Override
+ public boolean add(CpProtocolData cpProtocolData) {
+ return false;
+ }
+
+ @Override
+ public boolean remove(Object o) {
+ return false;
+ }
+
+ @Override
+ public boolean containsAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(Collection<? extends CpProtocolData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean addAll(int index, Collection<? extends CpProtocolData> c) {
+ return false;
+ }
+
+ @Override
+ public boolean removeAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public boolean retainAll(Collection<?> c) {
+ return false;
+ }
+
+ @Override
+ public void clear() {
+
+ }
+
+ @Override
+ public CpProtocolData get(int index) {
+ return null;
+ }
+
+ @Override
+ public CpProtocolData set(int index, CpProtocolData element) {
+ return null;
+ }
+
+ @Override
+ public void add(int index, CpProtocolData element) {
+
+ }
+
+ @Override
+ public CpProtocolData remove(int index) {
+ return null;
+ }
+
+ @Override
+ public int indexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public int lastIndexOf(Object o) {
+ return 0;
+ }
+
+ @Override
+ public ListIterator<CpProtocolData> listIterator() {
+ return null;
+ }
+
+ @Override
+ public ListIterator<CpProtocolData> listIterator(int index) {
+ return null;
+ }
+
+ @Override
+ public List<CpProtocolData> subList(int fromIndex, int toIndex) {
+ return null;
+ }
+ });
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java
new file mode 100644
index 0000000000..b9bdfe3f6e
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfInstanceDataTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class VnfInstanceDataTest {
+ VnfInstanceData vnfInstanceData = new VnfInstanceData();
+
+ @Test
+ public void getVnfInstanceId() {
+ vnfInstanceData.getVnfInstanceId();
+ }
+
+ @Test
+ public void setVnfInstanceId() {
+ vnfInstanceData.setVnfInstanceId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getVnfProfileId() {
+ vnfInstanceData.getVnfProfileId();
+ }
+
+ @Test
+ public void setVnfProfileId() {
+ vnfInstanceData.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java
new file mode 100644
index 0000000000..b8f9b8e3e2
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/model/VnfLocationConstraintTest.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.model;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class VnfLocationConstraintTest {
+ VnfLocationConstraint vnfLocationConstraint = new VnfLocationConstraint();
+
+ @Test
+ public void getVnfProfileId() {
+ vnfLocationConstraint.getVnfProfileId();
+ }
+
+ @Test
+ public void setVnfProfileId() {
+ vnfLocationConstraint.setVnfProfileId("c9f0a95e-dea0-4698-96e5-5a79bc5a233d");
+ }
+
+ @Test
+ public void getLocationConstraints() {
+ vnfLocationConstraint.getLocationConstraints();
+ }
+
+ @Test
+ public void setLocationConstraints() {
+ vnfLocationConstraint.setLocationConstraints(new LocationConstraint());
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java
new file mode 100644
index 0000000000..799283ddb4
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/rest/VfcManagerSol005Test.java
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.adapters.vfc.rest;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InjectMocks;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+import org.onap.so.adapters.vfc.exceptions.ApplicationException;
+import org.onap.so.adapters.vfc.model.NSResourceInputParameter;
+import org.onap.so.adapters.vfc.model.RestfulResponse;
+import org.onap.so.adapters.vfc.util.JsonUtil;
+import org.onap.so.adapters.vfc.util.RestfulUtil;
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
+import org.onap.so.db.request.beans.OperationStatus;
+import org.onap.so.db.request.beans.ResourceOperationStatus;
+import org.onap.so.db.request.data.repository.InstanceNfvoMappingRepository;
+import org.onap.so.db.request.data.repository.OperationStatusRepository;
+import org.onap.so.db.request.data.repository.ResourceOperationStatusRepository;
+import org.springframework.test.context.junit4.SpringRunner;
+import java.io.File;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import static org.mockito.Mockito.when;
+
+@RunWith(SpringRunner.class)
+public class VfcManagerSol005Test {
+ @InjectMocks
+ VfcManagerSol005 vfcManagerSol005;
+
+ @Mock
+ InstanceNfvoMappingRepository instanceNfvoMappingRepository;
+
+ @Mock
+ ResourceOperationStatusRepository resourceOperationStatusRepository;
+
+ @Mock
+ OperationStatusRepository operationStatusRepository;
+
+ @Mock
+ RestfulUtil restfulUtil;
+
+ OperationStatus operationStatus = new OperationStatus();
+
+ InstanceNfvoMapping instanceNfvoMapping = new InstanceNfvoMapping();
+ RestfulResponse restfulResponse = new RestfulResponse();
+ RestfulResponse vfcrestfulResponse = new RestfulResponse();
+ NSResourceInputParameter nsResourceInputParameter = new NSResourceInputParameter();
+ ResourceOperationStatus resourceOperationStatus = new ResourceOperationStatus();
+
+ @Test
+ public void createNs() throws ApplicationException, Exception {
+ restfulResponse.setStatus(200);
+ ClassLoader classLoader = ClassLoader.getSystemClassLoader();
+
+ File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
+ String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
+ file = new File(classLoader.getResource("json/aainfvoResponse.json").getFile());
+ content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ restfulResponse.setResponseContent(content);
+ // restfulResponse.setResponseContent("{\"nfvoId\":\"6ee79fe2-9579-475a-9bb9-20cf4358a19e\",\"name\":\"external_nfvo\",\"api-root\":\"xyz\",\"vendor\":\"vz\",\"version\":\"v1.0\",\"url\":\"http://sample.com/\",\"userName\":\"admin\",\"password\":\"sacjnasnc\"}");
+ file = new File(classLoader.getResource("json/createNsSol005Response.json").getFile());
+ content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ vfcrestfulResponse.setStatus(202);
+ vfcrestfulResponse.setResponseContent(content);
+ // vfcrestfulResponse.setResponseContent("{\"_links\": {\"heal\": {\"href\": \"\"}, \"instantiate\": {\"href\":
+ // \"\"}, \"nestedNsInstances\": {\"href\": \"\"}, \"scale\": {\"href\": \"\"}, \"self\": {\"href\": \"\"},
+ // \"terminate\": {\"href\": \"\"}, \"update\": {\"href\": \"\"}}, \"additionalAffinityOrAntiAffiniityRule\":
+ // [{\"Scope\": \"\", \"affinityOrAntiAffiinty\": \"\", \"vnfInstanceId\": [], \"vnfProfileId\": [], \"vnfdId\":
+ // []}], \"flavourId\": \"\", \"id\": \"c9f0a95e-dea0-4698-96e5-5a79bc5a233d\", \"nestedNsInstanceId\": [],
+ // \"nsInstanceDescription\": \"\", \"nsInstanceName\": \"\", \"nsScaleStatus\": [{\"nsScaleLevelId\": \"\",
+ // \"nsScalingAspectId\": \"\"}], \"nsState\": \"\", \"nsdId\": \"\", \"nsdInfoId\": \"\", \"pnfInfo\":
+ // [{\"cpInfo\": [{\"cpInstanceId\": \"\", \"cpProtocolData\": {\"ipOverEthernet\": {\"ipAddresses\":
+ // {\"addressRange\": {\"maxAddress\": \"\", \"minAddress\": \"\"}, \"fixedAddresses\": \"\",
+ // \"numDynamicAddresses\": 1, \"subnetId\": \"\", \"type\": \"\"}, \"macAddress\": {}}, \"layerProtocol\":
+ // \"IP_OVER_ETHERNET\"}, \"cpdId\": \"\"}], \"pnfId\": \"\", \"pnfName\": \"\", \"pnfProfileId\": \"\",
+ // \"pnfdId\": \"\", \"pnfdInfoId\": \"\"}], \"sapInfo\": [{\"description\": \"\", \"id\": \"\", \"sapName\":
+ // \"\", \"sapProtocolInfo\": {\"ipOverEthernet\": {\"ipAddresses\": {\"addressRange\": {\"maxAddress\": \"\",
+ // \"minAddress\": \"\"}, \"fixedAddresses\": \"\", \"numDynamicAddresses\": 1, \"subnetId\": \"\", \"type\":
+ // \"\"}, \"macAddress\": \"\"}, \"layerProtocol\": \"IP_OVER_ETHERNET\"}, \"sapdId\": \"\"}],
+ // \"virtualLinkInfo\": [{\"id\": \"\", \"linkPort\": [{\"id\": \"\", \"resourceHandle\": {\"resourceId\": \"\",
+ // \"resourceProviderId\": \"\", \"vimId\": \"\", \"vimLevelResourceType\": \"\"}}], \"nsVirtualLinkDescId\":
+ // \"\", \"resourceHandle\": [{\"resourceId\": \"\", \"resourceProviderId\": \"\", \"vimId\": \"\",
+ // \"vimLevelResourceType\": \"\"}]}], \"vnfInstance\": [{\"vnfInstanceId\": \"\", \"vnfProfileId\": \"\"}],
+ // \"vnffgInfo\": [{\"id\": \"\", \"nfpInfo\": [{\"description\": \"\", \"id\": \"\", \"nfpName\": \"\",
+ // \"nfpRule\": {\"destinationIpAddressPrefix\": \"\", \"destinationPortRange\": \"\", \"dscp\": \"\",
+ // \"etherDestinationAddress\": \"\", \"etherSourceAddress\": \"\", \"etherType\": \"\", \"extendedCriteria\":
+ // [{\"length\": 1, \"startingPoint\": 1, \"value\": \"\"}], \"protocol\": \"\", \"sourceIpAddressPrefix\":
+ // \"\", \"sourcePortRange\": \"\", \"vlanTag\": []}, \"nfpState\": \"\", \"nfpdId\": \"\", \"nscpHandle\":
+ // [{\"nsInstanceId\": \"\", \"nsSapInstanceId\": \"\", \"pnfExtCpInstanceId\": \"\", \"pnfInfoId\": \"\",
+ // \"vnfExtCpInstanceId\": \"\", \"vnfInstanceId\": \"\"}], \"totalCp\": 1}], \"nsCpHandle\":
+ // [{\"nsInstanceId\": \"\", \"nsSapInstanceId\": \"\", \"pnfExtCpInstanceId\": \"\", \"pnfInfoId\": \"\",
+ // \"vnfExtCpInstanceId\": \"\", \"vnfInstanceId\": \"\"}], \"nsVirtualLinkInfoId\": [], \"pnfInfoId\": [],
+ // \"vnfInstanceId\": [], \"vnffgdId\": \"\"}]}");
+
+ resourceOperationStatus.setStatus("processing");
+ resourceOperationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
+ resourceOperationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
+ resourceOperationStatus
+ .setResourceTemplateUUID(nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
+ when(instanceNfvoMappingRepository.save(instanceNfvoMapping)).thenReturn(instanceNfvoMapping);
+ when(restfulUtil.getNfvoFromAAI("b1bb0ce7-2222-4fa7-95ed-4840d70a1101")).thenReturn(restfulResponse);
+ when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString(), Mockito.anyMap()))
+ .thenReturn(vfcrestfulResponse);
+ when(resourceOperationStatusRepository.save(resourceOperationStatus)).thenReturn(resourceOperationStatus);
+ vfcManagerSol005.createNs(nsResourceInputParameter);
+
+ }
+
+ @Test
+ public void terminateNs() throws Exception {
+ instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
+ instanceNfvoMapping.setPassword("sacjnasnc");
+ instanceNfvoMapping.setUsername("admin");
+ instanceNfvoMapping.setNfvoName("external_nfvo");
+ instanceNfvoMapping.setEndpoint("http://sample.com/");
+ instanceNfvoMapping.setApiRoot("xyz");
+ String nsInstanceId = "c9f0a95e-dea0-4698-96e5-5a79bc5a233d";
+ ClassLoader classLoader = ClassLoader.getSystemClassLoader();
+ File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
+ String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
+ Map<String, String> header = new HashMap<>();
+ header.put("Location", "http://192.168.10.57:5000/ns_lcm_op_ops/12204a12-7da2-4ddf-8c2f-992a1a1acebf");
+ vfcrestfulResponse.setStatus(202);
+ vfcrestfulResponse.setResponseContent(null);
+ vfcrestfulResponse.setRespHeaderMap(header);
+ when(instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId)).thenReturn(instanceNfvoMapping);
+ when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
+ .thenReturn(vfcrestfulResponse);
+ vfcManagerSol005.terminateNs(nsResourceInputParameter.getNsOperationKey(), nsInstanceId);
+ }
+
+ @Test
+ public void getNsProgress() throws Exception {
+ String jobId = "12204a12-7da2-4ddf-8c2f-992a1a1acebf";
+ instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
+ instanceNfvoMapping.setPassword("sacjnasnc");
+ instanceNfvoMapping.setUsername("admin");
+ instanceNfvoMapping.setNfvoName("external_nfvo");
+ instanceNfvoMapping.setEndpoint("http://sample.com/");
+ instanceNfvoMapping.setApiRoot("xyz");
+ instanceNfvoMapping.setJobId(jobId);
+ ClassLoader classLoader = ClassLoader.getSystemClassLoader();
+ File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
+ String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
+ operationStatus.setProgress("40");
+ operationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
+ operationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
+ ResourceOperationStatus resourceOperationStatus =
+ new ResourceOperationStatus(nsResourceInputParameter.getNsOperationKey().getServiceId(),
+ nsResourceInputParameter.getNsOperationKey().getOperationId(),
+ nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
+ file = new File(classLoader.getResource("json/lcmOperRsp.json").getFile());
+ content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ vfcrestfulResponse.setStatus(202);
+ vfcrestfulResponse.setResponseContent(content);
+ List<ResourceOperationStatus> resourceOperationStatuses = new ArrayList<>();
+ resourceOperationStatuses.add(resourceOperationStatus);
+ when(instanceNfvoMappingRepository.findOneByJobId(jobId)).thenReturn(instanceNfvoMapping);
+ when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
+ .thenReturn(vfcrestfulResponse);
+ when(operationStatusRepository.findOneByServiceIdAndOperationId(
+ nsResourceInputParameter.getNsOperationKey().getServiceId(),
+ nsResourceInputParameter.getNsOperationKey().getOperationId())).thenReturn(operationStatus);
+ when(resourceOperationStatusRepository.findByServiceIdAndOperationId(
+ nsResourceInputParameter.getNsOperationKey().getServiceId(),
+ nsResourceInputParameter.getNsOperationKey().getOperationId())).thenReturn(resourceOperationStatuses);
+ when(operationStatusRepository.save(operationStatus)).thenReturn(operationStatus);
+ vfcManagerSol005.getNsProgress(nsResourceInputParameter.getNsOperationKey(), jobId);
+
+ }
+
+ @Test
+ public void instantiateNs() throws Exception {
+ String nsInstanceId = "c9f0a95e-dea0-4698-96e5-5a79bc5a233d";
+ ClassLoader classLoader = ClassLoader.getSystemClassLoader();
+ File file = new File(classLoader.getResource("json/createNsReq.json").getFile());
+ String content = new String(Files.readAllBytes(file.toPath())).replace("\n", "");
+ nsResourceInputParameter = JsonUtil.unMarshal(content, NSResourceInputParameter.class);
+ instanceNfvoMapping.setInstanceId("b1bb0ce7-2222-4fa7-95ed-4840d70a1101");
+ instanceNfvoMapping.setPassword("sacjnasnc");
+ instanceNfvoMapping.setUsername("admin");
+ instanceNfvoMapping.setNfvoName("external_nfvo");
+ instanceNfvoMapping.setEndpoint("http://sample.com/");
+ instanceNfvoMapping.setApiRoot("xyz");
+ resourceOperationStatus.setStatus("processing");
+ resourceOperationStatus.setOperationId(nsResourceInputParameter.getNsOperationKey().getOperationId());
+ resourceOperationStatus.setServiceId(nsResourceInputParameter.getNsOperationKey().getServiceId());
+ resourceOperationStatus
+ .setResourceTemplateUUID(nsResourceInputParameter.getNsOperationKey().getNodeTemplateUUID());
+ Map<String, String> header = new HashMap<>();
+ header.put("Location", "http://192.168.10.57:5000/ns_lcm_op_ops/12204a12-7da2-4ddf-8c2f-992a1a1acebf");
+ vfcrestfulResponse.setStatus(202);
+ vfcrestfulResponse.setResponseContent(null);
+ vfcrestfulResponse.setRespHeaderMap(header);
+ when(instanceNfvoMappingRepository.findOneByInstanceId(nsInstanceId)).thenReturn(instanceNfvoMapping);
+ when(restfulUtil.send(Mockito.anyString(), Mockito.anyString(), Mockito.anyString()))
+ .thenReturn(vfcrestfulResponse);
+ when(resourceOperationStatusRepository.save(resourceOperationStatus)).thenReturn(resourceOperationStatus);
+ when(instanceNfvoMappingRepository.save(instanceNfvoMapping)).thenReturn(instanceNfvoMapping);
+ vfcManagerSol005.instantiateNs(nsInstanceId, nsResourceInputParameter);
+
+ }
+}
diff --git a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java
index c388016ab4..4b6baa5cf4 100644
--- a/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java
+++ b/adapters/mso-vfc-adapter/src/test/java/org/onap/so/adapters/vfc/util/RestfulUtilTest.java
@@ -22,6 +22,8 @@ package org.onap.so.adapters.vfc.util;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
+import org.apache.http.Header;
+import org.apache.http.message.BasicHeader;
import org.apache.http.StatusLine;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpDelete;
@@ -59,21 +61,27 @@ public class RestfulUtilTest {
private HttpEntity httpEntity;
private HttpResponse httpResponse;
private StatusLine statusLine;
+ private Header httpResponseHeader;
@Before
public void setUp() {
httpEntity = mock(HttpEntity.class);
httpResponse = mock(HttpResponse.class);
statusLine = mock(StatusLine.class);
+ httpResponseHeader = mock(Header.class);
}
private void sendInit() throws IOException {
+ Header[] headerList = new BasicHeader[2];
+ headerList[0] = new BasicHeader("Content-Type", "application/json");
+ headerList[1] = new BasicHeader("cache-control", "no-cache");
doReturn("https://testHost/").when(restfulUtil).getMsbHost();
when(statusLine.getStatusCode()).thenReturn(HttpStatus.OK.value());
when(httpResponse.getStatusLine()).thenReturn(statusLine);
when(httpResponse.getEntity()).thenReturn(httpEntity);
+ when(httpResponse.getAllHeaders()).thenReturn(headerList);
}
@Test
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json b/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json
new file mode 100644
index 0000000000..35047a9c21
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/resources/json/aainfvoResponse.json
@@ -0,0 +1,10 @@
+{
+ "nfvoId":"6ee79fe2-9579-475a-9bb9-20cf4358a19e",
+ "name":"external_nfvo",
+ "api-root":"xyz",
+ "vendor":"vz",
+ "version":"v1.0",
+ "url":"http://sample.com/",
+ "userName":"admin",
+ "password":"sacjnasnc"
+} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json
index 047c81081e..aec8ae809d 100644
--- a/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json
+++ b/adapters/mso-vfc-adapter/src/test/resources/json/createNsReq.json
@@ -1,32 +1,56 @@
{
- "nsServiceName":"vIMS",
- "nsServiceDescription":"vIMS NS",
+ "nsServiceName":"vcpe_e2e_vnf_test2",
+ "nsServiceDescription":"null",
+ "nsServiceModelUUID":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
"nsOperationKey":{
- "globalSubscriberId":"9b9f02c0-298b-458a-bc9c-be3692e4f350",
- "serviceType":"service",
- "serviceId":"9b9f02c0-298b-458a-bc9c-be3692e4f351",
- "operationId":"9b9f02c0-298b-458a-bc9c-be3692e4f352",
- "nodeTemplateUUID":"9b9f02c0-298b-458a-bc9c-be3692e4f353"
+ "globalSubscriberId":"Demonstration",
+ "serviceType":"vCPE",
+ "serviceId":"996fadbb-e806-4a19-b0e5-3454ad6ac29e",
+ "operationId":"1f1dd6b2-b027-4008-a9df-3b6c8274fb24",
+ "nodeTemplateUUID":"4d3a835c-29c8-4a63-83a4-50de5f7ffe16"
},
"nsParameters":{
"locationConstraints":[
{
- "vnfProfileId":"zte-CSCF-1.0",
"locationConstraints":{
- "vimId":"1"
- }
+ "vimId":"CloudOwner_regionOne"
+ },
+ "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1101"
+ },
+ {
+ "locationConstraints":{
+ "vimId":"CloudOwner_regionOne"
+ },
+ "vnfProfileId":"0408f076-e6c0-4c82-9940-272fddbb82de"
+ },
+ {
+ "locationConstraints":{
+ "vimId":"CloudOwner_regionOne"
+ },
+ "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1100"
+ },
+ {
+ "locationConstraints":{
+ "vimId":"CloudOwner_regionOne"
+ },
+ "vnfProfileId":"b1bb0ce7-2222-4fa7-95ed-4840d70a1102"
+ },
+ {
+ "locationConstraints":{
+ "vimId":"CloudOwner_regionOne"
+ },
+ "vnfProfileId":"3fca3543-07f5-492f-812c-ed462e4f94f4"
}
],
"additionalParamForNs":{
- "externalDataNetworkName":"Flow_out_net",
- "m6000_mng_ip":"192.168.20.2",
- "externalCompanyFtpDataNetworkName":"Flow_out_net",
- "externalPluginManageNetworkName":"plugin_net_2014",
- "externalManageNetworkName":"mng_net_2017",
- "sfc_data_network":"sfc_data_net_2016",
- "NatIpRange":"210.1.1.10-210.1.1.20",
- "location":"4050083f-465f-4838-af1e-47a545222ad0",
- "sdncontroller":"9b9f02c0-298b-458a-bc9c-be3692e4f35e"
+ "orchestrator":"",
+ "nfvo":"b1bb0ce7-2222-4fa7-95ed-4840d70a1101",
+ "nf_naming":"true",
+ "multi_stage_design":"false",
+ "availability_zone_max_count":"1",
+ "xyz":"123",
+ "nsd0_providing_service_invariant_uuid":"12204a12-7da2-4ddf-8c2f-992a1a1acebf",
+ "nsd0_providing_service_uuid":"5791dbeb-19d4-43e8-bf44-5b327ccf6bca"
}
}
-} \ No newline at end of file
+}
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json b/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json
new file mode 100644
index 0000000000..938969a87f
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/resources/json/createNsSol005Response.json
@@ -0,0 +1,210 @@
+{
+ "_links":{
+ "heal":{
+ "href":""
+ },
+ "instantiate":{
+ "href":""
+ },
+ "nestedNsInstances":{
+ "href":""
+ },
+ "scale":{
+ "href":""
+ },
+ "self":{
+ "href":""
+ },
+ "terminate":{
+ "href":""
+ },
+ "update":{
+ "href":""
+ }
+ },
+ "additionalAffinityOrAntiAffiniityRule":[
+ {
+ "Scope":"",
+ "affinityOrAntiAffiinty":"",
+ "vnfInstanceId":[
+
+ ],
+ "vnfProfileId":[
+
+ ],
+ "vnfdId":[
+
+ ]
+ }
+ ],
+ "flavourId":"",
+ "id":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
+ "nestedNsInstanceId":[
+
+ ],
+ "nsInstanceDescription":"",
+ "nsInstanceName":"",
+ "nsScaleStatus":[
+ {
+ "nsScaleLevelId":"",
+ "nsScalingAspectId":""
+ }
+ ],
+ "nsState":"",
+ "nsdId":"",
+ "nsdInfoId":"",
+ "pnfInfo":[
+ {
+ "cpInfo":[
+ {
+ "cpInstanceId":"",
+ "cpProtocolData":{
+ "ipOverEthernet":{
+ "ipAddresses":{
+ "addressRange":{
+ "maxAddress":"",
+ "minAddress":""
+ },
+ "fixedAddresses":"",
+ "numDynamicAddresses":1,
+ "subnetId":"",
+ "type":""
+ },
+ "macAddress":{
+
+ }
+ },
+ "layerProtocol":"IP_OVER_ETHERNET"
+ },
+ "cpdId":""
+ }
+ ],
+ "pnfId":"",
+ "pnfName":"",
+ "pnfProfileId":"",
+ "pnfdId":"",
+ "pnfdInfoId":""
+ }
+ ],
+ "sapInfo":[
+ {
+ "description":"",
+ "id":"",
+ "sapName":"",
+ "sapProtocolInfo":{
+ "ipOverEthernet":{
+ "ipAddresses":{
+ "addressRange":{
+ "maxAddress":"",
+ "minAddress":""
+ },
+ "fixedAddresses":"",
+ "numDynamicAddresses":1,
+ "subnetId":"",
+ "type":""
+ },
+ "macAddress":""
+ },
+ "layerProtocol":"IP_OVER_ETHERNET"
+ },
+ "sapdId":""
+ }
+ ],
+ "virtualLinkInfo":[
+ {
+ "id":"",
+ "linkPort":[
+ {
+ "id":"",
+ "resourceHandle":{
+ "resourceId":"",
+ "resourceProviderId":"",
+ "vimId":"",
+ "vimLevelResourceType":""
+ }
+ }
+ ],
+ "nsVirtualLinkDescId":"",
+ "resourceHandle":[
+ {
+ "resourceId":"",
+ "resourceProviderId":"",
+ "vimId":"",
+ "vimLevelResourceType":""
+ }
+ ]
+ }
+ ],
+ "vnfInstance":[
+ {
+ "vnfInstanceId":"",
+ "vnfProfileId":""
+ }
+ ],
+ "vnffgInfo":[
+ {
+ "id":"",
+ "nfpInfo":[
+ {
+ "description":"",
+ "id":"",
+ "nfpName":"",
+ "nfpRule":{
+ "destinationIpAddressPrefix":"",
+ "destinationPortRange":"",
+ "dscp":"",
+ "etherDestinationAddress":"",
+ "etherSourceAddress":"",
+ "etherType":"",
+ "extendedCriteria":[
+ {
+ "length":1,
+ "startingPoint":1,
+ "value":""
+ }
+ ],
+ "protocol":"",
+ "sourceIpAddressPrefix":"",
+ "sourcePortRange":"",
+ "vlanTag":[
+
+ ]
+ },
+ "nfpState":"",
+ "nfpdId":"",
+ "nscpHandle":[
+ {
+ "nsInstanceId":"",
+ "nsSapInstanceId":"",
+ "pnfExtCpInstanceId":"",
+ "pnfInfoId":"",
+ "vnfExtCpInstanceId":"",
+ "vnfInstanceId":""
+ }
+ ],
+ "totalCp":1
+ }
+ ],
+ "nsCpHandle":[
+ {
+ "nsInstanceId":"",
+ "nsSapInstanceId":"",
+ "pnfExtCpInstanceId":"",
+ "pnfInfoId":"",
+ "vnfExtCpInstanceId":"",
+ "vnfInstanceId":""
+ }
+ ],
+ "nsVirtualLinkInfoId":[
+
+ ],
+ "pnfInfoId":[
+
+ ],
+ "vnfInstanceId":[
+
+ ],
+ "vnffgdId":""
+ }
+ ]
+} \ No newline at end of file
diff --git a/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json b/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json
new file mode 100644
index 0000000000..111afc1a7c
--- /dev/null
+++ b/adapters/mso-vfc-adapter/src/test/resources/json/lcmOperRsp.json
@@ -0,0 +1,7 @@
+{
+ "id":"12204a12-7da2-4ddf-8c2f-992a1a1acebf",
+ "lcmOperationType":"INSTANTIATE",
+ "nsInstanceId":"c9f0a95e-dea0-4698-96e5-5a79bc5a233d",
+ "operationState":"PROCESSING",
+ "statusEnteredTime":"Time"
+} \ No newline at end of file
diff --git a/adapters/pom.xml b/adapters/pom.xml
index 8acc7012ba..5d382fd4dd 100644
--- a/adapters/pom.xml
+++ b/adapters/pom.xml
@@ -23,6 +23,7 @@
<module>mso-openstack-adapters</module>
<module>mso-vnfm-adapter</module>
<module>mso-ve-vnfm-adapter</module>
+ <module>mso-nssmf-adapter</module>
<module>so-appc-orchestrator</module>
</modules>
diff --git a/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CheckServiceProcessStatusTest.groovy b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CheckServiceProcessStatusTest.groovy
new file mode 100644
index 0000000000..f066f9e878
--- /dev/null
+++ b/bpmn/so-bpmn-infrastructure-common/src/test/groovy/org/onap/so/bpmn/infrastructure/scripts/CheckServiceProcessStatusTest.groovy
@@ -0,0 +1,344 @@
+/*-
+ * ============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.infrastructure.scripts
+
+import org.camunda.bpm.engine.impl.persistence.entity.ExecutionEntity
+import org.junit.Before
+import org.junit.Test
+import org.mockito.ArgumentCaptor
+import org.mockito.Captor
+import org.mockito.Mockito
+import org.onap.so.bpmn.common.scripts.MsoGroovyTest
+
+import static org.junit.Assert.assertEquals
+import static org.mockito.ArgumentMatchers.eq
+import static org.mockito.Mockito.times
+import static org.mockito.Mockito.when
+
+class CheckServiceProcessStatusTest extends MsoGroovyTest {
+ @Before
+ void init() throws IOException {
+ super.init("CheckServiceProcessStatus")
+ }
+
+ @Captor
+ static ArgumentCaptor<ExecutionEntity> captor = ArgumentCaptor.forClass(ExecutionEntity.class)
+
+
+ @Test
+ void testPreProcessRequest () {
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("12345")
+ when(mockExecution.getVariable("operationId")).thenReturn("54321")
+
+ def successConditions = new ArrayList<>()
+ successConditions.add("finished")
+ successConditions.add("completed")
+
+ def errorConditions = new ArrayList<>()
+ errorConditions.add("error")
+ errorConditions.add("failed")
+
+ when(mockExecution.getVariable("successConditions")).thenReturn(successConditions)
+ when(mockExecution.getVariable("errorConditions")).thenReturn(errorConditions)
+
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.preProcessRequest(mockExecution)
+ Mockito.verify(mockExecution, times(9)).setVariable(captor.capture(), captor.capture())
+ }
+
+
+ @Test
+ void testPreCheckServiceStatusReq() {
+ when(mockExecution.getVariable("serviceInstanceId")).thenReturn("12345")
+ when(mockExecution.getVariable("operationId")).thenReturn("54321")
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+
+ serviceProcessStatus.preCheckServiceStatusReq(mockExecution)
+ Mockito.verify(mockExecution, times(1)).setVariable(eq("getOperationStatus"), captor.capture())
+ String res = captor.getValue()
+ String expect =
+ """<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>12345</serviceId>
+ <operationId>54321</operationId>
+ </ns:getServiceOperationStatus>
+ </soapenv:Body>
+ </soapenv:Envelope>
+ """
+ assertEquals(expect.replaceAll("\\s+", ""), res.replaceAll("\\s+", ""))
+ }
+
+
+ @Test
+ void testHandlerServiceStatusRespSuccess() {
+ mockData()
+ when(mockExecution.getVariable("dbResponseCode")).thenReturn(200)
+ when(mockExecution.getVariable("dbResponse")).thenReturn(getDBResponse("finished"))
+ def successConditions = new ArrayList<>()
+ successConditions.add("finished")
+ successConditions.add("completed")
+
+ when(mockExecution.getVariable("successConditions")).thenReturn(successConditions)
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.handlerServiceStatusResp(mockExecution)
+
+ Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
+ def resultSuccess = captor.getAllValues()
+
+ def expect = new ArrayList<>()
+ expect.add("operationStatus")
+ expect.add("finished")
+ expect.add("operationContent")
+ expect.add("communication service create operation finished success")
+ expect.add("orchestrationStatus")
+ expect.add("deactivated")
+ expect.add("isAllFinished")
+ expect.add("true")
+
+ assertEquals(expect, resultSuccess)
+ }
+
+
+ @Test
+ void testHandlerServiceStatusRespError() {
+ mockData()
+ when(mockExecution.getVariable("dbResponseCode")).thenReturn(200)
+ when(mockExecution.getVariable("dbResponse")).thenReturn(getDBResponse("error"))
+
+ def successConditions = new ArrayList<>()
+ successConditions.add("finished")
+ successConditions.add("completed")
+
+ def errorConditions = new ArrayList<>()
+ errorConditions.add("error")
+ errorConditions.add("failed")
+
+ when(mockExecution.getVariable("successConditions")).thenReturn(successConditions)
+ when(mockExecution.getVariable("errorConditions")).thenReturn(errorConditions)
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.handlerServiceStatusResp(mockExecution)
+
+ Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
+ def resultSuccess = captor.getAllValues()
+
+ def expect = new ArrayList<>()
+ expect.add("operationStatus")
+ expect.add("error")
+ expect.add("operationContent")
+ expect.add("communication service create operation finished with error")
+ expect.add("orchestrationStatus")
+ expect.add("error")
+ expect.add("isAllFinished")
+ expect.add("true")
+
+ assertEquals(expect, resultSuccess)
+ }
+
+
+ @Test
+ void testHandlerServiceStatusRespProcessingNo() {
+ mockData()
+ when(mockExecution.getVariable("dbResponseCode")).thenReturn(200)
+ when(mockExecution.getVariable("dbResponse")).thenReturn(getDBResponse("processing"))
+ when(mockExecution.getVariable("progress")).thenReturn(50)
+
+ def successConditions = new ArrayList<>()
+ successConditions.add("finished")
+ successConditions.add("completed")
+
+ def errorConditions = new ArrayList<>()
+ errorConditions.add("error")
+ errorConditions.add("failed")
+
+ when(mockExecution.getVariable("successConditions")).thenReturn(successConditions)
+ when(mockExecution.getVariable("errorConditions")).thenReturn(errorConditions)
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.handlerServiceStatusResp(mockExecution)
+
+ Mockito.verify(mockExecution, times(2)).setVariable(captor.capture(), captor.capture())
+ def resultSuccess = captor.getAllValues()
+
+ def expect = new ArrayList<>()
+ expect.add("isNeedUpdateDB")
+ expect.add("false")
+ expect.add("isAllFinished")
+ expect.add("false")
+
+ assertEquals(expect as String, resultSuccess as String)
+ }
+
+
+ @Test
+ void testHandlerServiceStatusRespProcessingYes() {
+ mockData()
+ when(mockExecution.getVariable("dbResponseCode")).thenReturn(200)
+ when(mockExecution.getVariable("dbResponse")).thenReturn(getDBResponse("processing"))
+ when(mockExecution.getVariable("progress")).thenReturn(60)
+
+ def successConditions = new ArrayList<>()
+ successConditions.add("finished")
+ successConditions.add("completed")
+
+ def errorConditions = new ArrayList<>()
+ errorConditions.add("error")
+ errorConditions.add("failed")
+
+ when(mockExecution.getVariable("successConditions")).thenReturn(successConditions)
+ when(mockExecution.getVariable("errorConditions")).thenReturn(errorConditions)
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.handlerServiceStatusResp(mockExecution)
+
+ Mockito.verify(mockExecution, times(3)).setVariable(captor.capture(), captor.capture())
+ def resultSuccess = captor.getAllValues()
+
+ def expect = new ArrayList<>()
+ expect.add("progress")
+ expect.add("50")
+ expect.add("isNeedUpdateDB")
+ expect.add("true")
+ expect.add("isAllFinished")
+ expect.add("false")
+
+ assertEquals(expect as String, resultSuccess as String)
+ }
+
+
+ @Test
+ void testTimeWaitDelayNo() {
+ mockData()
+ when(mockExecution.getVariable("startTime")).thenReturn(System.currentTimeMillis())
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+
+ serviceProcessStatus.timeWaitDelay(mockExecution)
+ Mockito.verify(mockExecution, times(1)).setVariable(eq("isTimeOut"), captor.capture())
+ def res = captor.getValue()
+
+ assertEquals("NO", res)
+ }
+
+
+ @Test
+ void testTimeWaitDelayYes() {
+ mockData()
+ when(mockExecution.getVariable("startTime")).thenReturn(1000000)
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+
+ serviceProcessStatus.timeWaitDelay(mockExecution)
+ Mockito.verify(mockExecution, times(4)).setVariable(captor.capture(), captor.capture())
+ def res = captor.getAllValues()
+ def expect = new ArrayList<>()
+ expect.add("operationStatus")
+ expect.add("error")
+ expect.add("operationContent")
+ expect.add("communication service create operation finished with timeout")
+ expect.add("orchestrationStatus")
+ expect.add("error")
+ expect.add("isTimeOut")
+ expect.add("YES")
+
+ assertEquals(expect, res)
+ }
+
+
+ @Test
+ void testPreUpdateOperationProgress() {
+ mockData()
+ when(mockExecution.getVariable("progress")).thenReturn(50)
+ when(mockExecution.getVariable("initProgress")).thenReturn(20)
+ when(mockExecution.getVariable("endProgress")).thenReturn(90)
+ when(mockExecution.getVariable("operationType")).thenReturn("CREATE")
+ when(mockExecution.getVariable("processServiceType")).thenReturn("communication service")
+ when(mockExecution.getVariable("parentServiceInstanceId")).thenReturn("12345")
+ when(mockExecution.getVariable("parentOperationId")).thenReturn("54321")
+ when(mockExecution.getVariable("globalSubscriberId")).thenReturn("11111")
+
+ CheckServiceProcessStatus serviceProcessStatus = new CheckServiceProcessStatus()
+ serviceProcessStatus.preUpdateOperationProgress(mockExecution)
+ Mockito.verify(mockExecution, times(1)).setVariable(eq("updateOperationStatus"), captor.capture())
+ String res = captor.getValue()
+
+ String expect = getExpectPayload("55",
+ "communication service CREATE operation processing 55")
+
+ assertEquals(expect.replaceAll("\\s+", ""), res.replaceAll("\\s+", ""))
+
+
+ }
+
+
+ private static String getExpectPayload(String progress, String operationContent) {
+ String expect =
+ """<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>12345</serviceId>
+ <operationId>54321</operationId>
+ <operationType>CREATE</operationType>
+ <userId>11111</userId>
+ <result>processing</result>
+ <operationContent>${operationContent}</operationContent>
+ <progress>${progress}</progress>
+ <reason></reason>
+ </ns:updateServiceOperationStatus>
+ </soapenv:Body>
+ </soapenv:Envelope>
+ """
+ return expect
+ }
+
+
+ private static String getDBResponse(String result) {
+ String response =
+ """<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
+ <soap:Body>
+ <ns2:getServiceOperationStatusResponse xmlns:ns2="http://org.onap.so/requestsdb">
+ <return><operation>CREATE</operation>
+ <operationContent>Prepare service creation</operationContent>
+ <operationId>077995e3-eb32-44ae-b35d-491fc6983a44</operationId>
+ <progress>50</progress>
+ <reason></reason>
+ <result>${result}</result>
+ <serviceId>3324f117-696d-4518-b8b5-b01fcc127a03</serviceId>
+ <userId>5GCustomer</userId>
+ </return></ns2:getServiceOperationStatusResponse>
+ </soap:Body>
+ </soap:Envelope>
+ """
+ return response
+ }
+
+
+ private mockData() {
+ when(mockExecution.getVariable("processServiceType")).thenReturn("communication service")
+ when(mockExecution.getVariable("operationType")).thenReturn("create")
+ }
+}
diff --git a/mso-api-handlers/mso-requests-db-repositories/src/main/java/org/onap/so/db/request/data/repository/InstanceNfvoMappingRepository.java b/mso-api-handlers/mso-requests-db-repositories/src/main/java/org/onap/so/db/request/data/repository/InstanceNfvoMappingRepository.java
new file mode 100644
index 0000000000..2e2c0872b6
--- /dev/null
+++ b/mso-api-handlers/mso-requests-db-repositories/src/main/java/org/onap/so/db/request/data/repository/InstanceNfvoMappingRepository.java
@@ -0,0 +1,28 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.db.request.data.repository;
+
+import org.onap.so.db.request.beans.InstanceNfvoMapping;
+import org.onap.so.db.request.beans.OperationStatus;
+import org.onap.so.db.request.beans.OperationStatusId;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.repository.query.Param;
+import org.springframework.data.rest.core.annotation.RepositoryRestResource;
+
+@RepositoryRestResource(collectionResourceRel = "instanceNfvoMapping", path = "instanceNfvoMapping")
+public interface InstanceNfvoMappingRepository extends JpaRepository<InstanceNfvoMapping, String> {
+
+ public InstanceNfvoMapping findOneByInstanceId(String instanceId);
+
+ public InstanceNfvoMapping findOneByJobId(String jobId);
+
+}
diff --git a/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InstanceNfvoMapping.java b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InstanceNfvoMapping.java
new file mode 100644
index 0000000000..53b3fcde55
--- /dev/null
+++ b/mso-api-handlers/mso-requests-db/src/main/java/org/onap/so/db/request/beans/InstanceNfvoMapping.java
@@ -0,0 +1,123 @@
+/***
+ * Copyright (C) 2019 Verizon. 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.
+ */
+
+package org.onap.so.db.request.beans;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import java.util.Objects;
+
+@Entity
+@Table(name = "instance_nfvo_mapping")
+public class InstanceNfvoMapping implements java.io.Serializable {
+
+ private static final long serialVersionUID = 1L;
+ @Id
+ @Column(name = "INSTANCE_ID")
+ private String instanceId;
+ @Column(name = "NFVO_NAME", length = 256)
+ private String nfvoName;
+ @Column(name = "ENDPOINT", length = 256)
+ private String endpoint;
+ @Column(name = "USERNAME", length = 256)
+ private String username;
+ @Column(name = "PASSWORD", length = 256)
+ private String password;
+ @Column(name = "API_ROOT", length = 256)
+ private String apiRoot;
+ @Column(name = "JOB_ID", length = 256)
+ private String jobId;
+
+ public InstanceNfvoMapping() {}
+
+ @Override
+ public boolean equals(final Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof InstanceNfvoMapping)) {
+ return false;
+ }
+ final InstanceNfvoMapping castOther = (InstanceNfvoMapping) other;
+ return Objects.equals(getInstanceId(), castOther.getInstanceId());
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(getInstanceId());
+ }
+
+
+ public String getJobId() {
+ return jobId;
+ }
+
+ public void setJobId(String jobId) {
+ this.jobId = jobId;
+ }
+
+ public String getInstanceId() {
+ return instanceId;
+ }
+
+ public void setInstanceId(String instanceId) {
+ this.instanceId = instanceId;
+ }
+
+ public String getNfvoName() {
+ return nfvoName;
+ }
+
+ public void setNfvoName(String nfvoName) {
+ this.nfvoName = nfvoName;
+ }
+
+ public String getEndpoint() {
+ return endpoint;
+ }
+
+ public void setEndpoint(String endpoint) {
+ this.endpoint = endpoint;
+ }
+
+ public String getUsername() {
+ return username;
+ }
+
+ public void setUsername(String username) {
+ this.username = username;
+ }
+
+ public String getPassword() {
+ return password;
+ }
+
+ public void setPassword(String password) {
+ this.password = password;
+ }
+
+ public String getApiRoot() {
+ return apiRoot;
+ }
+
+ public void setApiRoot(String apiRoot) {
+ this.apiRoot = apiRoot;
+ }
+
+ @Override
+ public String toString() {
+ return "InstanceNfvoMapping{" + "instanceId='" + instanceId + '\'' + ", nfvoName='" + nfvoName + '\''
+ + ", endpoint='" + endpoint + '\'' + ", username='" + username + '\'' + ", password='" + password + '\''
+ + ", apiRoot='" + apiRoot + '\'' + '}';
+ }
+}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceArtifact.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceArtifact.java
new file mode 100644
index 0000000000..a8884a81bb
--- /dev/null
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceArtifact.java
@@ -0,0 +1,168 @@
+/*-
+ * ============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.db.catalog.beans;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.openpojo.business.annotation.BusinessKey;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+import java.util.Objects;
+
+@Entity
+@Table(name = "service_artifact")
+public class ServiceArtifact implements Serializable {
+
+ private static final long serialVersionUID = 768026109321305392L;
+
+ @BusinessKey
+ @Id
+ @Column(name = "ARTIFACT_UUID")
+ private String artifactUUID;
+
+ @Column(name = "TYPE")
+ private String type;
+
+ @Column(name = "NAME")
+ private String name;
+
+ @Column(name = "VERSION")
+ private String version;
+
+ @Column(name = "DESCRIPTION")
+ private String description;
+
+ @Column(name = "CONTENT", columnDefinition = "LONGTEXT")
+ private String content;
+
+ @Column(name = "CHECKSUM")
+ private String checksum;
+
+ @Column(name = "CREATION_TIMESTAMP", updatable = false)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
+ @Temporal(TemporalType.TIMESTAMP)
+ private Date creationTimestamp;
+
+ @ManyToOne(cascade = CascadeType.ALL)
+ @JoinColumn(name = "SERVICE_MODEL_UUID")
+ private Service service;
+
+ @PrePersist
+ protected void onCreate() {
+ this.creationTimestamp = new Date();
+ }
+
+ public String getArtifactUUID() {
+ return artifactUUID;
+ }
+
+ public void setArtifactUUID(String artifactUUID) {
+ this.artifactUUID = artifactUUID;
+ }
+
+
+ public String getType() {
+ return type;
+ }
+
+ public void setType(String type) {
+ this.type = type;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ public void setVersion(String version) {
+ this.version = version;
+ }
+
+ public String getDescription() {
+ return description;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ public String getChecksum() {
+ return checksum;
+ }
+
+ public void setChecksum(String checksum) {
+ this.checksum = checksum;
+ }
+
+ public Date getCreationTimestamp() {
+ return creationTimestamp;
+ }
+
+ public void setCreationTimestamp(Date creationTimestamp) {
+ this.creationTimestamp = creationTimestamp;
+ }
+
+ public Service getService() {
+ return service;
+ }
+
+ public void setService(Service service) {
+ this.service = service;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("artifactUUID", artifactUUID).append("type", type).append("name", name)
+ .append("version", version).append("description", description).append("content", content)
+ .append("checksum", checksum).append("creationTimestamp", creationTimestamp).toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ ServiceArtifact that = (ServiceArtifact) o;
+ return artifactUUID.equals(that.artifactUUID);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(artifactUUID);
+ }
+}
diff --git a/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceInfo.java b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceInfo.java
new file mode 100644
index 0000000000..f9c95767f6
--- /dev/null
+++ b/mso-catalog-db/src/main/java/org/onap/so/db/catalog/beans/ServiceInfo.java
@@ -0,0 +1,106 @@
+/*-
+ * ============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.db.catalog.beans;
+
+import com.openpojo.business.annotation.BusinessKey;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import uk.co.blackpepper.bowman.annotation.LinkedResource;
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Objects;
+
+@Entity
+@Table(name = "service_info")
+public class ServiceInfo implements Serializable {
+
+ private static final long serialVersionUID = 768026109321305392L;
+
+ @Id
+ @BusinessKey
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Integer id;
+
+ @Column(name = "SERVICE_INPUT")
+ private String serviceInput;
+
+ @Column(name = "SERVICE_PROPERTIES")
+ private String serviceProperties;
+
+ @OneToOne(cascade = CascadeType.ALL)
+ @JoinTable(name = "service_to_service_info", joinColumns = @JoinColumn(name = "SERVICE_INFO_ID"),
+ inverseJoinColumns = @JoinColumn(name = "SERVICE_MODEL_UUID"))
+ private Service service;
+
+ public Integer getId() {
+ return id;
+ }
+
+ public void setId(Integer serviceInfoId) {
+ this.id = serviceInfoId;
+ }
+
+ public String getServiceInput() {
+ return serviceInput;
+ }
+
+ public void setServiceInput(String serviceInput) {
+ this.serviceInput = serviceInput;
+ }
+
+ public String getServiceProperties() {
+ return serviceProperties;
+ }
+
+ public void setServiceProperties(String serviceProperties) {
+ this.serviceProperties = serviceProperties;
+ }
+
+ @LinkedResource
+ public Service getService() {
+ return service;
+ }
+
+ public void setService(Service service) {
+ this.service = service;
+ }
+
+ @Override
+ public String toString() {
+ return new ToStringBuilder(this).append("id", id).append("serviceProperties", serviceProperties)
+ .append("serviceInput", serviceInput).toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o)
+ return true;
+ if (o == null || getClass() != o.getClass())
+ return false;
+ ServiceInfo that = (ServiceInfo) o;
+ return id.equals(that.id);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(id);
+ }
+}
diff --git a/packages/docker/pom.xml b/packages/docker/pom.xml
index 545fc926a8..8d95d063da 100644
--- a/packages/docker/pom.xml
+++ b/packages/docker/pom.xml
@@ -257,6 +257,31 @@
</build>
</image>
<image>
+ <name>${docker.image.prefix}/nssmf-adapter</name>
+ <build>
+ <cleanup>try</cleanup>
+ <dockerFileDir>docker-files</dockerFileDir>
+ <dockerFile>Dockerfile.so-app</dockerFile>
+ <tags>
+ <tag>${project.version}</tag>
+ <tag>${project.version}-${maven.build.timestamp}</tag>
+ <tag>${project.docker.latesttag.version}</tag>
+ </tags>
+ <assembly>
+ <inline>
+ <dependencySets>
+ <dependencySet>
+ <includes>
+ <include>org.onap.so.adapters:mso-nssmf-adapter</include>
+ </includes>
+ <outputFileNameMapping>app.jar</outputFileNameMapping>
+ </dependencySet>
+ </dependencySets>
+ </inline>
+ </assembly>
+ </build>
+ </image>
+ <image>
<name>${docker.image.prefix}/so-appc-orchestrator</name>
<build>
<cleanup>try</cleanup>
@@ -437,7 +462,7 @@
<goal>push</goal>
</goals>
<configuration>
- <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring,${docker.image.prefix}/so-simulator</image>
+ <image>${docker.image.prefix}/catalog-db-adapter,${docker.image.prefix}/request-db-adapter,${docker.image.prefix}/sdnc-adapter,${docker.image.prefix}/openstack-adapter,${docker.image.prefix}/vfc-adapter,${docker.image.prefix}/sdc-controller,${docker.image.prefix}/bpmn-infra,${docker.image.prefix}/api-handler-infra,${docker.image.prefix}/so-monitoring,${docker.image.prefix}/so-simulator,${docker.image.prefix}/mso-nssmf-adapter</image>
</configuration>
</execution>
</executions>
@@ -492,6 +517,11 @@
</dependency>
<dependency>
<groupId>org.onap.so.adapters</groupId>
+ <artifactId>mso-nssmf-adapter</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.onap.so.adapters</groupId>
<artifactId>so-appc-orchestrator</artifactId>
<version>${project.version}</version>
</dependency>
diff --git a/pom.xml b/pom.xml
index bde0d7a094..3037cca285 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,7 +49,7 @@
<sonar.cpd.exclusions>**/*</sonar.cpd.exclusions>
<jacoco.version>0.8.5</jacoco.version>
<org.apache.maven.user-settings />
- <openstack.version>1.5.1</openstack.version>
+ <openstack.version>1.5.2-SNAPSHOT</openstack.version>
<maven.build.timestamp.format>yyyyMMdd'T'HHmm</maven.build.timestamp.format>
<originalClassifier>original</originalClassifier>
<docker.skip>true</docker.skip>
diff --git a/so-simulator/pom.xml b/so-simulator/pom.xml
index 352a16769b..35964d6de6 100644
--- a/so-simulator/pom.xml
+++ b/so-simulator/pom.xml
@@ -17,8 +17,19 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<citrus.simulator.version>1.1.0</citrus.simulator.version>
+ <spring.boot.version>2.0.9.RELEASE</spring.boot.version>
</properties>
-
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-dependencies</artifactId>
+ <version>${spring.boot.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>