2 * Copyright 2016-2017, Nokia Corporation
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc;
19 import com.google.common.collect.Lists;
20 import com.google.gson.Gson;
21 import com.google.gson.JsonElement;
22 import com.google.gson.JsonParser;
23 import com.nokia.cbam.lcm.v32.model.AffectedVirtualLink;
24 import com.nokia.cbam.lcm.v32.model.AffectedVirtualStorage;
25 import com.nokia.cbam.lcm.v32.model.AffectedVnfc;
26 import com.nokia.cbam.lcm.v32.model.ChangeType;
27 import com.nokia.cbam.lcm.v32.model.*;
28 import com.nokia.cbam.lcm.v32.model.OperationType;
29 import com.nokia.cbam.lcm.v32.model.ScaleDirection;
30 import org.junit.Before;
31 import org.junit.Test;
32 import org.mockito.ArgumentCaptor;
33 import org.mockito.Mockito;
34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
35 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedConnectionPoints;
36 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.ReportedAffectedCp;
37 import org.onap.vnfmdriver.ApiException;
38 import org.onap.vnfmdriver.model.*;
39 import org.threeten.bp.OffsetDateTime;
41 import java.util.ArrayList;
42 import java.util.List;
44 import static junit.framework.TestCase.*;
45 import static org.mockito.Matchers.any;
46 import static org.mockito.Matchers.eq;
47 import static org.mockito.Mockito.*;
48 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
49 import static org.springframework.test.util.ReflectionTestUtils.setField;
51 public class TestVfcNotificationSender extends TestBase {
52 private VfcNotificationSender vfcNotificationSender;
53 private ArgumentCaptor<VNFLCMNotification> sentLcnToVfc = ArgumentCaptor.forClass(VNFLCMNotification.class);
54 private VnfLifecycleChangeNotification recievedLcn = new VnfLifecycleChangeNotification();
55 private List<OperationExecution> operationExecutions = new ArrayList<>();
56 private OperationExecution instantiationOperation = new OperationExecution();
57 private OperationExecution scaleOperation = new OperationExecution();
58 private OperationExecution healOperation = new OperationExecution();
59 private OperationExecution terminationOperation = new OperationExecution();
60 private ReportedAffectedConnectionPoints affectedCp;
64 public void init() throws Exception {
65 vfcNotificationSender = new VfcNotificationSender(driverProperties, vfcRestApiProvider);
66 setField(VfcNotificationSender.class, "logger", logger);
67 Mockito.doNothing().when(nsLcmApi).vNFLCMNotification(eq(VNFM_ID), eq(VNF_ID), sentLcnToVfc.capture());
68 instantiationOperation.setId("instantiationOperationExecutionId");
69 instantiationOperation.setStartTime(OffsetDateTime.now());
70 instantiationOperation.setOperationType(OperationType.INSTANTIATE);
71 scaleOperation.setId("scaleOperationExecutionId");
72 scaleOperation.setStartTime(OffsetDateTime.now().plusDays(1));
73 scaleOperation.setOperationType(OperationType.SCALE);
74 terminationOperation.setId("terminationExecutionId");
75 terminationOperation.setStartTime(OffsetDateTime.now().plusDays(1));
76 terminationOperation.setOperationType(OperationType.TERMINATE);
77 healOperation.setId("healOperaitonExecutionId");
78 healOperation.setOperationType(OperationType.HEAL);
79 healOperation.setStartTime(OffsetDateTime.now().plusDays(1));
80 when(vnfApi.vnfsVnfInstanceIdOperationExecutionsGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(operationExecutions);
81 prepOperation(instantiationOperation);
82 prepOperation(scaleOperation);
83 prepOperation(healOperation);
84 prepOperation(terminationOperation);
85 recievedLcn.setVnfInstanceId(VNF_ID);
88 private void prepOperation(OperationExecution operationExecution) throws com.nokia.cbam.lcm.v32.ApiException {
89 addEmptyModifiedConnectionPoints(operationExecution);
90 JsonElement root = new JsonParser().parse("{ \"additionalParams\" : { \"jobId\" : \"" + JOB_ID + "\"}}");
91 operationExecution.setOperationParams(root);
92 switch (operationExecution.getOperationType()) {
94 root.getAsJsonObject().addProperty("terminationType", "GRACEFULL");
96 when(operationExecutionApi.operationExecutionsOperationExecutionIdGet(operationExecution.getId(), NOKIA_LCM_API_VERSION)).thenReturn(operationExecution);
97 operationExecutions.add(operationExecution);
100 private void addEmptyModifiedConnectionPoints(OperationExecution operationExecution) {
101 OperationResult operationResult = new OperationResult();
102 operationResult.operationResult = new ReportedAffectedConnectionPoints();
103 JsonElement additionalData = new Gson().toJsonTree(operationResult);
104 operationExecution.setAdditionalData(additionalData);
108 * test start notification success scenario
109 * - the affected resources are not processed even if present
110 * - LCN is sent to VF-C
113 public void testStartLcn() {
114 recievedLcn.setStatus(OperationStatus.STARTED);
115 recievedLcn.setOperation(OperationType.INSTANTIATE);
117 vfcNotificationSender.processNotification(recievedLcn, instantiationOperation, affectedCp, VIM_ID);
119 assertEquals(1, sentLcnToVfc.getAllValues().size());
120 assertNull(sentLcnToVfc.getValue().getAffectedVl());
121 assertNull(sentLcnToVfc.getValue().getAffectedVnfc());
122 assertNull(sentLcnToVfc.getValue().getAffectedCp());
123 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
125 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
126 assertEquals(org.onap.vnfmdriver.model.OperationType.INSTANTIATE, sentLcnToVfc.getValue().getOperation());
127 assertEquals(VnfLcmNotificationStatus.START, sentLcnToVfc.getValue().getStatus());
128 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
132 * test end notification success scenario
133 * - LCN is sent to VF-C
136 public void testFinishLcn() {
138 recievedLcn.setOperation(OperationType.INSTANTIATE);
139 recievedLcn.setStatus(OperationStatus.FINISHED);
140 AffectedVnfc affectedVnfc = new AffectedVnfc();
141 affectedVnfc.setChangeType(ChangeType.ADDED);
142 affectedVnfc.setId("myVnfcId");
143 affectedVnfc.setVduId("myVduId");
144 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
145 affectedVnfc.setComputeResource(new ResourceHandle());
146 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
147 affectedVnfc.getComputeResource().setVimId(VIM_ID);
148 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
149 recievedLcn.setAffectedVnfcs(new ArrayList<>());
150 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
152 AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
153 affectedVirtualLink.setChangeType(ChangeType.ADDED);
154 affectedVirtualLink.setId("vlId");
155 affectedVirtualLink.setVirtualLinkDescId("vlVnfdId");
156 affectedVirtualLink.setResource(new ResourceHandle());
157 affectedVirtualLink.getResource().setVimId(VIM_ID);
158 affectedVirtualLink.getResource().setResourceId("networkProviderId");
159 recievedLcn.setAffectedVirtualLinks(new ArrayList<>());
160 recievedLcn.getAffectedVirtualLinks().add(affectedVirtualLink);
162 AffectedVirtualStorage affectedStorage = new AffectedVirtualStorage();
163 affectedStorage.setChangeType(ChangeType.ADDED);
164 affectedStorage.setId("storageId");
165 affectedStorage.setVirtualStorageDescId("storageVnfdId");
166 affectedStorage.setResource(new ResourceHandle());
167 affectedStorage.getResource().setVimId(VIM_ID);
168 affectedStorage.getResource().setResourceId("storageProviderId");
169 recievedLcn.setAffectedVirtualStorages(new ArrayList<>());
170 recievedLcn.getAffectedVirtualStorages().add(affectedStorage);
172 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
173 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
174 affectedCp.setChangeType(ChangeType.ADDED);
175 affectedCp.setCpdId("cpVnfdId");
176 affectedCp.setIpAddress("1.2.3.4");
177 affectedCp.setMacAddress("myMac");
178 affectedCp.setName("myPortName");
179 affectedCp.setCpId("cpId");
181 affectedCp.setNetworkProviderId("networkProviderId");
182 affectedCp.setProviderId("portProviderId");
183 affectedCp.setServerProviderId("serverProviderId");
184 affectedCp.setTenantId("tenantId");
185 affectedConnectionPoints.getPost().add(affectedCp);
187 OperationResult operationResult = new OperationResult();
188 operationResult.operationResult = affectedConnectionPoints;
189 JsonElement additionalData = new Gson().toJsonTree(operationResult);
190 instantiationOperation.setAdditionalData(additionalData);
192 vfcNotificationSender.processNotification(recievedLcn, instantiationOperation, affectedConnectionPoints, VIM_ID);
194 assertEquals(1, sentLcnToVfc.getAllValues().size());
196 assertEquals(1, sentLcnToVfc.getValue().getAffectedVl().size());
197 org.onap.vnfmdriver.model.AffectedVirtualLink actualAffectedVl = sentLcnToVfc.getValue().getAffectedVl().get(0);
198 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.ADDED, actualAffectedVl.getChangeType());
199 assertEquals("vlVnfdId", actualAffectedVl.getVldid());
200 assertEquals("myVnfId_vlId", actualAffectedVl.getVlInstanceId());
201 assertEquals("networkProviderId", actualAffectedVl.getNetworkResource().getResourceId());
202 assertEquals(AffectedVirtualLinkType.NETWORK, actualAffectedVl.getNetworkResource().getResourceType());
204 assertEquals(1, sentLcnToVfc.getValue().getAffectedVnfc().size());
205 org.onap.vnfmdriver.model.AffectedVnfc actualAffectdVnfc = sentLcnToVfc.getValue().getAffectedVnfc().get(0);
206 assertEquals("myVduId", actualAffectdVnfc.getVduId());
207 assertEquals(VIM_ID, actualAffectdVnfc.getVimid());
208 assertEquals("myVmName", actualAffectdVnfc.getVmname());
209 assertEquals("serverProviderId", actualAffectdVnfc.getVmid());
210 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.ADDED, actualAffectdVnfc.getChangeType());
211 assertEquals("myVnfId_myVnfcId", actualAffectdVnfc.getVnfcInstanceId());
213 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
214 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
215 assertEquals("cpVnfdId", actualAffectedCp.getCpdid());
216 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
217 assertEquals(null, actualAffectedCp.getOwnerId());
218 assertEquals(null, actualAffectedCp.getOwnerType());
219 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
220 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
221 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
222 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
223 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
224 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
225 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
226 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
227 assertEquals(VnfCpNotificationType.ADDED, actualAffectedCp.getChangeType());
229 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
230 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
231 assertEquals(org.onap.vnfmdriver.model.OperationType.INSTANTIATE, sentLcnToVfc.getValue().getOperation());
232 assertEquals(VnfLcmNotificationStatus.RESULT, sentLcnToVfc.getValue().getStatus());
233 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
237 * test end notification success scenario for ECP
240 public void testFinishLcnForEcp() {
242 recievedLcn.setOperation(OperationType.INSTANTIATE);
243 recievedLcn.setStatus(OperationStatus.FINISHED);
244 AffectedVnfc affectedVnfc = new AffectedVnfc();
245 affectedVnfc.setChangeType(ChangeType.ADDED);
246 affectedVnfc.setId("myVnfcId");
247 affectedVnfc.setVduId("myVduId");
248 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
249 affectedVnfc.setComputeResource(new ResourceHandle());
250 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
251 affectedVnfc.getComputeResource().setVimId(VIM_ID);
252 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
253 recievedLcn.setAffectedVnfcs(new ArrayList<>());
254 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
256 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
257 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
258 affectedCp.setChangeType(ChangeType.ADDED);
259 //affectedCp.setCpdId("cpVnfdId");
260 affectedCp.setIpAddress("1.2.3.4");
261 affectedCp.setMacAddress("myMac");
262 affectedCp.setName("myPortName");
263 affectedCp.setCpId("cpId");
264 affectedCp.setEcpdId("ecpdId");
265 affectedCp.setNetworkProviderId("networkProviderId");
266 affectedCp.setProviderId("portProviderId");
267 affectedCp.setServerProviderId("serverProviderId");
268 affectedCp.setTenantId("tenantId");
269 affectedConnectionPoints.getPost().add(affectedCp);
271 OperationResult operationResult = new OperationResult();
272 operationResult.operationResult = affectedConnectionPoints;
273 JsonElement additionalData = new Gson().toJsonTree(operationResult);
274 instantiationOperation.setAdditionalData(additionalData);
276 vfcNotificationSender.processNotification(recievedLcn, instantiationOperation, affectedConnectionPoints, VIM_ID);
278 assertEquals(1, sentLcnToVfc.getAllValues().size());
280 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
281 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
282 assertEquals("ecpdId", actualAffectedCp.getCpdid());
283 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
284 assertEquals(null, actualAffectedCp.getOwnerId());
285 assertEquals(null, actualAffectedCp.getOwnerType());
286 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
287 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
288 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
289 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
290 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
291 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
292 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
293 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
294 assertEquals(VnfCpNotificationType.ADDED, actualAffectedCp.getChangeType());
298 * test end notification success scenario with termination
301 public void testFinishLcnWithTerminate() {
303 recievedLcn.setOperation(OperationType.TERMINATE);
304 recievedLcn.setStatus(OperationStatus.FINISHED);
305 AffectedVnfc affectedVnfc = new AffectedVnfc();
306 affectedVnfc.setChangeType(ChangeType.REMOVED);
307 affectedVnfc.setId("myVnfcId");
308 affectedVnfc.setVduId("myVduId");
309 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
310 affectedVnfc.setComputeResource(new ResourceHandle());
311 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
312 affectedVnfc.getComputeResource().setVimId(VIM_ID);
313 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
314 recievedLcn.setAffectedVnfcs(new ArrayList<>());
315 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
317 AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
318 affectedVirtualLink.setChangeType(ChangeType.REMOVED);
319 affectedVirtualLink.setId("vlId");
320 affectedVirtualLink.setVirtualLinkDescId("vlVnfdId");
321 affectedVirtualLink.setResource(new ResourceHandle());
322 affectedVirtualLink.getResource().setVimId(VIM_ID);
323 affectedVirtualLink.getResource().setResourceId("networkProviderId");
324 recievedLcn.setAffectedVirtualLinks(new ArrayList<>());
325 recievedLcn.getAffectedVirtualLinks().add(affectedVirtualLink);
327 AffectedVirtualStorage affectedStorage = new AffectedVirtualStorage();
328 affectedStorage.setChangeType(ChangeType.REMOVED);
329 affectedStorage.setId("storageId");
330 affectedStorage.setVirtualStorageDescId("storageVnfdId");
331 affectedStorage.setResource(new ResourceHandle());
332 affectedStorage.getResource().setVimId(VIM_ID);
333 affectedStorage.getResource().setResourceId("storageProviderId");
334 recievedLcn.setAffectedVirtualStorages(new ArrayList<>());
335 recievedLcn.getAffectedVirtualStorages().add(affectedStorage);
337 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
338 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
339 affectedCp.setChangeType(ChangeType.REMOVED);
340 affectedCp.setCpdId("cpVnfdId");
341 affectedCp.setIpAddress("1.2.3.4");
342 affectedCp.setMacAddress("myMac");
343 affectedCp.setName("myPortName");
344 affectedCp.setCpId("cpId");
346 // affectedCp.setEcpdId("ecpdId");
347 affectedCp.setNetworkProviderId("networkProviderId");
348 affectedCp.setProviderId("portProviderId");
349 affectedCp.setServerProviderId("serverProviderId");
350 affectedCp.setTenantId("tenantId");
351 affectedConnectionPoints.getPost().add(affectedCp);
353 OperationResult operationResult = new OperationResult();
354 operationResult.operationResult = affectedConnectionPoints;
355 JsonElement additionalData = new Gson().toJsonTree(operationResult);
356 instantiationOperation.setAdditionalData(additionalData);
358 vfcNotificationSender.processNotification(recievedLcn, terminationOperation, affectedConnectionPoints, VIM_ID);
360 assertEquals(1, sentLcnToVfc.getAllValues().size());
362 assertEquals(1, sentLcnToVfc.getValue().getAffectedVl().size());
363 org.onap.vnfmdriver.model.AffectedVirtualLink actualAffectedVl = sentLcnToVfc.getValue().getAffectedVl().get(0);
364 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.REMOVED, actualAffectedVl.getChangeType());
365 assertEquals("vlVnfdId", actualAffectedVl.getVldid());
366 assertEquals("myVnfId_vlId", actualAffectedVl.getVlInstanceId());
367 assertEquals("networkProviderId", actualAffectedVl.getNetworkResource().getResourceId());
368 assertEquals(AffectedVirtualLinkType.NETWORK, actualAffectedVl.getNetworkResource().getResourceType());
370 assertEquals(1, sentLcnToVfc.getValue().getAffectedVnfc().size());
371 org.onap.vnfmdriver.model.AffectedVnfc actualAffectdVnfc = sentLcnToVfc.getValue().getAffectedVnfc().get(0);
372 assertEquals("myVduId", actualAffectdVnfc.getVduId());
373 assertEquals(VIM_ID, actualAffectdVnfc.getVimid());
374 assertEquals("myVmName", actualAffectdVnfc.getVmname());
375 assertEquals("serverProviderId", actualAffectdVnfc.getVmid());
376 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.REMOVED, actualAffectdVnfc.getChangeType());
377 assertEquals("myVnfId_myVnfcId", actualAffectdVnfc.getVnfcInstanceId());
379 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
380 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
381 assertEquals("cpVnfdId", actualAffectedCp.getCpdid());
382 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
383 assertEquals(null, actualAffectedCp.getOwnerId());
384 assertEquals(null, actualAffectedCp.getOwnerType());
385 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
386 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
387 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
388 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
389 assertEquals(VnfCpNotificationType.REMOVED, actualAffectedCp.getChangeType());
390 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
391 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
392 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
393 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
395 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
396 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
397 assertEquals(org.onap.vnfmdriver.model.OperationType.TERMINAL, sentLcnToVfc.getValue().getOperation());
398 assertEquals(VnfLcmNotificationStatus.RESULT, sentLcnToVfc.getValue().getStatus());
399 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
403 * test end notification success scenario for modifiction (heal)
404 * - LCN is sent to VF-C
407 public void testFinishLcnForModification() {
409 recievedLcn.setOperation(OperationType.HEAL);
410 recievedLcn.setStatus(OperationStatus.FINISHED);
411 AffectedVnfc affectedVnfc = new AffectedVnfc();
412 affectedVnfc.setChangeType(ChangeType.MODIFIED);
413 affectedVnfc.setId("myVnfcId");
414 affectedVnfc.setVduId("myVduId");
415 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
416 affectedVnfc.setComputeResource(new ResourceHandle());
417 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
418 affectedVnfc.getComputeResource().setVimId(VIM_ID);
419 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
420 recievedLcn.setAffectedVnfcs(new ArrayList<>());
421 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
423 AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
424 affectedVirtualLink.setChangeType(ChangeType.MODIFIED);
425 affectedVirtualLink.setId("vlId");
426 affectedVirtualLink.setVirtualLinkDescId("vlVnfdId");
427 affectedVirtualLink.setResource(new ResourceHandle());
428 affectedVirtualLink.getResource().setVimId(VIM_ID);
429 affectedVirtualLink.getResource().setResourceId("networkProviderId");
430 recievedLcn.setAffectedVirtualLinks(new ArrayList<>());
431 recievedLcn.getAffectedVirtualLinks().add(affectedVirtualLink);
434 AffectedVirtualStorage affectedStorage = new AffectedVirtualStorage();
435 affectedStorage.setChangeType(ChangeType.MODIFIED);
436 affectedStorage.setId("storageId");
437 affectedStorage.setVirtualStorageDescId("storageVnfdId");
438 affectedStorage.setResource(new ResourceHandle());
439 affectedStorage.getResource().setVimId(VIM_ID);
440 affectedStorage.getResource().setResourceId("storageProviderId");
441 recievedLcn.setAffectedVirtualStorages(new ArrayList<>());
442 recievedLcn.getAffectedVirtualStorages().add(affectedStorage);
444 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
445 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
446 affectedCp.setChangeType(ChangeType.MODIFIED);
447 affectedCp.setCpdId("cpVnfdId");
448 affectedCp.setIpAddress("1.2.3.4");
449 affectedCp.setMacAddress("myMac");
450 affectedCp.setName("myPortName");
451 affectedCp.setCpId("cpId");
453 // affectedCp.setEcpdId("ecpdId");
454 affectedCp.setNetworkProviderId("networkProviderId");
455 affectedCp.setProviderId("portProviderId");
456 affectedCp.setServerProviderId("serverProviderId");
457 affectedCp.setTenantId("tenantId");
458 affectedConnectionPoints.getPost().add(affectedCp);
461 OperationResult operationResult = new OperationResult();
462 operationResult.operationResult = affectedConnectionPoints;
463 JsonElement additionalData = new Gson().toJsonTree(operationResult);
464 instantiationOperation.setAdditionalData(additionalData);
466 vfcNotificationSender.processNotification(recievedLcn, healOperation, affectedConnectionPoints, VIM_ID);
468 assertEquals(1, sentLcnToVfc.getAllValues().size());
470 assertEquals(1, sentLcnToVfc.getValue().getAffectedVl().size());
471 org.onap.vnfmdriver.model.AffectedVirtualLink actualAffectedVl = sentLcnToVfc.getValue().getAffectedVl().get(0);
472 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.MODIFIED, actualAffectedVl.getChangeType());
473 assertEquals("vlVnfdId", actualAffectedVl.getVldid());
474 assertEquals("myVnfId_vlId", actualAffectedVl.getVlInstanceId());
475 assertEquals("networkProviderId", actualAffectedVl.getNetworkResource().getResourceId());
476 assertEquals(AffectedVirtualLinkType.NETWORK, actualAffectedVl.getNetworkResource().getResourceType());
478 assertEquals(1, sentLcnToVfc.getValue().getAffectedVnfc().size());
479 org.onap.vnfmdriver.model.AffectedVnfc actualAffectdVnfc = sentLcnToVfc.getValue().getAffectedVnfc().get(0);
480 assertEquals("myVduId", actualAffectdVnfc.getVduId());
481 assertEquals(VIM_ID, actualAffectdVnfc.getVimid());
482 assertEquals("myVmName", actualAffectdVnfc.getVmname());
483 assertEquals("serverProviderId", actualAffectdVnfc.getVmid());
484 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.MODIFIED, actualAffectdVnfc.getChangeType());
485 assertEquals("myVnfId_myVnfcId", actualAffectdVnfc.getVnfcInstanceId());
487 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
488 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
489 assertEquals("cpVnfdId", actualAffectedCp.getCpdid());
490 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
491 assertEquals(null, actualAffectedCp.getOwnerId());
492 assertEquals(null, actualAffectedCp.getOwnerType());
493 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
494 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
495 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
496 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
497 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
498 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
499 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
500 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
501 assertEquals(VnfCpNotificationType.CHANGED, actualAffectedCp.getChangeType());
503 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
504 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
505 assertEquals(org.onap.vnfmdriver.model.OperationType.HEAL, sentLcnToVfc.getValue().getOperation());
506 assertEquals(VnfLcmNotificationStatus.RESULT, sentLcnToVfc.getValue().getStatus());
507 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
511 * test end notification success scenario for scale-out
512 * - LCN is sent to VF-C
515 public void testFinishLcnForScaleout() {
517 recievedLcn.setOperation(OperationType.SCALE);
518 recievedLcn.setStatus(OperationStatus.FINISHED);
519 recievedLcn.setLifecycleOperationOccurrenceId(scaleOperation.getId());
520 ScaleVnfRequest request = new ScaleVnfRequest();
521 request.setAdditionalParams(new JsonParser().parse("{ \"jobId\" : \"" + JOB_ID + "\" }"));
522 request.setType(ScaleDirection.OUT);
523 scaleOperation.setOperationParams(request);
524 scaleOperation.setOperationType(OperationType.SCALE);
525 AffectedVnfc affectedVnfc = new AffectedVnfc();
526 affectedVnfc.setChangeType(ChangeType.ADDED);
527 affectedVnfc.setId("myVnfcId");
528 affectedVnfc.setVduId("myVduId");
529 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
530 affectedVnfc.setComputeResource(new ResourceHandle());
531 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
532 affectedVnfc.getComputeResource().setVimId(VIM_ID);
533 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
534 recievedLcn.setAffectedVnfcs(new ArrayList<>());
535 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
537 AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
538 affectedVirtualLink.setChangeType(ChangeType.ADDED);
539 affectedVirtualLink.setId("vlId");
540 affectedVirtualLink.setVirtualLinkDescId("vlVnfdId");
541 affectedVirtualLink.setResource(new ResourceHandle());
542 affectedVirtualLink.getResource().setVimId(VIM_ID);
543 affectedVirtualLink.getResource().setResourceId("networkProviderId");
544 recievedLcn.setAffectedVirtualLinks(new ArrayList<>());
545 recievedLcn.getAffectedVirtualLinks().add(affectedVirtualLink);
548 AffectedVirtualStorage affectedStorage = new AffectedVirtualStorage();
549 affectedStorage.setChangeType(ChangeType.ADDED);
550 affectedStorage.setId("storageId");
551 affectedStorage.setVirtualStorageDescId("storageVnfdId");
552 affectedStorage.setResource(new ResourceHandle());
553 affectedStorage.getResource().setVimId(VIM_ID);
554 affectedStorage.getResource().setResourceId("storageProviderId");
555 recievedLcn.setAffectedVirtualStorages(new ArrayList<>());
556 recievedLcn.getAffectedVirtualStorages().add(affectedStorage);
558 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
559 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
560 affectedCp.setChangeType(ChangeType.ADDED);
561 affectedCp.setCpdId("cpVnfdId");
562 affectedCp.setIpAddress("1.2.3.4");
563 affectedCp.setMacAddress("myMac");
564 affectedCp.setName("myPortName");
565 affectedCp.setCpId("cpId");
567 // affectedCp.setEcpdId("ecpdId");
568 affectedCp.setNetworkProviderId("networkProviderId");
569 affectedCp.setProviderId("portProviderId");
570 affectedCp.setServerProviderId("serverProviderId");
571 affectedCp.setTenantId("tenantId");
572 affectedConnectionPoints.getPost().add(affectedCp);
574 OperationResult operationResult = new OperationResult();
575 operationResult.operationResult = affectedConnectionPoints;
576 JsonElement additionalData = new Gson().toJsonTree(operationResult);
577 scaleOperation.setAdditionalData(additionalData);
579 vfcNotificationSender.processNotification(recievedLcn, scaleOperation, affectedConnectionPoints, VIM_ID);
581 assertEquals(1, sentLcnToVfc.getAllValues().size());
583 assertEquals(1, sentLcnToVfc.getValue().getAffectedVl().size());
584 org.onap.vnfmdriver.model.AffectedVirtualLink actualAffectedVl = sentLcnToVfc.getValue().getAffectedVl().get(0);
585 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.ADDED, actualAffectedVl.getChangeType());
586 assertEquals("vlVnfdId", actualAffectedVl.getVldid());
587 assertEquals("myVnfId_vlId", actualAffectedVl.getVlInstanceId());
588 assertEquals("networkProviderId", actualAffectedVl.getNetworkResource().getResourceId());
589 assertEquals(AffectedVirtualLinkType.NETWORK, actualAffectedVl.getNetworkResource().getResourceType());
591 assertEquals(1, sentLcnToVfc.getValue().getAffectedVnfc().size());
592 org.onap.vnfmdriver.model.AffectedVnfc actualAffectdVnfc = sentLcnToVfc.getValue().getAffectedVnfc().get(0);
593 assertEquals("myVduId", actualAffectdVnfc.getVduId());
594 assertEquals(VIM_ID, actualAffectdVnfc.getVimid());
595 assertEquals("myVmName", actualAffectdVnfc.getVmname());
596 assertEquals("serverProviderId", actualAffectdVnfc.getVmid());
597 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.ADDED, actualAffectdVnfc.getChangeType());
598 assertEquals("myVnfId_myVnfcId", actualAffectdVnfc.getVnfcInstanceId());
600 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
601 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
602 assertEquals("cpVnfdId", actualAffectedCp.getCpdid());
603 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
604 assertEquals(null, actualAffectedCp.getOwnerId());
605 assertEquals(null, actualAffectedCp.getOwnerType());
606 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
607 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
608 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
609 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
610 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
611 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
612 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
613 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
614 assertEquals(VnfCpNotificationType.ADDED, actualAffectedCp.getChangeType());
616 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
617 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
618 assertEquals(org.onap.vnfmdriver.model.OperationType.SCALEOUT, sentLcnToVfc.getValue().getOperation());
619 assertEquals(VnfLcmNotificationStatus.RESULT, sentLcnToVfc.getValue().getStatus());
620 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
624 * test end notification success scenario for scale-out
625 * - LCN is sent to VF-C
628 public void testFinishLcnForScaleIn() {
630 recievedLcn.setOperation(OperationType.SCALE);
631 recievedLcn.setStatus(OperationStatus.FINISHED);
632 recievedLcn.setLifecycleOperationOccurrenceId(scaleOperation.getId());
633 ScaleVnfRequest request = new ScaleVnfRequest();
634 request.setAdditionalParams(new JsonParser().parse("{ \"jobId\" : \"" + JOB_ID + "\" }"));
635 request.setType(ScaleDirection.IN);
636 scaleOperation.setOperationParams(request);
637 AffectedVnfc affectedVnfc = new AffectedVnfc();
638 affectedVnfc.setChangeType(ChangeType.REMOVED);
639 affectedVnfc.setId("myVnfcId");
640 affectedVnfc.setVduId("myVduId");
641 affectedVnfc.setStorageResourceIds(Lists.newArrayList("storageId1"));
642 affectedVnfc.setComputeResource(new ResourceHandle());
643 affectedVnfc.getComputeResource().setResourceId("serverProviderId");
644 affectedVnfc.getComputeResource().setVimId(VIM_ID);
645 affectedVnfc.getComputeResource().setAdditionalData(new JsonParser().parse("{ \"name\" : \"myVmName\" } "));
646 recievedLcn.setAffectedVnfcs(new ArrayList<>());
647 recievedLcn.getAffectedVnfcs().add(affectedVnfc);
649 AffectedVirtualLink affectedVirtualLink = new AffectedVirtualLink();
650 affectedVirtualLink.setChangeType(ChangeType.REMOVED);
651 affectedVirtualLink.setId("vlId");
652 affectedVirtualLink.setVirtualLinkDescId("vlVnfdId");
653 affectedVirtualLink.setResource(new ResourceHandle());
654 affectedVirtualLink.getResource().setVimId(VIM_ID);
655 affectedVirtualLink.getResource().setResourceId("networkProviderId");
656 recievedLcn.setAffectedVirtualLinks(new ArrayList<>());
657 recievedLcn.getAffectedVirtualLinks().add(affectedVirtualLink);
660 AffectedVirtualStorage affectedStorage = new AffectedVirtualStorage();
661 affectedStorage.setChangeType(ChangeType.REMOVED);
662 affectedStorage.setId("storageId");
663 affectedStorage.setVirtualStorageDescId("storageVnfdId");
664 affectedStorage.setResource(new ResourceHandle());
665 affectedStorage.getResource().setVimId(VIM_ID);
666 affectedStorage.getResource().setResourceId("storageProviderId");
667 recievedLcn.setAffectedVirtualStorages(new ArrayList<>());
668 recievedLcn.getAffectedVirtualStorages().add(affectedStorage);
670 ReportedAffectedConnectionPoints affectedConnectionPoints = new ReportedAffectedConnectionPoints();
671 ReportedAffectedCp affectedCp = new ReportedAffectedCp();
672 affectedCp.setChangeType(ChangeType.REMOVED);
673 affectedCp.setCpdId("cpVnfdId");
674 affectedCp.setIpAddress("1.2.3.4");
675 affectedCp.setMacAddress("myMac");
676 affectedCp.setName("myPortName");
677 affectedCp.setCpId("cpId");
679 // affectedCp.setEcpdId("ecpdId");
680 affectedCp.setNetworkProviderId("networkProviderId");
681 affectedCp.setProviderId("portProviderId");
682 affectedCp.setServerProviderId("serverProviderId");
683 affectedCp.setTenantId("tenantId");
684 affectedConnectionPoints.getPost().add(affectedCp);
687 OperationResult operationResult = new OperationResult();
688 operationResult.operationResult = affectedConnectionPoints;
689 JsonElement additionalData = new Gson().toJsonTree(operationResult);
690 scaleOperation.setAdditionalData(additionalData);
691 scaleOperation.setOperationType(OperationType.SCALE);
693 vfcNotificationSender.processNotification(recievedLcn, scaleOperation, affectedConnectionPoints, VIM_ID);
695 assertEquals(1, sentLcnToVfc.getAllValues().size());
697 assertEquals(1, sentLcnToVfc.getValue().getAffectedVl().size());
698 org.onap.vnfmdriver.model.AffectedVirtualLink actualAffectedVl = sentLcnToVfc.getValue().getAffectedVl().get(0);
699 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.REMOVED, actualAffectedVl.getChangeType());
700 assertEquals("vlVnfdId", actualAffectedVl.getVldid());
701 assertEquals("myVnfId_vlId", actualAffectedVl.getVlInstanceId());
702 assertEquals("networkProviderId", actualAffectedVl.getNetworkResource().getResourceId());
703 assertEquals(AffectedVirtualLinkType.NETWORK, actualAffectedVl.getNetworkResource().getResourceType());
705 assertEquals(1, sentLcnToVfc.getValue().getAffectedVnfc().size());
706 org.onap.vnfmdriver.model.AffectedVnfc actualAffectdVnfc = sentLcnToVfc.getValue().getAffectedVnfc().get(0);
707 assertEquals("myVduId", actualAffectdVnfc.getVduId());
708 assertEquals(VIM_ID, actualAffectdVnfc.getVimid());
709 assertEquals("myVmName", actualAffectdVnfc.getVmname());
710 assertEquals("serverProviderId", actualAffectdVnfc.getVmid());
711 assertEquals(org.onap.vnfmdriver.model.VnfNotificationType.REMOVED, actualAffectdVnfc.getChangeType());
712 assertEquals("myVnfId_myVnfcId", actualAffectdVnfc.getVnfcInstanceId());
714 assertEquals(1, sentLcnToVfc.getValue().getAffectedCp().size());
715 AffectedCp actualAffectedCp = sentLcnToVfc.getValue().getAffectedCp().get(0);
716 assertEquals("cpVnfdId", actualAffectedCp.getCpdid());
717 assertEquals("myVnfId_cpId", actualAffectedCp.getCpinstanceid());
718 assertEquals(null, actualAffectedCp.getOwnerId());
719 assertEquals(null, actualAffectedCp.getOwnerType());
720 assertEquals("networkProviderId", actualAffectedCp.getVirtualLinkInstanceId());
721 assertEquals("1.2.3.4", actualAffectedCp.getPortResource().getIpAddress());
722 assertEquals("myMac", actualAffectedCp.getPortResource().getMacAddress());
723 assertEquals("tenantId", actualAffectedCp.getPortResource().getTenant());
724 assertEquals(VIM_ID, actualAffectedCp.getPortResource().getVimid());
725 assertEquals("serverProviderId", actualAffectedCp.getPortResource().getInstId());
726 assertEquals("portProviderId", actualAffectedCp.getPortResource().getResourceid());
727 assertEquals("myPortName", actualAffectedCp.getPortResource().getResourceName());
728 assertEquals(VnfCpNotificationType.REMOVED, actualAffectedCp.getChangeType());
730 assertNull(sentLcnToVfc.getValue().getAffectedVirtualStorage());
731 assertEquals(JOB_ID, sentLcnToVfc.getValue().getJobId());
732 assertEquals(org.onap.vnfmdriver.model.OperationType.SCALEIN, sentLcnToVfc.getValue().getOperation());
733 assertEquals(VnfLcmNotificationStatus.RESULT, sentLcnToVfc.getValue().getStatus());
734 assertEquals(VNF_ID, sentLcnToVfc.getValue().getVnfInstanceId());
738 * Unable to send notification to VF-C results in error
741 public void testUnableToSendNotificationToVfc() throws Exception {
742 ApiException expectedException = new ApiException();
743 doThrow(expectedException).when(nsLcmApi).vNFLCMNotification(any(), any(), any());
744 recievedLcn.setStatus(OperationStatus.STARTED);
745 recievedLcn.setOperation(OperationType.INSTANTIATE);
748 vfcNotificationSender.processNotification(recievedLcn, instantiationOperation, affectedCp, VIM_ID);
751 } catch (Exception e) {
752 verify(logger).error("Unable to send LCN to VF-C", expectedException);
753 assertEquals(expectedException, e.getCause());
757 class OperationResult {
758 ReportedAffectedConnectionPoints operationResult;