diff options
author | Denes Nemeth <denes.nemeth@nokia.com> | 2018-03-03 11:44:14 +0100 |
---|---|---|
committer | Denes Nemeth <denes.nemeth@nokia.com> | 2018-03-03 11:44:14 +0100 |
commit | c13b3688cd0bc63954c78819fe4bad148c8ac2a3 (patch) | |
tree | 11bf76b9c11bc0bfaff2bfdf9cd28e96c12c6a20 /nokiav2/driver | |
parent | 4d24e40338421555cad5cd5f9691894a1eb15843 (diff) |
Fix CP handling
Change-Id: I8105b4a8e9bb56b52a1cd6af4991cf1eb023f953
Signed-off-by: Denes Nemeth <denes.nemeth@nokia.com>
Issue-ID: VFC-728
Diffstat (limited to 'nokiav2/driver')
5 files changed, 61 insertions, 65 deletions
diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/api/INotificationSender.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/api/INotificationSender.java index 92099cc3..241e5de6 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/api/INotificationSender.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/api/INotificationSender.java @@ -33,4 +33,5 @@ public interface INotificationSender { * @param vimId the identifier of the VIM in ONAP */ void processNotification(VnfLifecycleChangeNotification receivedNotification, OperationExecution operationExecution, ReportedAffectedConnectionPoints affectedConnectionPoints, String vimId); + } diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcNotificationSender.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcNotificationSender.java index 26439b5c..98b9a22f 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcNotificationSender.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/VfcNotificationSender.java @@ -15,6 +15,7 @@ */ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc; +import com.google.common.base.Optional; import com.google.gson.Gson; import com.nokia.cbam.lcm.v32.model.OperationExecution; import com.nokia.cbam.lcm.v32.model.ScaleVnfRequest; @@ -33,6 +34,8 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.List; +import static com.google.common.base.Optional.of; +import static com.google.common.collect.Iterables.tryFind; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.fatalFailure; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.ILifecycleChangeNotificationManager.SEPARATOR; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager.extractOnapJobId; @@ -84,7 +87,7 @@ public class VfcNotificationSender implements INotificationSender { } } - private AffectedCp buildAffectedCp(String vimId, String vnfId, ReportedAffectedCp affectedCp) { + private AffectedCp buildAffectedCp(String vimId, String vnfId, VnfCpNotificationType changeType, ReportedAffectedCp affectedCp) { AffectedCp onapAffectedCp = new AffectedCp(); AffectedCpPortResource port = new AffectedCpPortResource(); port.setInstId(affectedCp.getServerProviderId()); @@ -98,21 +101,11 @@ public class VfcNotificationSender implements INotificationSender { onapAffectedCp.setCpdid(affectedCp.getCpId()); onapAffectedCp.setCpinstanceid(vnfId + SEPARATOR + affectedCp.getCpId()); onapAffectedCp.setVirtualLinkInstanceId(affectedCp.getNetworkProviderId()); - onapAffectedCp.setChangeType(transform(affectedCp.getChangeType())); + onapAffectedCp.setChangeType(changeType); //owner id & type can be left empty it will default to VNF id on VF-C return onapAffectedCp; } - private VnfCpNotificationType transform(com.nokia.cbam.lcm.v32.model.ChangeType changeType) { - switch (changeType) { - case ADDED: - return VnfCpNotificationType.ADDED; - case REMOVED: - return VnfCpNotificationType.REMOVED; - default: //can only be MODIFIED - return VnfCpNotificationType.CHANGED; - } - } private void addAffectedVnfcs(String vimId, String vnfId, VNFLCMNotification notificationToSend, VnfLifecycleChangeNotification request) { if (request.getAffectedVnfcs() != null) { @@ -147,24 +140,49 @@ public class VfcNotificationSender implements INotificationSender { } } + private Optional<VnfCpNotificationType> getChangeType(ReportedAffectedConnectionPoints affectedCps, ReportedAffectedCp affectedCp) { + Optional<ReportedAffectedCp> cpBeforeOperation = tryFind(affectedCps.getPre(), pre -> affectedCp.getCpId().equals(pre.getCpId())); + Optional<ReportedAffectedCp> cpAfterOperation = tryFind(affectedCps.getPost(), post -> affectedCp.getCpId().equals(post.getCpId())); + if(cpBeforeOperation.isPresent() && cpAfterOperation.isPresent()){ + return cpAfterOperation.get().equals(cpBeforeOperation.get()) ? Optional.absent() : of(VnfCpNotificationType.CHANGED); + } + else{ + //the affected CP must be present in the pre or post + return of((cpAfterOperation.isPresent() ? VnfCpNotificationType.ADDED : VnfCpNotificationType.REMOVED)); + } + } + private void addAffectedCps(String vimId, VNFLCMNotification notificationToSend, ReportedAffectedConnectionPoints affectedCps) { if (affectedCps != null) { notificationToSend.setAffectedCp(new ArrayList<>()); - for (ReportedAffectedCp affectedCp : affectedCps.getPost()) { - if (affectedCp.getCpdId() != null) { - AffectedCp onapAffectedCp = buildAffectedCp(vimId, notificationToSend.getVnfInstanceId(), affectedCp); - onapAffectedCp.setCpdid(affectedCp.getCpdId()); - notificationToSend.getAffectedCp().add(onapAffectedCp); + for (ReportedAffectedCp pre : affectedCps.getPre()) { + Optional<VnfCpNotificationType> changeType = getChangeType(affectedCps, pre); + if(of(VnfCpNotificationType.REMOVED).equals(changeType)){ + addModifiedCp(vimId, notificationToSend, pre, changeType); } - if (affectedCp.getEcpdId() != null) { - AffectedCp onapAffectedCp = buildAffectedCp(vimId, notificationToSend.getVnfInstanceId(), affectedCp); - onapAffectedCp.setCpdid(affectedCp.getEcpdId()); - notificationToSend.getAffectedCp().add(onapAffectedCp); + } + for (ReportedAffectedCp post : affectedCps.getPost()) { + Optional<VnfCpNotificationType> changeType = getChangeType(affectedCps, post); + if(of(VnfCpNotificationType.ADDED).equals(changeType) || of(VnfCpNotificationType.CHANGED).equals(changeType)){ + addModifiedCp(vimId, notificationToSend, post, changeType); } } } } + private void addModifiedCp(String vimId, VNFLCMNotification notificationToSend, ReportedAffectedCp post, Optional<VnfCpNotificationType> changeType) { + if (post.getCpdId() != null) { + AffectedCp onapAffectedCp = buildAffectedCp(vimId, notificationToSend.getVnfInstanceId(), changeType.get(), post); + onapAffectedCp.setCpdid(post.getCpdId()); + notificationToSend.getAffectedCp().add(onapAffectedCp); + } + if (post.getEcpdId() != null) { + AffectedCp onapAffectedCp = buildAffectedCp(vimId, notificationToSend.getVnfInstanceId(), changeType.get(), post); + onapAffectedCp.setCpdid(post.getEcpdId()); + notificationToSend.getAffectedCp().add(onapAffectedCp); + } + } + private org.onap.vnfmdriver.model.OperationType getOperation(String vnfmId, String vnfId, OperationExecution operationExecution, com.nokia.cbam.lcm.v32.model.OperationType type, List<com.nokia.cbam.lcm.v32.model.AffectedVnfc> affectedVnfcs) { switch (type) { case TERMINATE: diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ReportedAffectedCp.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ReportedAffectedCp.java index ab9d6314..6d265c60 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ReportedAffectedCp.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/notification/ReportedAffectedCp.java @@ -33,7 +33,6 @@ public class ReportedAffectedCp { private String serverProviderId; private String name; private String networkProviderId; - private ChangeType changeType; /** * @return the provider id of the port @@ -175,20 +174,6 @@ public class ReportedAffectedCp { this.networkProviderId = networkProviderId; } - /** - * @return the state of the port in the current operation - */ - public ChangeType getChangeType() { - return changeType; - } - - /** - * @param changeType the state of the port in the current operation - */ - public void setChangeType(ChangeType changeType) { - this.changeType = changeType; - } - @Override public String toString() { return "ReportedAffectedCp{" + @@ -202,7 +187,6 @@ public class ReportedAffectedCp { ", serverProviderId='" + serverProviderId + '\'' + ", name='" + name + '\'' + ", networkProviderId='" + networkProviderId + '\'' + - ", changeType=" + changeType + '}'; } @@ -220,12 +204,11 @@ public class ReportedAffectedCp { Objects.equals(macAddress, that.macAddress) && Objects.equals(serverProviderId, that.serverProviderId) && Objects.equals(name, that.name) && - Objects.equals(networkProviderId, that.networkProviderId) && - changeType == that.changeType; + Objects.equals(networkProviderId, that.networkProviderId); } @Override public int hashCode() { - return Objects.hash(providerId, cpdId, ecpdId, cpId, tenantId, ipAddress, macAddress, serverProviderId, name, networkProviderId, changeType); + return Objects.hash(providerId, cpdId, ecpdId, cpId, tenantId, ipAddress, macAddress, serverProviderId, name, networkProviderId); } }
\ No newline at end of file diff --git a/nokiav2/driver/src/main/resources/cbam.collectConnectionPoints.js b/nokiav2/driver/src/main/resources/cbam.collectConnectionPoints.js index f5cfc675..c721c935 100644 --- a/nokiav2/driver/src/main/resources/cbam.collectConnectionPoints.js +++ b/nokiav2/driver/src/main/resources/cbam.collectConnectionPoints.js @@ -26,21 +26,7 @@ function collectPorts(resourceModel, diff){ transformedPort.macAddress = port.attributes.mac_address; transformedPort.serverProviderId = port.attributes.device_id; transformedPort.networkProviderId = port.attributes.network_id; - transformedPort.changeType = 'untouched'; - var added = contains(diff.add, path); - var removed = contains(diff.remove, path); - if(added && removed){ - transformedPort.changeType = "MODIFIED"; - } - else{ - if(removed){ - transformedPort.changeType = "REMOVED"; - } - if(added){ - transformedPort.changeType = "ADDED"; - } - } - if('untouched' != transformedPort.changeType && managedPort){ + if(managedPort){ transformedPorts.push(transformedPort) } }) diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcNotificationSender.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcNotificationSender.java index 42906c7b..008d8272 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcNotificationSender.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/onap/vfc/TestVfcNotificationSender.java @@ -171,7 +171,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.ADDED); affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -255,7 +254,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.ADDED); //affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -336,7 +334,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.REMOVED); affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -348,7 +345,7 @@ public class TestVfcNotificationSender extends TestBase { affectedCp.setProviderId("portProviderId"); affectedCp.setServerProviderId("serverProviderId"); affectedCp.setTenantId("tenantId"); - affectedConnectionPoints.getPost().add(affectedCp); + affectedConnectionPoints.getPre().add(affectedCp); OperationResult operationResult = new OperationResult(); operationResult.operationResult = affectedConnectionPoints; @@ -443,7 +440,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.MODIFIED); affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -455,7 +451,21 @@ public class TestVfcNotificationSender extends TestBase { affectedCp.setProviderId("portProviderId"); affectedCp.setServerProviderId("serverProviderId"); affectedCp.setTenantId("tenantId"); - affectedConnectionPoints.getPost().add(affectedCp); + affectedConnectionPoints.getPre().add(affectedCp); + + ReportedAffectedCp after = new ReportedAffectedCp(); + after.setCpdId("cpVnfdId"); + after.setIpAddress("1.2.3.5"); + after.setMacAddress("myMac"); + after.setName("myPortName"); + after.setCpId("cpId"); + + // affectedCp.setEcpdId("ecpdId"); + after.setNetworkProviderId("networkProviderId"); + after.setProviderId("portProviderId"); + after.setServerProviderId("serverProviderId"); + after.setTenantId("tenantId"); + affectedConnectionPoints.getPost().add(after); OperationResult operationResult = new OperationResult(); @@ -491,7 +501,7 @@ public class TestVfcNotificationSender extends TestBase { assertEquals(null, actualAffectedCp.getOwnerId()); assertEquals(null, actualAffectedCp.getOwnerType()); assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId()); - assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress()); + assertEquals("1.2.3.5", actualAffectedCp.getPortResource().getIpAddress()); assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress()); assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant()); assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid()); @@ -557,7 +567,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.ADDED); affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -669,7 +678,6 @@ public class TestVfcNotificationSender extends TestBase { ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints(); ReportedAffectedCp affectedCp = new ReportedAffectedCp(); - affectedCp.setChangeType(ChangeType.REMOVED); affectedCp.setCpdId("cpVnfdId"); affectedCp.setIpAddress("1.2.3.4"); affectedCp.setMacAddress("myMac"); @@ -681,7 +689,7 @@ public class TestVfcNotificationSender extends TestBase { affectedCp.setProviderId("portProviderId"); affectedCp.setServerProviderId("serverProviderId"); affectedCp.setTenantId("tenantId"); - affectedConnectionPoints.getPost().add(affectedCp); + affectedConnectionPoints.getPre().add(affectedCp); OperationResult operationResult = new OperationResult(); |