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;
45 public class TestSoLifecycleManager extends TestBase {
47 private static final String VNFD_ID = "cbamVnfdId";
49 private LifecycleManager lifecycleManager;
51 private VimInfoProvider vimInfoProvider;
53 private JobManager jobManager;
54 private SoLifecycleManager soLifecycleManager;
58 soLifecycleManager = new SoLifecycleManager(lifecycleManager, vimInfoProvider, cbamRestApiProvider, jobManager);
65 public void testVnfCreation() throws Exception {
66 SoVnfCreationRequest onapRequest = new SoVnfCreationRequest();
67 Object additionalParams = new JsonObject();
68 onapRequest.setAdditionalParams(additionalParams);
69 onapRequest.setCsarId("csarId");
70 onapRequest.setDescription("description");
71 onapRequest.setName("name");
72 VnfInfo vnfInfo = new VnfInfo();
73 vnfInfo.setId(VNF_ID);
74 LifecycleManager.VnfCreationResult genericResponse = new LifecycleManager.VnfCreationResult(vnfInfo, VNFD_ID);
75 when(lifecycleManager.create(VNFM_ID, "csarId", "name", "description")).thenReturn(genericResponse);
77 SoVnfCreationResponse response = soLifecycleManager.create(VNFM_ID, onapRequest);
79 assertEquals(VNF_ID, response.getVnfId());
83 * test VNF activation without parameters
86 public void testVnfActivation() throws Exception {
87 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
88 soRequest.setVimId(VIM_ID);
90 JsonObject additionalParams = new JsonObject();
91 soRequest.setAdditionalParams(additionalParams);
92 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
93 vnfInfo.setVnfdId(VNFD_ID);
94 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
95 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
96 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
97 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
98 instantiationResponse.setJobId(JOB_ID);
99 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
100 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
101 esrInfo.setUrl("http://localhost:123/v3");
102 esrInfo.setDomain("domain");
103 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
104 VnfInfo cbamVnfInfo = new VnfInfo();
105 cbamVnfInfo.setExtensions(new ArrayList<>());
106 VnfProperty onapVnfdId = new VnfProperty();
107 cbamVnfInfo.getExtensions().add(onapVnfdId);
108 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
109 onapVnfdId.setValue("csarId");
110 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
112 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
114 assertEquals(JOB_ID, jobHandler.getJobId());
115 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
116 assertEquals(0, actualAdditionalParameters.getComputeResourceFlavours().size());
117 assertEquals(additionalParams, actualAdditionalParameters.getAdditionalParams());
118 assertEquals(0, actualAdditionalParameters.getExternalConnectionPointAddresses().size());
119 assertEquals(0, actualAdditionalParameters.getExtManagedVirtualLinks().size());
120 assertEquals(0, actualAdditionalParameters.getExtVirtualLinks().size());
121 assertEquals("default", actualAdditionalParameters.getInstantiationLevel());
122 assertEquals(0, actualAdditionalParameters.getSoftwareImages().size());
123 assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
124 assertEquals(0, actualAdditionalParameters.getZones().size());
125 assertEquals(0, extLinks.getValue().size());
130 * test VNF activation without parameters for V2 based API
133 public void testVnfActivationForV2() throws Exception {
134 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
135 soRequest.setVimId(VIM_ID);
137 JsonObject additionalParams = new JsonObject();
138 soRequest.setAdditionalParams(additionalParams);
139 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
140 vnfInfo.setVnfdId(VNFD_ID);
141 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
142 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
143 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
144 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
145 instantiationResponse.setJobId(JOB_ID);
146 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
147 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
148 esrInfo.setUrl("http://localhost:123/v2");
149 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
150 VnfInfo cbamVnfInfo = new VnfInfo();
151 cbamVnfInfo.setExtensions(new ArrayList<>());
152 VnfProperty onapVnfdId = new VnfProperty();
153 cbamVnfInfo.getExtensions().add(onapVnfdId);
154 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
155 onapVnfdId.setValue("csarId");
156 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
158 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
160 assertEquals(JOB_ID, jobHandler.getJobId());
161 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
162 assertEquals(OPENSTACK_V2_INFO, actualAdditionalParameters.getVimType());
166 * test VNF activation without parameters for vCloud based API
169 public void testVnfActivationForVcloud() throws Exception {
170 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
171 soRequest.setVimId(VIM_ID);
173 JsonObject additionalParams = new JsonObject();
174 soRequest.setAdditionalParams(additionalParams);
175 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
176 vnfInfo.setVnfdId(VNFD_ID);
177 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
178 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
179 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
180 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
181 instantiationResponse.setJobId(JOB_ID);
182 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
183 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
184 esrInfo.setUrl("http://localhost:123/");
185 esrInfo.setDomain("domain");
186 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
187 VnfInfo cbamVnfInfo = new VnfInfo();
188 cbamVnfInfo.setExtensions(new ArrayList<>());
189 VnfProperty onapVnfdId = new VnfProperty();
190 cbamVnfInfo.getExtensions().add(onapVnfdId);
191 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
192 onapVnfdId.setValue("csarId");
193 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
195 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
197 assertEquals(JOB_ID, jobHandler.getJobId());
198 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
199 assertEquals(VMWARE_VCLOUD_INFO, actualAdditionalParameters.getVimType());
203 * test VNF activation with VDU mappings
206 public void testVnfActivationWithVdu() throws Exception {
207 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
208 soRequest.setVimId(VIM_ID);
209 JsonObject additionalParams = new JsonObject();
210 soRequest.setAdditionalParams(additionalParams);
211 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
212 vnfInfo.setVnfdId(VNFD_ID);
213 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
214 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
215 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
216 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
217 instantiationResponse.setJobId(JOB_ID);
218 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
219 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
220 esrInfo.setUrl("http://localhost:123/v3");
221 esrInfo.setDomain("domain");
222 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
223 VnfInfo cbamVnfInfo = new VnfInfo();
224 cbamVnfInfo.setExtensions(new ArrayList<>());
225 VnfProperty onapVnfdId = new VnfProperty();
226 cbamVnfInfo.getExtensions().add(onapVnfdId);
227 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
228 onapVnfdId.setValue("csarId");
229 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
230 soRequest.setVduMappings(new ArrayList<>());
231 SoVduMapping vduMapping = new SoVduMapping();
232 soRequest.getVduMappings().add(vduMapping);
233 vduMapping.setFlavourId("flavorId");
234 vduMapping.setImageId("imageId");
235 vduMapping.setVduId("vduId");
237 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
239 assertEquals(JOB_ID, jobHandler.getJobId());
240 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
241 assertEquals(1, actualAdditionalParameters.getComputeResourceFlavours().size());
242 assertEquals(1, actualAdditionalParameters.getSoftwareImages().size());
243 VimSoftwareImage image = actualAdditionalParameters.getSoftwareImages().get(0);
244 assertEquals(VIM_ID, image.getVimId());
245 assertEquals("vduId_image", image.getVnfdSoftwareImageId());
246 assertEquals("imageId", image.getResourceId());
247 assertEquals(VIM_ID, actualAdditionalParameters.getComputeResourceFlavours().get(0).getVimId());
248 assertEquals("flavorId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getResourceId());
249 assertEquals("vduId", actualAdditionalParameters.getComputeResourceFlavours().get(0).getVnfdVirtualComputeDescId());
250 assertEquals(OPENSTACK_V3_INFO, actualAdditionalParameters.getVimType());
254 * test VNF activation with network mappings
257 public void testVnfActivationWithNetworkMapping() throws Exception {
258 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
259 soRequest.setVimId(VIM_ID);
260 JsonObject additionalParams = new JsonObject();
261 soRequest.setAdditionalParams(additionalParams);
262 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
263 vnfInfo.setVnfdId(VNFD_ID);
264 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
265 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
266 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
267 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
268 instantiationResponse.setJobId(JOB_ID);
269 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
270 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
271 esrInfo.setUrl("http://localhost:123/v3");
272 esrInfo.setDomain("domain");
273 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
274 VnfInfo cbamVnfInfo = new VnfInfo();
275 cbamVnfInfo.setExtensions(new ArrayList<>());
276 VnfProperty onapVnfdId = new VnfProperty();
277 cbamVnfInfo.getExtensions().add(onapVnfdId);
278 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
279 onapVnfdId.setValue("csarId");
280 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
281 soRequest.setNetworkMappings(new ArrayList<>());
282 SoNetworkMapping networkMapping = new SoNetworkMapping();
283 networkMapping.setVldId("myVldId");
284 networkMapping.setNetworkProviderId("providerId");
285 networkMapping.setAssignedAddresses(new ArrayList<>());
286 SoAssignedAddresses e1 = new SoAssignedAddresses();
287 e1.setIpAddress("1.2.3.4");
288 e1.setCpdId("cpdId");
289 SoAssignedAddresses e2 = new SoAssignedAddresses();
290 e2.setIpAddress("1.2.3.5");
291 e2.setCpdId("cpdId2");
292 SoAssignedAddresses e3 = new SoAssignedAddresses();
293 e3.setIpAddress("1.2.3.6");
294 e3.setCpdId("cpdId2");
295 SoAssignedAddresses e4 = new SoAssignedAddresses();
296 e4.setIpAddress("1.2.3.6");
297 e4.setCpdId("cpdId2");
298 networkMapping.getAssignedAddresses().add(e1);
299 networkMapping.getAssignedAddresses().add(e2);
300 networkMapping.getAssignedAddresses().add(e3);
301 networkMapping.getAssignedAddresses().add(e4);
302 SoNetworkMapping networkMapping2 = new SoNetworkMapping();
303 soRequest.getNetworkMappings().add(networkMapping);
304 soRequest.getNetworkMappings().add(networkMapping2);
305 networkMapping2.setVldId("myVldId2");
306 networkMapping2.setNetworkProviderId("providerId2");
309 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
311 assertEquals(JOB_ID, jobHandler.getJobId());
312 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
313 assertEquals(2, actualAdditionalParameters.getExtVirtualLinks().size());
314 ExtVirtualLinkData actualVl = actualAdditionalParameters.getExtVirtualLinks().get(0);
315 assertEquals(VIM_ID, actualVl.getVimId());
316 assertEquals("providerId", actualVl.getResourceId());
317 assertEquals("myVldId", actualVl.getExtVirtualLinkId());
318 assertEquals(2, actualVl.getExtCps().size());
319 assertEquals("cpdId", actualVl.getExtCps().get(0).getCpdId());
320 assertEquals("1.2.3.4", actualVl.getExtCps().get(0).getAddresses().get(0).getIp());
321 assertEquals("cpdId2", actualVl.getExtCps().get(1).getCpdId());
322 assertEquals("1.2.3.5", actualVl.getExtCps().get(1).getAddresses().get(0).getIp());
323 assertEquals("1.2.3.6", actualVl.getExtCps().get(1).getAddresses().get(1).getIp());
327 * test VNF activation with server mappings
330 public void testVnfActivationWithServerMappings() throws Exception {
331 SoVnfActivationRequest soRequest = new SoVnfActivationRequest();
332 soRequest.setVimId(VIM_ID);
333 JsonObject additionalParams = new JsonObject();
334 soRequest.setAdditionalParams(additionalParams);
335 org.onap.vnfmdriver.model.VnfInfo vnfInfo = new org.onap.vnfmdriver.model.VnfInfo();
336 vnfInfo.setVnfdId(VNFD_ID);
337 when(lifecycleManager.queryVnf(VNFM_ID, VNF_ID)).thenReturn(vnfInfo);
338 ArgumentCaptor<List<ExtVirtualLinkInfo>> extLinks = ArgumentCaptor.forClass(List.class);
339 ArgumentCaptor<AdditionalParameters> additionalParameters = ArgumentCaptor.forClass(AdditionalParameters.class);
340 VnfInstantiateResponse instantiationResponse = new VnfInstantiateResponse();
341 instantiationResponse.setJobId(JOB_ID);
342 when(lifecycleManager.instantiate(eq(VNFM_ID), extLinks.capture(), eq(httpResponse), eq(additionalParams), additionalParameters.capture(), eq(VNF_ID), eq("csarId"), eq(VNFD_ID))).thenReturn(instantiationResponse);
343 org.onap.vnfmdriver.model.VimInfo esrInfo = new org.onap.vnfmdriver.model.VimInfo();
344 esrInfo.setUrl("http://localhost:123/v3");
345 esrInfo.setDomain("domain");
346 when(vimInfoProvider.getVimInfo(VIM_ID)).thenReturn(esrInfo);
347 VnfInfo cbamVnfInfo = new VnfInfo();
348 cbamVnfInfo.setExtensions(new ArrayList<>());
349 VnfProperty onapVnfdId = new VnfProperty();
350 cbamVnfInfo.getExtensions().add(onapVnfdId);
351 onapVnfdId.setName(LifecycleManager.ONAP_CSAR_ID);
352 onapVnfdId.setValue("csarId");
353 when(vnfApi.vnfsVnfInstanceIdGet(VNF_ID, NOKIA_LCM_API_VERSION)).thenReturn(buildObservable(cbamVnfInfo));
354 soRequest.setServerMappings(new ArrayList<>());
355 SoServerMapping s1 = new SoServerMapping();
356 soRequest.getServerMappings().add(s1);
357 s1.setVduId("vduId1");
358 s1.setAvailabilityZoneId("azId1");
359 SoServerMapping s2 = new SoServerMapping();
360 soRequest.getServerMappings().add(s2);
361 s2.setVduId("vduId1");
362 s2.setAvailabilityZoneId("azId1");
363 SoServerMapping s3 = new SoServerMapping();
364 soRequest.getServerMappings().add(s3);
365 s3.setVduId("vduId2");
366 s3.setAvailabilityZoneId("azId1");
369 SoJobHandler jobHandler = soLifecycleManager.activate(VNFM_ID, VNF_ID, soRequest, httpResponse);
371 assertEquals(JOB_ID, jobHandler.getJobId());
372 AdditionalParameters actualAdditionalParameters = additionalParameters.getValue();
373 assertEquals(2, actualAdditionalParameters.getZones().size());
374 assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(0).getVimId());
375 assertEquals("azId1", actualAdditionalParameters.getZones().get(0).getResourceId());
376 assertEquals("vduId1", actualAdditionalParameters.getZones().get(0).getId());
377 assertEquals(VIM_ID, actualAdditionalParameters.getZones().get(1).getVimId());
378 assertEquals("azId1", actualAdditionalParameters.getZones().get(1).getResourceId());
379 assertEquals("vduId2", actualAdditionalParameters.getZones().get(1).getId());
386 public void testScaleIn() throws Exception {
387 SoVnfScaleRequest soRequest = new SoVnfScaleRequest();
388 ArgumentCaptor<org.onap.vnfmdriver.model.VnfScaleRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfScaleRequest.class);
389 JobInfo jobInfo = new JobInfo();
390 jobInfo.setJobId(JOB_ID);
392 soRequest.setAspectId("aspectId");
393 soRequest.setDirection(SoScaleDirection.IN);
394 soRequest.setSteps(2);
395 JsonObject additionalParams = new JsonObject();
396 soRequest.setAdditionalParams(additionalParams);
397 when(lifecycleManager.scaleVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
399 SoJobHandler jobHandler = soLifecycleManager.scale(VNFM_ID, VNF_ID, soRequest, httpResponse);
401 assertEquals(JOB_ID, jobHandler.getJobId());
402 assertEquals(2, Integer.parseInt(driverRequest.getValue().getNumberOfSteps()));
403 assertEquals("aspectId", driverRequest.getValue().getAspectId());
404 assertEquals(org.onap.vnfmdriver.model.ScaleDirection.IN, driverRequest.getValue().getType());
405 assertEquals(additionalParams, driverRequest.getValue().getAdditionalParam());
412 public void testScaleOut() throws Exception {
413 SoVnfScaleRequest soRequest = new SoVnfScaleRequest();
414 ArgumentCaptor<org.onap.vnfmdriver.model.VnfScaleRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfScaleRequest.class);
415 JobInfo jobInfo = new JobInfo();
416 jobInfo.setJobId(JOB_ID);
418 soRequest.setAspectId("aspectId");
419 soRequest.setDirection(SoScaleDirection.OUT);
420 soRequest.setSteps(2);
421 JsonObject additionalParams = new JsonObject();
422 soRequest.setAdditionalParams(additionalParams);
423 when(lifecycleManager.scaleVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
425 SoJobHandler jobHandler = soLifecycleManager.scale(VNFM_ID, VNF_ID, soRequest, httpResponse);
427 assertEquals(JOB_ID, jobHandler.getJobId());
428 assertEquals(2, Integer.parseInt(driverRequest.getValue().getNumberOfSteps()));
429 assertEquals("aspectId", driverRequest.getValue().getAspectId());
430 assertEquals(org.onap.vnfmdriver.model.ScaleDirection.OUT, driverRequest.getValue().getType());
431 assertEquals(additionalParams, driverRequest.getValue().getAdditionalParam());
438 public void testHeal() throws Exception {
439 SoVnfHealRequest soRequest = new SoVnfHealRequest();
440 ArgumentCaptor<org.onap.vnfmdriver.model.VnfHealRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfHealRequest.class);
441 JobInfo jobInfo = new JobInfo();
442 jobInfo.setJobId(JOB_ID);
444 soRequest.setVnfcId(VNF_ID + "_vnfcId");
445 JsonObject additionalParams = new JsonObject();
446 soRequest.setAdditionalParams(additionalParams);
447 when(lifecycleManager.healVnf(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(Optional.of("vnfcId")), eq(httpResponse))).thenReturn(jobInfo);
449 SoJobHandler jobHandler = soLifecycleManager.heal(VNFM_ID, VNF_ID, soRequest, httpResponse);
451 assertEquals(JOB_ID, jobHandler.getJobId());
452 assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVduid());
453 assertEquals("notUsedByDriver", driverRequest.getValue().getAffectedvm().getVimid());
454 assertEquals("unknown", driverRequest.getValue().getAffectedvm().getVmname());
455 assertEquals("heal", driverRequest.getValue().getAction());
459 * test VNF deactivation
462 public void testDeactivation() throws Exception {
463 SoVnfTerminationRequest soRequest = new SoVnfTerminationRequest();
464 ArgumentCaptor<org.onap.vnfmdriver.model.VnfTerminateRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfTerminateRequest.class);
465 JobInfo jobInfo = new JobInfo();
466 jobInfo.setJobId(JOB_ID);
467 soRequest.setGracefulTerminationTimeoutInMs(1234);
468 soRequest.setMode(SoTerminationMode.GRACEFUL);
469 JsonObject additionalParams = new JsonObject();
470 soRequest.setAdditionalParams(additionalParams);
471 when(lifecycleManager.terminateAndDelete(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
473 SoJobHandler jobHandler = soLifecycleManager.deactivate(VNFM_ID, VNF_ID, soRequest, httpResponse);
475 assertEquals(JOB_ID, jobHandler.getJobId());
476 assertEquals(VnfTerminationType.GRACEFUL, driverRequest.getValue().getTerminationType());
477 assertEquals("1234", driverRequest.getValue().getGracefulTerminationTimeout());
481 * test VNF deactivation
484 public void testDeactivationForceFull() throws Exception {
485 SoVnfTerminationRequest soRequest = new SoVnfTerminationRequest();
486 ArgumentCaptor<org.onap.vnfmdriver.model.VnfTerminateRequest> driverRequest = ArgumentCaptor.forClass(org.onap.vnfmdriver.model.VnfTerminateRequest.class);
487 JobInfo jobInfo = new JobInfo();
488 jobInfo.setJobId(JOB_ID);
489 soRequest.setMode(SoTerminationMode.FORCEFUL);
490 JsonObject additionalParams = new JsonObject();
491 soRequest.setAdditionalParams(additionalParams);
492 when(lifecycleManager.terminateAndDelete(eq(VNFM_ID), eq(VNF_ID), driverRequest.capture(), eq(httpResponse))).thenReturn(jobInfo);
494 SoJobHandler jobHandler = soLifecycleManager.deactivate(VNFM_ID, VNF_ID, soRequest, httpResponse);
496 assertEquals(JOB_ID, jobHandler.getJobId());
497 assertEquals(VnfTerminationType.FORCEFUL, driverRequest.getValue().getTerminationType());
498 assertEquals(null, driverRequest.getValue().getGracefulTerminationTimeout());
505 public void testDelete() throws Exception {
507 soLifecycleManager.delete(VNFM_ID, VNF_ID);
509 verify(lifecycleManager).deleteVnf(VNFM_ID, VNF_ID);
513 * test VNF custom operation
516 public void testCustomOperation() throws Exception {
517 SoVnfCustomOperation soRequest = new SoVnfCustomOperation();
518 JobInfo jobInfo = new JobInfo();
519 jobInfo.setJobId(JOB_ID);
520 soRequest.setOperationId("operationId");
521 JsonObject additionalParams = new JsonObject();
522 soRequest.setAdditionalParams(additionalParams);
523 when(lifecycleManager.customOperation(VNFM_ID, VNF_ID, "operationId", additionalParams, httpResponse)).thenReturn(jobInfo);
525 SoJobHandler jobHandler = soLifecycleManager.customOperation(VNFM_ID, VNF_ID, soRequest, httpResponse);
527 assertEquals(JOB_ID, jobHandler.getJobId());
532 * test VNF custom operation
535 public void testJobDetails() throws Exception {
536 JobDetailInfo currentJobDetails = new JobDetailInfo();
537 currentJobDetails.setJobId(JOB_ID);
538 when(jobManager.getJob(VNFM_ID, JOB_ID)).thenReturn(currentJobDetails);
539 currentJobDetails.setResponseDescriptor(new JobDetailInfoResponseDescriptor());
541 assertJob(currentJobDetails, SoJobStatus.FINISHED, JobStatus.FINISHED);
542 assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.ERROR);
543 assertJob(currentJobDetails, SoJobStatus.FAILED, JobStatus.TIMEOUT);
544 assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.STARTED);
545 assertJob(currentJobDetails, SoJobStatus.STARTED, JobStatus.PROCESSING);
549 private void assertJob(JobDetailInfo currentJobDetails, SoJobStatus expectedState, JobStatus started) {
550 currentJobDetails.getResponseDescriptor().setStatus(started);
552 SoJobDetail jobDetail = soLifecycleManager.getJobDetails(VNFM_ID, JOB_ID);
554 assertEquals(JOB_ID, jobDetail.getJobId());
555 assertEquals(expectedState, jobDetail.getStatus());