2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.onap.so.adapters.vnf;
24 import com.github.tomakehurst.wiremock.client.WireMock;
25 import org.apache.http.HttpStatus;
26 import org.junit.Before;
27 import org.junit.Ignore;
28 import org.junit.Rule;
29 import org.junit.Test;
30 import org.junit.rules.ExpectedException;
31 import org.mockito.MockitoAnnotations;
32 import org.onap.so.adapters.vnf.exceptions.VnfAlreadyExists;
33 import org.onap.so.adapters.vnf.exceptions.VnfException;
34 import org.onap.so.adapters.vnf.exceptions.VnfNotFound;
35 import org.onap.so.db.catalog.beans.HeatEnvironment;
36 import org.onap.so.db.catalog.beans.HeatTemplate;
37 import org.onap.so.db.catalog.beans.HeatTemplateParam;
38 import org.onap.so.db.catalog.beans.VfModule;
39 import org.onap.so.db.catalog.beans.VfModuleCustomization;
40 import org.onap.so.db.catalog.beans.VnfResource;
41 import org.onap.so.db.catalog.data.repository.VFModuleCustomizationRepository;
42 import org.onap.so.db.catalog.data.repository.VnfResourceRepository;
43 import org.onap.so.entity.MsoRequest;
44 import org.onap.so.openstack.beans.HeatStatus;
45 import org.onap.so.openstack.beans.StackInfo;
46 import org.onap.so.openstack.beans.VnfRollback;
47 import org.onap.so.openstack.exceptions.MsoException;
48 import org.onap.so.openstack.utils.MsoHeatUtils;
49 import org.springframework.beans.factory.annotation.Autowired;
50 import org.springframework.boot.test.mock.mockito.MockBean;
52 import javax.xml.ws.Holder;
53 import java.util.HashMap;
54 import java.util.HashSet;
58 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;
59 import static com.github.tomakehurst.wiremock.client.WireMock.get;
60 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;
61 import static com.github.tomakehurst.wiremock.client.WireMock.urlPathEqualTo;
62 import static org.mockito.Mockito.doReturn;
63 import static org.mockito.Mockito.when;
64 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
65 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
66 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStack;
67 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
68 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenstackGetWithResponse;
71 public class MsoVnfAdapterImplTest extends BaseRestTestUtils {
73 public ExpectedException expectedException = ExpectedException.none();
76 private MsoHeatUtils heatUtils;
79 MsoVnfAdapterImpl instance;
81 String vnfName = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId";
84 public void before() {
85 MockitoAnnotations.initMocks(this);
91 public void healthCheckVNFTest() {
92 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
93 instance.healthCheck();
97 public void createVnfTest() throws Exception {
98 StackInfo info = new StackInfo();
99 info.setStatus(HeatStatus.CREATED);
101 mockOpenStackResponseAccess(wireMockPort);
102 mockOpenStackGetStackVfModule_200();
104 MsoRequest msoRequest = getMsoRequest();
106 Map<String, String> map = new HashMap<>();
107 map.put("key1", "value1");
108 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
109 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
110 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
111 new Holder<VnfRollback>());
115 public void createVnfTest_HeatStatusUpdating() throws Exception {
116 expectedException.expect(VnfAlreadyExists.class);
117 mockOpenStackResponseAccess(wireMockPort);
119 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
120 .willReturn(aResponse().withHeader("Content-Type", "application/json")
121 .withBodyFile("OpenstackResponse_Stack_Updating_VfModule.json")
122 .withStatus(HttpStatus.SC_OK)));
124 MsoRequest msoRequest = getMsoRequest();
126 Map<String, String> map = new HashMap<>();
127 map.put("key1", "value1");
128 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
129 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
130 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
131 new Holder<VnfRollback>());
135 public void createVnfTest_HeatStatusUpdated() throws Exception {
136 expectedException.expect(VnfAlreadyExists.class);
137 mockOpenStackResponseAccess(wireMockPort);
139 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
140 .willReturn(aResponse().withHeader("Content-Type", "application/json")
141 .withBodyFile("OpenstackResponse_StackId.json")
142 .withStatus(HttpStatus.SC_OK)));
144 MsoRequest msoRequest = getMsoRequest();
146 Map<String, String> map = new HashMap<>();
147 map.put("key1", "value1");
148 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
149 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
150 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
151 new Holder<VnfRollback>());
155 public void createVnfTest_HeatStatusFailed() throws Exception {
156 expectedException.expect(VnfAlreadyExists.class);
157 mockOpenStackResponseAccess(wireMockPort);
159 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
160 .willReturn(aResponse().withHeader("Content-Type", "application/json")
161 .withBodyFile("OpenstackResponse_Stack_Failed_VfModule.json")
162 .withStatus(HttpStatus.SC_OK)));
164 MsoRequest msoRequest = getMsoRequest();
166 Map<String, String> map = new HashMap<>();
167 map.put("key1", "value1");
168 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
169 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
170 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
171 new Holder<VnfRollback>());
175 public void createVnfTest_HeatStatusCreated() throws Exception {
176 expectedException.expect(VnfAlreadyExists.class);
177 mockOpenStackResponseAccess(wireMockPort);
179 mockOpenStackGetStackVfModule_200();
181 MsoRequest msoRequest = getMsoRequest();
183 Map<String, String> map = new HashMap<>();
184 map.put("key1", "value1");
185 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
186 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
187 Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
188 new Holder<VnfRollback>());
193 public void createVnfTest_ExceptionInGettingHeat() throws Exception {
194 expectedException.expect(VnfException.class);
195 MsoRequest msoRequest = getMsoRequest();
197 Map<String, String> map = new HashMap<>();
198 map.put("key1", "value1");
199 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
200 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
201 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
202 new Holder<VnfRollback>());
206 public void createVnfTest_NestedHeatStatusNotFound() throws Exception {
207 expectedException.expect(VnfException.class);
208 mockOpenStackResponseAccess(wireMockPort);
209 mockOpenStackGetStackVfModule_404();
211 MsoRequest msoRequest = getMsoRequest();
213 Map<String, String> map = new HashMap<>();
214 map.put("key1", "value1");
215 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
216 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
217 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
218 new Holder<VnfRollback>());
222 public void createVnfTest_ExceptionInGettingNestedHeat() throws Exception {
223 expectedException.expect(VnfException.class);
224 mockOpenStackResponseAccess(wireMockPort);
225 mockOpenStackGetStackVfModule_404();
226 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
227 .willReturn(aResponse().withHeader("Content-Type", "application/json")
228 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
230 MsoRequest msoRequest = getMsoRequest();
232 Map<String, String> map = new HashMap<>();
233 map.put("key1", "value1");
234 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
235 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
236 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
237 new Holder<VnfRollback>());
241 public void createVnfTest_NestedBaseHeatStatus_NotFound() throws Exception {
242 expectedException.expect(VnfException.class);
243 mockOpenStackResponseAccess(wireMockPort);
244 mockOpenStackGetStackVfModule_404();
245 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
246 .willReturn(aResponse().withHeader("Content-Type", "application/json")
247 .withBodyFile("OpenstackResponse_Stack_Created_VfModule.json")
248 .withStatus(HttpStatus.SC_OK)));
250 MsoRequest msoRequest = getMsoRequest();
252 Map<String, String> map = new HashMap<>();
253 map.put("key1", "value1");
254 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
255 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
256 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
257 new Holder<VnfRollback>());
261 public void createVnfTest_ExceptionInGettingBaseNestedHeat() throws Exception {
262 expectedException.expect(VnfException.class);
263 mockOpenStackResponseAccess(wireMockPort);
264 mockOpenStackGetStackVfModule_404();
265 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
266 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
268 MsoRequest msoRequest = getMsoRequest();
270 Map<String, String> map = new HashMap<>();
271 map.put("key1", "value1");
272 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
273 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
274 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
275 new Holder<VnfRollback>());
279 public void createVnfTest_ExceptionInCreateStack() throws Exception {
280 expectedException.expect(VnfException.class);
281 mockOpenStackResponseAccess(wireMockPort);
282 mockOpenStackGetStackVfModule_404();
283 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
284 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
286 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
287 VfModule vfModule = new VfModule();
288 vfModule.setIsBase(false);
290 HeatTemplate heatTemplate = new HeatTemplate();
291 heatTemplate.setTemplateBody("");
292 heatTemplate.setTimeoutMinutes(200);
293 vfModule.setModuleHeatTemplate(heatTemplate);
294 vfModuleCustomization.setVfModule(vfModule);
296 HeatEnvironment heatEnvironment = new HeatEnvironment();
297 heatEnvironment.setEnvironment("ist");
298 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
300 MsoRequest msoRequest = getMsoRequest();
302 Map<String, String> map = new HashMap<>();
303 map.put("key1", "value1");
304 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
305 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
306 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
307 new Holder<VnfRollback>());
311 public void createVnfTest_ModelCustUuidIsNull() throws Exception {
312 expectedException.expect(VnfException.class);
313 mockOpenStackResponseAccess(wireMockPort);
314 mockOpenStackGetStackVfModule_404();
315 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
316 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
318 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
319 VfModule vfModule = new VfModule();
320 vfModule.setIsBase(false);
322 HeatTemplate heatTemplate = new HeatTemplate();
323 heatTemplate.setTemplateBody("");
324 heatTemplate.setTimeoutMinutes(200);
325 vfModule.setModuleHeatTemplate(heatTemplate);
326 vfModuleCustomization.setVfModule(vfModule);
328 HeatEnvironment heatEnvironment = new HeatEnvironment();
329 heatEnvironment.setEnvironment("ist");
330 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
332 VnfResource vnfResource = new VnfResource();
333 vnfResource.setAicVersionMin("1");
334 vnfResource.setAicVersionMin("3");
337 MsoRequest msoRequest = getMsoRequest();
339 Map<String, String> map = new HashMap<>();
340 map.put("key1", "value1");
341 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "XVFMOD",
342 "volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
343 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
344 new Holder<VnfRollback>());
348 public void createVnfTest_HeatEnvironment_ContainsParameters() throws Exception {
349 expectedException.expect(VnfException.class);
350 mockOpenStackResponseAccess(wireMockPort);
351 mockOpenStackGetStackVfModule_404();
352 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
353 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
355 MsoRequest msoRequest = getMsoRequest();
357 Map<String, String> map = new HashMap<>();
358 map.put("key1", "value1");
359 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
360 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
361 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
362 new Holder<VnfRollback>());
365 private MsoRequest getMsoRequest() {
366 MsoRequest msoRequest = new MsoRequest();
367 msoRequest.setRequestId("12345");
368 msoRequest.setServiceInstanceId("12345");
373 public void updateVnfTest_CloudSiteIdNotFound() throws Exception {
374 expectedException.expect(VnfException.class);
375 MsoRequest msoRequest = getMsoRequest();
377 Map<String, String> map = new HashMap<>();
378 map.put("key1", "value1");
379 instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
380 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",
381 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
382 new Holder<VnfRollback>());
386 public void updateVnfTest_HeatStackNotFound() throws Exception {
387 expectedException.expect(VnfNotFound.class);
388 MsoRequest msoRequest = getMsoRequest();
389 mockOpenStackResponseAccess(wireMockPort);
390 Map<String, String> map = new HashMap<>();
391 map.put("key1", "value1");
392 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
393 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
394 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
395 new Holder<VnfRollback>());
399 public void updateVnfTest_ExceptionInGettingNestedHeatStack() throws Exception {
400 expectedException.expect(VnfException.class);
401 MsoRequest msoRequest = getMsoRequest();
402 mockOpenStackResponseAccess(wireMockPort);
403 mockOpenStackGetStackVfModule_200();
404 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
405 .willReturn(aResponse().withHeader("Content-Type", "application/json")
406 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
407 Map<String, String> map = new HashMap<>();
408 map.put("key1", "value1");
409 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
410 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
411 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
412 new Holder<VnfRollback>());
416 public void updateVnfTest_NestedHeatStackNotFound() throws Exception {
417 expectedException.expect(VnfException.class);
418 MsoRequest msoRequest = getMsoRequest();
419 mockOpenStackResponseAccess(wireMockPort);
420 mockOpenStackGetStackVfModule_200();
421 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
422 .willReturn(aResponse().withHeader("Content-Type", "application/json")
423 .withStatus(HttpStatus.SC_NOT_FOUND)));
424 Map<String, String> map = new HashMap<>();
425 map.put("key1", "value1");
426 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
427 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
428 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
429 new Holder<VnfRollback>());
433 public void updateVnfTest_ExceptionInGettingNestedBaseHeatStack() throws Exception {
434 expectedException.expect(VnfException.class);
435 MsoRequest msoRequest = getMsoRequest();
436 mockOpenStackResponseAccess(wireMockPort);
437 mockOpenStackGetStackVfModule_200();
438 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
439 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_INTERNAL_SERVER_ERROR,"OpenstackResponse_Stack_Created_VfModule.json");
440 Map<String, String> map = new HashMap<>();
441 map.put("key1", "value1");
442 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
443 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
444 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
445 new Holder<VnfRollback>());
449 public void updateVnfTest_NestedBaseHeatStackNotFound() throws Exception {
450 expectedException.expect(VnfException.class);
451 MsoRequest msoRequest = getMsoRequest();
452 mockOpenStackResponseAccess(wireMockPort);
453 mockOpenStackGetStackVfModule_200();
454 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
455 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_NOT_FOUND,"OpenstackResponse_Stack_Created_VfModule.json");
456 Map<String, String> map = new HashMap<>();
457 map.put("key1", "value1");
458 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
459 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
460 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
461 new Holder<VnfRollback>());
465 public void updateVnfTest_MissingParams() throws Exception {
466 expectedException.expect(VnfException.class);
467 MsoRequest msoRequest = getMsoRequest();
468 mockOpenStackResponseAccess(wireMockPort);
469 mockOpenStackGetStackVfModule_200();
470 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
471 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
472 Map<String, String> map = new HashMap<>();
473 map.put("key1", "value1");
474 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
475 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
476 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
477 new Holder<VnfRollback>());
481 public void updateVnfTest_UpdateStackException() throws Exception {
482 expectedException.expect(VnfException.class);
483 MsoRequest msoRequest = getMsoRequest();
484 mockOpenStackResponseAccess(wireMockPort);
485 mockOpenStackGetStackVfModule_200();
486 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
487 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
489 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
490 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
491 Map<String, String> map = new HashMap<>();
492 map.put("key1", "value1");
493 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
494 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
495 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
496 new Holder<VnfRollback>());
500 public void updateVnfTest() throws Exception {
501 MsoRequest msoRequest = getMsoRequest();
502 mockOpenStackResponseAccess(wireMockPort);
503 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/"+vnfName,HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
504 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
505 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
506 mockOpenStackPutStack("null/stackId", HttpStatus.SC_OK);
507 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/null/stackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
509 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
510 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
511 Map<String, String> map = new HashMap<>();
512 map.put("key1", "value1");
513 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
514 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
515 "b4ea86b4-253f-11e7-93ae-92361f002671", map, msoRequest, new Holder<Map<String, String>>(),
516 new Holder<VnfRollback>());
521 public void deleteVnfTest() throws MsoException {
523 Map<String, Object> outputs = new HashMap<>();
524 outputs.put("Key1", "value1");
525 when(heatUtils.queryStackForOutputs("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
527 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
528 MsoRequest msoRequest = getMsoRequest();
530 instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
531 new Holder<Map<String, String>>());
532 } catch (Exception e) {
537 private VfModuleCustomization getVfModuleCustomization() {
538 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
539 VfModule vfModule = new VfModule();
540 vfModule.setIsBase(false);
542 HeatTemplate heatTemplate = new HeatTemplate();
543 heatTemplate.setTemplateBody("");
544 heatTemplate.setTimeoutMinutes(200);
545 HeatTemplateParam heatTemplateParam = new HeatTemplateParam();
546 heatTemplateParam.setParamAlias("ParamAlias");
547 heatTemplateParam.setRequired(true);
548 heatTemplateParam.setParamName("test");
549 Set set = new HashSet();
550 set.add(heatTemplateParam);
551 heatTemplate.setParameters(set);
552 vfModule.setModuleHeatTemplate(heatTemplate);
553 vfModuleCustomization.setVfModule(vfModule);
555 HeatEnvironment heatEnvironment = new HeatEnvironment();
556 heatEnvironment.setEnvironment("parameters:ist");
557 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
558 return vfModuleCustomization;