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.
16 package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.so;
18 import com.google.gson.JsonObject;
19 import com.nokia.cbam.lcm.v32.model.ExtVirtualLinkData;
20 import com.nokia.cbam.lcm.v32.model.VimSoftwareImage;
21 import com.nokia.cbam.lcm.v32.model.VnfInfo;
22 import com.nokia.cbam.lcm.v32.model.VnfProperty;
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.Optional;
26 import org.junit.Before;
27 import org.junit.Test;
28 import org.mockito.ArgumentCaptor;
29 import org.mockito.Mock;
30 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.api.VimInfoProvider;
31 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.AdditionalParameters;
32 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.JobManager;
33 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager;
34 import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase;
35 import org.onap.vnfmadapter.so.model.*;
36 import org.onap.vnfmdriver.model.*;
38 import static com.nokia.cbam.lcm.v32.model.VimInfo.VimInfoTypeEnum.*;
39 import static junit.framework.TestCase.assertEquals;
40 import static org.mockito.ArgumentMatchers.eq;
41 import static org.mockito.Mockito.verify;
42 import static org.mockito.Mockito.when;
43 import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CbamRestApiProvider.NOKIA_LCM_API_VERSION;
44 import static org.springframework.test.util.ReflectionTestUtils.setField;
46 public class TestSoLifecycleManager extends TestBase {
48 private static final String VNFD_ID = "cbamVnfdId";
50 private LifecycleManager lifecycleManager;
52 private VimInfoProvider vimInfoProvider;
54 private JobManager jobManager;
55 private SoLifecycleManager soLifecycleManager;
59 setField(SoLifecycleManager.class, "logger", logger);
60 soLifecycleManager = new SoLifecycleManager(lifecycleManager, vimInfoProvider, cbamRestApiProvider, jobManager);
67 public void testVnfCreation() throws Exception {
68 SoVnfCreationRequest onapRequest = new SoVnfCreationRequest();
69 Object additionalParams = new JsonObject();
70 onapRequest.setAdditionalParams(additionalParams);
71 onapRequest.setCsarId("csarId");
72 onapRequest.setDescription("description");
73 onapRequest.setName("name");
74 VnfInfo vnfInfo = new VnfInfo();
75 vnfInfo.setId(VNF_ID);
76 LifecycleManager.VnfCreationResult genericResponse = new LifecycleManager.VnfCreationResult(vnfInfo, VNFD_ID);
77 when(lifecycleManager.create(VNFM_ID, "csarId", "name", "description")).thenReturn(genericResponse);
79 SoVnfCreationResponse response = soLifecycleManager.create(VNFM_ID, onapRequest);
81 assertEquals(VNF_ID, response.getVnfId());
85 * test VNF activation without parameters
88 public void testVnfActivation() throws Exception {
89 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
90 soRequest.setVimId(VIM_ID);
92 JsonObject additionalParams = new JsonObject();
93 soRequest.setAdditionalParams(additionalParams);
94 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
95 vnfInfo.setVnfdId(VNFD_ID);
96 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
97 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
98 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
99 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
100 instantiationResponse.setJobId(JOB_ID);
101 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
102 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
103 esrInfo.setUrl("http://localhost:123/v3");
104 esrInfo.setDomain("domain");
105 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
106 VnfInfo cbamVnfInfo = new VnfInfo();
107 cbamVnfInfo.setExtensions(new ArrayList<>());
108 VnfProperty onapVnfdId = new VnfProperty();
109 cbamVnfInfo.getExtensions().add(onapVnfdId);
110 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
111 onapVnfdId.setValue("csarId");
112 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
114 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
116 assertEquals(JOB_ID, jobHandler.getJobId());
117 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
118 assertEquals(0, actualAdditionalParameters.getComputeResourceFlavours().size());
119 assertEquals(additionalParams, actualAdditionalParameters.getAdditionalParams());
120 assertEquals(0, actualAdditionalParameters.getExternalConnectionPointAddresses().size());
121 assertEquals(0, actualAdditionalParameters.getExtManagedVirtualLinks().size());
122 assertEquals(0, actualAdditionalParameters.getExtVirtualLinks().size());
123 assertEquals("default", actualAdditionalParameters.getInstantiationLevel());
124 assertEquals(0, actualAdditionalParameters.getSoftwareImages().size());
125 assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
126 assertEquals(0, actualAdditionalParameters.getZones().size());
127 assertEquals(0, extLinks.getValue().size());
132 * test VNF activation without parameters for V2 based API
135 public void testVnfActivationForV2() throws Exception {
136 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
137 soRequest.setVimId(VIM_ID);
139 JsonObject additionalParams = new JsonObject();
140 soRequest.setAdditionalParams(additionalParams);
141 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
142 vnfInfo.setVnfdId(VNFD_ID);
143 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
144 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
145 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
146 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
147 instantiationResponse.setJobId(JOB_ID);
148 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
149 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
150 esrInfo.setUrl("http://localhost:123/v2");
151 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
152 VnfInfo cbamVnfInfo = new VnfInfo();
153 cbamVnfInfo.setExtensions(new ArrayList<>());
154 VnfProperty onapVnfdId = new VnfProperty();
155 cbamVnfInfo.getExtensions().add(onapVnfdId);
156 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
157 onapVnfdId.setValue("csarId");
158 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
160 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
162 assertEquals(JOB_ID, jobHandler.getJobId());
163 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
164 assertEquals(OPENSTACK_V2_INFO, actualAdditionalParameters.getVimType());
168 * test VNF activation without parameters for vCloud based API
171 public void testVnfActivationForVcloud() throws Exception {
172 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
173 soRequest.setVimId(VIM_ID);
175 JsonObject additionalParams = new JsonObject();
176 soRequest.setAdditionalParams(additionalParams);
177 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
178 vnfInfo.setVnfdId(VNFD_ID);
179 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
180 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
181 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
182 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
183 instantiationResponse.setJobId(JOB_ID);
184 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
185 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
186 esrInfo.setUrl("http://localhost:123/");
187 esrInfo.setDomain("domain");
188 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
189 VnfInfo cbamVnfInfo = new VnfInfo();
190 cbamVnfInfo.setExtensions(new ArrayList<>());
191 VnfProperty onapVnfdId = new VnfProperty();
192 cbamVnfInfo.getExtensions().add(onapVnfdId);
193 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
194 onapVnfdId.setValue("csarId");
195 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
197 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
199 assertEquals(JOB_ID, jobHandler.getJobId());
200 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
201 assertEquals(VMWARE_VCLOUD_INFO, actualAdditionalParameters.getVimType());
205 * test VNF activation with VDU mappings
208 public void testVnfActivationWithVdu() throws Exception {
209 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
210 soRequest.setVimId(VIM_ID);
211 JsonObject additionalParams = new JsonObject();
212 soRequest.setAdditionalParams(additionalParams);
213 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
214 vnfInfo.setVnfdId(VNFD_ID);
215 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
216 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
217 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
218 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
219 instantiationResponse.setJobId(JOB_ID);
220 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
221 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
222 esrInfo.setUrl("http://localhost:123/v3");
223 esrInfo.setDomain("domain");
224 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
225 VnfInfo cbamVnfInfo = new VnfInfo();
226 cbamVnfInfo.setExtensions(new ArrayList<>());
227 VnfProperty onapVnfdId = new VnfProperty();
228 cbamVnfInfo.getExtensions().add(onapVnfdId);
229 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
230 onapVnfdId.setValue("csarId");
231 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
232 soRequest.setVduMappings(new ArrayList<>());
233 SoVduMapping vduMapping = new SoVduMapping();
234 soRequest.getVduMappings().add(vduMapping);
235 vduMapping.setFlavourId("flavorId");
236 vduMapping.setImageId("imageId");
237 vduMapping.setVduId("vduId");
239 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
241 assertEquals(JOB_ID, jobHandler.getJobId());
242 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
243 assertEquals(1, actualAdditionalParameters.getComputeResourceFlavours().size());
244 assertEquals(1, actualAdditionalParameters.getSoftwareImages().size());
245 VimSoftwareImage image = actualAdditionalParameters.getSoftwareImages().get(0);
246 assertEquals(VIM_ID, image.getVimId());
247 assertEquals("vduId_image", image.getVnfdSoftwareImageId());
248 assertEquals("imageId", image.getResourceId());
249 assertEquals(VIM_ID, actualAdditionalParameters.getComputeResourceFlavours().get(0).getVimId());
250 assertEquals("flavorId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getResourceId());
251 assertEquals("vduId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getVnfdVirtualComputeDescId());
252 assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
256 * test VNF activation with network mappings
259 public void testVnfActivationWithNetworkMapping() throws Exception {
260 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
261 soRequest.setVimId(VIM_ID);
262 JsonObject additionalParams = new JsonObject();
263 soRequest.setAdditionalParams(additionalParams);
264 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
265 vnfInfo.setVnfdId(VNFD_ID);
266 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
267 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
268 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
269 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
270 instantiationResponse.setJobId(JOB_ID);
271 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
272 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
273 esrInfo.setUrl("http://localhost:123/v3");
274 esrInfo.setDomain("domain");
275 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
276 VnfInfo cbamVnfInfo = new VnfInfo();
277 cbamVnfInfo.setExtensions(new ArrayList<>());
278 VnfProperty onapVnfdId = new VnfProperty();
279 cbamVnfInfo.getExtensions().add(onapVnfdId);
280 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
281 onapVnfdId.setValue("csarId");
282 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
283 soRequest.setNetworkMappings(new ArrayList<>());
284 SoNetworkMapping networkMapping = new SoNetworkMapping();
285 networkMapping.setVldId("myVldId");
286 networkMapping.setNetworkProviderId("providerId");
287 networkMapping.setAssignedAddresses(new ArrayList<>());
288 SoAssignedAddresses e1 = new SoAssignedAddresses();
289 e1.setIpAddress("1.2.3.4");
290 e1.setCpdId("cpdId");
291 SoAssignedAddresses e2 = new SoAssignedAddresses();
292 e2.setIpAddress("1.2.3.5");
293 e2.setCpdId("cpdId2");
294 SoAssignedAddresses e3 = new SoAssignedAddresses();
295 e3.setIpAddress("1.2.3.6");
296 e3.setCpdId("cpdId2");
297 SoAssignedAddresses e4 = new SoAssignedAddresses();
298 e4.setIpAddress("1.2.3.6");
299 e4.setCpdId("cpdId2");
300 networkMapping.getAssignedAddresses().add(e1);
301 networkMapping.getAssignedAddresses().add(e2);
302 networkMapping.getAssignedAddresses().add(e3);
303 networkMapping.getAssignedAddresses().add(e4);
304 SoNetworkMapping networkMapping2 = new SoNetworkMapping();
305 soRequest.getNetworkMappings().add(networkMapping);
306 soRequest.getNetworkMappings().add(networkMapping2);
307 networkMapping2.setVldId("myVldId2");
308 networkMapping2.setNetworkProviderId("providerId2");
311 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
313 assertEquals(JOB_ID, jobHandler.getJobId());
314 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
315 assertEquals(2, actualAdditionalParameters.getExtVirtualLinks().size());
316 ExtVirtualLinkData actualVl = actualAdditionalParameters.getExtVirtualLinks().get(0);
317 assertEquals(VIM_ID, actualVl.getVimId());
318 assertEquals("providerId", actualVl.getResourceId());
319 assertEquals("myVldId", actualVl.getExtVirtualLinkId());
320 assertEquals(2, actualVl.getExtCps().size());
321 assertEquals("cpdId", actualVl.getExtCps().get(0).getCpdId());
322 assertEquals("1.2.3.4", actualVl.getExtCps().get(0).getAddresses().get(0).getIp());
323 assertEquals("cpdId2", actualVl.getExtCps().get(1).getCpdId());
324 assertEquals("1.2.3.5", actualVl.getExtCps().get(1).getAddresses().get(0).getIp());
325 assertEquals("1.2.3.6", actualVl.getExtCps().get(1).getAddresses().get(1).getIp());
329 * test VNF activation with server mappings
332 public void testVnfActivationWithServerMappings() throws Exception {
333 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
334 soRequest.setVimId(VIM_ID);
335 JsonObject additionalParams = new JsonObject();
336 soRequest.setAdditionalParams(additionalParams);
337 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
338 vnfInfo.setVnfdId(VNFD_ID);
339 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
340 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
341 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
342 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
343 instantiationResponse.setJobId(JOB_ID);
344 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
345 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
346 esrInfo.setUrl("http://localhost:123/v3");
347 esrInfo.setDomain("domain");
348 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
349 VnfInfo cbamVnfInfo = new VnfInfo();
350 cbamVnfInfo.setExtensions(new ArrayList<>());
351 VnfProperty onapVnfdId = new VnfProperty();
352 cbamVnfInfo.getExtensions().add(onapVnfdId);
353 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
354 onapVnfdId.setValue("csarId");
355 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
356 soRequest.setServerMappings(new ArrayList<>());
357 SoServerMapping s1 = new SoServerMapping();
358 soRequest.getServerMappings().add(s1);
359 s1.setVduId("vduId1");
360 s1.setAvailabilityZoneId("azId1");
361 SoServerMapping s2 = new SoServerMapping();
362 soRequest.getServerMappings().add(s2);
363 s2.setVduId("vduId1");
364 s2.setAvailabilityZoneId("azId1");
365 SoServerMapping s3 = new SoServerMapping();
366 soRequest.getServerMappings().add(s3);
367 s3.setVduId("vduId2");
368 s3.setAvailabilityZoneId("azId1");
371 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
373 assertEquals(JOB_ID, jobHandler.getJobId());
374 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
375 assertEquals(2, actualAdditionalParameters.getZones().size());
376 assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(0).getVimId());
377 assertEquals("azId1", actualAdditionalParameters.getZones().get(0).getResourceId());
378 assertEquals("vduId1", actualAdditionalParameters.getZones().get(0).getId());
379 assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(1).getVimId());
380 assertEquals("azId1", actualAdditionalParameters.getZones().get(1).getResourceId());
381 assertEquals("vduId2", actualAdditionalParameters.getZones().get(1).getId());
388 public void testScaling() throws Exception {
389 SoVnfScaleRequest soRequest = new SoVnfScaleRequest();
390 ArgumentCaptor<org.onap.vnfmdriver.model.VnfScaleRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfScaleRequest.class);
391 JobInfo jobInfo = new JobInfo();
392 jobInfo.setJobId(JOB_ID);
394 soRequest.setAspectId("aspectId");
395 soRequest.setDirection(SoScaleDirection.IN);
396 soRequest.setSteps(2);
397 JsonObject additionalParams = new JsonObject();
398 soRequest.setAdditionalParams(additionalParams);
399 when(lifecycleManager.scaleVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
401 SoJobHandler jobHandler = soLifecycleManager.scale(VNFM_ID, VNF_ID, soRequest, httpResponse);
403 assertEquals(JOB_ID, jobHandler.getJobId());
404 assertEquals(2, Integer.parseInt(driverRequest.getValue().getNumberOfSteps()));
405 assertEquals("aspectId", driverRequest.getValue().getAspectId());
406 assertEquals(org.onap.vnfmdriver.model.ScaleDirection.IN, driverRequest.getValue().getType());
407 assertEquals(additionalParams, driverRequest.getValue().getAdditionalParam());
414 public void testHeal() throws Exception {
415 SoVnfHealRequest soRequest = new SoVnfHealRequest();
416 ArgumentCaptor<org.onap.vnfmdriver.model.VnfHealRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfHealRequest.class);
417 JobInfo jobInfo = new JobInfo();
418 jobInfo.setJobId(JOB_ID);
420 soRequest.setVnfcId(VNF_ID + "_vnfcId");
421 JsonObject additionalParams = new JsonObject();
422 soRequest.setAdditionalParams(additionalParams);
423 when(lifecycleManager.healVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(Optional.of("vnfcId")), eq(httpResponse))).thenReturn(jobInfo);
425 SoJobHandler jobHandler = soLifecycleManager.heal(VNFM_ID, VNF_ID, soRequest, httpResponse);
427 assertEquals(JOB_ID, jobHandler.getJobId());
428 assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVduid());
429 assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVimid());
430 assertEquals("unknown", driverRequest.getValue().getAffectedvm().getVmname());
431 assertEquals("heal", driverRequest.getValue().getAction());
435 * test VNF deactivation
438 public void testDeactivation() throws Exception {
439 SoVnfTerminationRequest soRequest = new SoVnfTerminationRequest();
440 ArgumentCaptor<org.onap.vnfmdriver.model.VnfTerminateRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfTerminateRequest.class);
441 JobInfo jobInfo = new JobInfo();
442 jobInfo.setJobId(JOB_ID);
443 soRequest.setGracefulTerminationTimeoutInMs(1234);
444 soRequest.setMode(SoTerminationMode.GRACEFUL);
445 JsonObject additionalParams = new JsonObject();
446 soRequest.setAdditionalParams(additionalParams);
447 when(lifecycleManager.terminateAndDelete(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
449 SoJobHandler jobHandler = soLifecycleManager.deactivate(VNFM_ID, VNF_ID, soRequest, httpResponse);
451 assertEquals(JOB_ID, jobHandler.getJobId());
452 assertEquals(VnfTerminationType.GRACEFUL, driverRequest.getValue().getTerminationType());
453 assertEquals("1234", driverRequest.getValue().getGracefulTerminationTimeout());
460 public void testDelete() throws Exception {
462 soLifecycleManager.delete(VNFM_ID, VNF_ID);
464 verify(lifecycleManager).deleteVnf(VNFM_ID, VNF_ID);
468 * test VNF custom operation
471 public void testCustomOperation() throws Exception {
472 SoVnfCustomOperation soRequest = new SoVnfCustomOperation();
473 JobInfo jobInfo = new JobInfo();
474 jobInfo.setJobId(JOB_ID);
475 soRequest.setOperationId("operationId");
476 JsonObject additionalParams = new JsonObject();
477 soRequest.setAdditionalParams(additionalParams);
478 when(lifecycleManager.customOperation(VNFM_ID, VNF_ID, "operationId", additionalParams, httpResponse)).thenReturn(jobInfo);
480 SoJobHandler jobHandler = soLifecycleManager.customOperation(VNFM_ID, VNF_ID, soRequest, httpResponse);
482 assertEquals(JOB_ID, jobHandler.getJobId());
487 * test VNF custom operation
490 public void testJobDetails() throws Exception {
491 JobDetailInfo currentJobDetails = new JobDetailInfo();
492 currentJobDetails.setJobId(JOB_ID);
493 when(jobManager.getJob(VNFM_ID, JOB_ID)).thenReturn(currentJobDetails);
494 currentJobDetails.setResponseDescriptor(new JobDetailInfoResponseDescriptor());
496 assertJob(currentJobDetails, SoJobStatus.FINISHED, JobStatus.FINISHED);
497 assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.ERROR);
498 assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.TIMEOUT);
499 assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.STARTED);
500 assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.PROCESSING);
504 private void assertJob(JobDetailInfo currentJobDetails, SoJobStatus expectedState, JobStatus started) {
505 currentJobDetails.getResponseDescriptor().setStatus(started);
507 SoJobDetail jobDetail = soLifecycleManager.getJobDetails(VNFM_ID, JOB_ID);
509 assertEquals(JOB_ID, jobDetail.getJobId());
510 assertEquals(expectedState, jobDetail.getStatus());