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() throws Exception {
85 MockitoAnnotations.initMocks(this);
92 public void healthCheckVNFTest() {
93 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
94 instance.healthCheck();
98 public void createVnfTest() throws Exception {
99 StackInfo info = new StackInfo();
100 info.setStatus(HeatStatus.CREATED);
102 mockOpenStackResponseAccess(wireMockPort);
103 mockOpenStackGetStackVfModule_200();
105 MsoRequest msoRequest = getMsoRequest();
107 Map<String, String> map = new HashMap<>();
108 map.put("key1", "value1");
109 instance.createVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
110 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
111 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
112 new Holder<VnfRollback>());
116 public void createVnfTest_HeatStatusUpdating() throws Exception {
117 expectedException.expect(VnfAlreadyExists.class);
118 mockOpenStackResponseAccess(wireMockPort);
120 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
121 .willReturn(aResponse().withHeader("Content-Type", "application/json")
122 .withBodyFile("OpenstackResponse_Stack_Updating_VfModule.json")
123 .withStatus(HttpStatus.SC_OK)));
125 MsoRequest msoRequest = getMsoRequest();
127 Map<String, String> map = new HashMap<>();
128 map.put("key1", "value1");
129 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
130 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
131 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
132 new Holder<VnfRollback>());
136 public void createVnfTest_HeatStatusUpdated() throws Exception {
137 expectedException.expect(VnfAlreadyExists.class);
138 mockOpenStackResponseAccess(wireMockPort);
140 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
141 .willReturn(aResponse().withHeader("Content-Type", "application/json")
142 .withBodyFile("OpenstackResponse_StackId.json")
143 .withStatus(HttpStatus.SC_OK)));
145 MsoRequest msoRequest = getMsoRequest();
147 Map<String, String> map = new HashMap<>();
148 map.put("key1", "value1");
149 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
150 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
151 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
152 new Holder<VnfRollback>());
156 public void createVnfTest_HeatStatusFailed() throws Exception {
157 expectedException.expect(VnfAlreadyExists.class);
158 mockOpenStackResponseAccess(wireMockPort);
160 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001/stackId"))
161 .willReturn(aResponse().withHeader("Content-Type", "application/json")
162 .withBodyFile("OpenstackResponse_Stack_Failed_VfModule.json")
163 .withStatus(HttpStatus.SC_OK)));
165 MsoRequest msoRequest = getMsoRequest();
167 Map<String, String> map = new HashMap<>();
168 map.put("key1", "value1");
169 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
170 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
171 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
172 new Holder<VnfRollback>());
176 public void createVnfTest_HeatStatusCreated() throws Exception {
177 expectedException.expect(VnfAlreadyExists.class);
178 mockOpenStackResponseAccess(wireMockPort);
180 mockOpenStackGetStackVfModule_200();
182 MsoRequest msoRequest = getMsoRequest();
184 Map<String, String> map = new HashMap<>();
185 map.put("key1", "value1");
186 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
187 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
188 Boolean.TRUE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
189 new Holder<VnfRollback>());
194 public void createVnfTest_ExceptionInGettingHeat() throws Exception {
195 expectedException.expect(VnfException.class);
196 MsoRequest msoRequest = getMsoRequest();
198 Map<String, String> map = new HashMap<>();
199 map.put("key1", "value1");
200 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
201 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
202 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
203 new Holder<VnfRollback>());
207 public void createVnfTest_NestedHeatStatusNotFound() throws Exception {
208 expectedException.expect(VnfException.class);
209 mockOpenStackResponseAccess(wireMockPort);
210 mockOpenStackGetStackVfModule_404();
212 MsoRequest msoRequest = getMsoRequest();
214 Map<String, String> map = new HashMap<>();
215 map.put("key1", "value1");
216 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
217 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
218 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
219 new Holder<VnfRollback>());
223 public void createVnfTest_ExceptionInGettingNestedHeat() throws Exception {
224 expectedException.expect(VnfException.class);
225 mockOpenStackResponseAccess(wireMockPort);
226 mockOpenStackGetStackVfModule_404();
227 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
228 .willReturn(aResponse().withHeader("Content-Type", "application/json")
229 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
231 MsoRequest msoRequest = getMsoRequest();
233 Map<String, String> map = new HashMap<>();
234 map.put("key1", "value1");
235 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
236 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
237 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
238 new Holder<VnfRollback>());
242 public void createVnfTest_NestedBaseHeatStatus_NotFound() throws Exception {
243 expectedException.expect(VnfException.class);
244 mockOpenStackResponseAccess(wireMockPort);
245 mockOpenStackGetStackVfModule_404();
246 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
247 .willReturn(aResponse().withHeader("Content-Type", "application/json")
248 .withBodyFile("OpenstackResponse_Stack_Created_VfModule.json")
249 .withStatus(HttpStatus.SC_OK)));
251 MsoRequest msoRequest = getMsoRequest();
253 Map<String, String> map = new HashMap<>();
254 map.put("key1", "value1");
255 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
256 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
257 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
258 new Holder<VnfRollback>());
262 public void createVnfTest_ExceptionInGettingBaseNestedHeat() throws Exception {
263 expectedException.expect(VnfException.class);
264 mockOpenStackResponseAccess(wireMockPort);
265 mockOpenStackGetStackVfModule_404();
266 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
267 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
269 MsoRequest msoRequest = getMsoRequest();
271 Map<String, String> map = new HashMap<>();
272 map.put("key1", "value1");
273 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
274 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
275 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
276 new Holder<VnfRollback>());
280 public void createVnfTest_ExceptionInCreateStack() throws Exception {
281 expectedException.expect(VnfException.class);
282 mockOpenStackResponseAccess(wireMockPort);
283 mockOpenStackGetStackVfModule_404();
284 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
285 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
287 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
288 VfModule vfModule = new VfModule();
289 vfModule.setIsBase(false);
291 HeatTemplate heatTemplate = new HeatTemplate();
292 heatTemplate.setTemplateBody("");
293 heatTemplate.setTimeoutMinutes(200);
294 vfModule.setModuleHeatTemplate(heatTemplate);
295 vfModuleCustomization.setVfModule(vfModule);
297 HeatEnvironment heatEnvironment = new HeatEnvironment();
298 heatEnvironment.setEnvironment("ist");
299 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
301 MsoRequest msoRequest = getMsoRequest();
303 Map<String, String> map = new HashMap<>();
304 map.put("key1", "value1");
305 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
306 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
307 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
308 new Holder<VnfRollback>());
312 public void createVnfTest_ModelCustUuidIsNull() throws Exception {
313 expectedException.expect(VnfException.class);
314 mockOpenStackResponseAccess(wireMockPort);
315 mockOpenStackGetStackVfModule_404();
316 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
317 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
319 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
320 VfModule vfModule = new VfModule();
321 vfModule.setIsBase(false);
323 HeatTemplate heatTemplate = new HeatTemplate();
324 heatTemplate.setTemplateBody("");
325 heatTemplate.setTimeoutMinutes(200);
326 vfModule.setModuleHeatTemplate(heatTemplate);
327 vfModuleCustomization.setVfModule(vfModule);
329 HeatEnvironment heatEnvironment = new HeatEnvironment();
330 heatEnvironment.setEnvironment("ist");
331 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
333 VnfResource vnfResource = new VnfResource();
334 vnfResource.setAicVersionMin("1");
335 vnfResource.setAicVersionMin("3");
338 MsoRequest msoRequest = getMsoRequest();
340 Map<String, String> map = new HashMap<>();
341 map.put("key1", "value1");
342 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "XVFMOD",
343 "volumeGroupHeatStackId", "baseVfHeatStackId", null, map,
344 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
345 new Holder<VnfRollback>());
349 public void createVnfTest_HeatEnvironment_ContainsParameters() throws Exception {
350 expectedException.expect(VnfException.class);
351 mockOpenStackResponseAccess(wireMockPort);
352 mockOpenStackGetStackVfModule_404();
353 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
354 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/baseVfHeatStackId")).willReturn(aResponse().withBodyFile("OpenstackResponse_Stack_Created_VfModule.json").withStatus(HttpStatus.SC_OK)));
356 MsoRequest msoRequest = getMsoRequest();
358 Map<String, String> map = new HashMap<>();
359 map.put("key1", "value1");
360 instance.createVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
361 "volumeGroupHeatStackId", "baseVfHeatStackId", "88a6ca3ee0394ade9403f075db23167e", map,
362 Boolean.FALSE, Boolean.TRUE, Boolean.FALSE, msoRequest, new Holder<>(), new Holder<Map<String, String>>(),
363 new Holder<VnfRollback>());
366 private MsoRequest getMsoRequest() {
367 MsoRequest msoRequest = new MsoRequest();
368 msoRequest.setRequestId("12345");
369 msoRequest.setServiceInstanceId("12345");
374 public void updateVnfTest_CloudSiteIdNotFound() throws Exception {
375 expectedException.expect(VnfException.class);
376 MsoRequest msoRequest = getMsoRequest();
378 Map<String, String> map = new HashMap<>();
379 map.put("key1", "value1");
380 instance.updateVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", "vSAMP12", "VFMOD",
381 "volumeGroupHeatStackId|1", "baseVfHeatStackId", "vfModuleStackId",
382 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
383 new Holder<VnfRollback>());
387 public void updateVnfTest_HeatStackNotFound() throws Exception {
388 expectedException.expect(VnfNotFound.class);
389 MsoRequest msoRequest = getMsoRequest();
390 mockOpenStackResponseAccess(wireMockPort);
391 Map<String, String> map = new HashMap<>();
392 map.put("key1", "value1");
393 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
394 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
395 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
396 new Holder<VnfRollback>());
400 public void updateVnfTest_ExceptionInGettingNestedHeatStack() throws Exception {
401 expectedException.expect(VnfException.class);
402 MsoRequest msoRequest = getMsoRequest();
403 mockOpenStackResponseAccess(wireMockPort);
404 mockOpenStackGetStackVfModule_200();
405 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
406 .willReturn(aResponse().withHeader("Content-Type", "application/json")
407 .withStatus(HttpStatus.SC_INTERNAL_SERVER_ERROR)));
408 Map<String, String> map = new HashMap<>();
409 map.put("key1", "value1");
410 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
411 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
412 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
413 new Holder<VnfRollback>());
417 public void updateVnfTest_NestedHeatStackNotFound() throws Exception {
418 expectedException.expect(VnfException.class);
419 MsoRequest msoRequest = getMsoRequest();
420 mockOpenStackResponseAccess(wireMockPort);
421 mockOpenStackGetStackVfModule_200();
422 stubFor(get(urlPathEqualTo("/mockPublicUrl/stacks/volumeGroupHeatStackId"))
423 .willReturn(aResponse().withHeader("Content-Type", "application/json")
424 .withStatus(HttpStatus.SC_NOT_FOUND)));
425 Map<String, String> map = new HashMap<>();
426 map.put("key1", "value1");
427 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
428 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
429 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
430 new Holder<VnfRollback>());
434 public void updateVnfTest_ExceptionInGettingNestedBaseHeatStack() throws Exception {
435 expectedException.expect(VnfException.class);
436 MsoRequest msoRequest = getMsoRequest();
437 mockOpenStackResponseAccess(wireMockPort);
438 mockOpenStackGetStackVfModule_200();
439 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
440 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_INTERNAL_SERVER_ERROR,"OpenstackResponse_Stack_Created_VfModule.json");
441 Map<String, String> map = new HashMap<>();
442 map.put("key1", "value1");
443 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
444 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
445 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
446 new Holder<VnfRollback>());
450 public void updateVnfTest_NestedBaseHeatStackNotFound() throws Exception {
451 expectedException.expect(VnfException.class);
452 MsoRequest msoRequest = getMsoRequest();
453 mockOpenStackResponseAccess(wireMockPort);
454 mockOpenStackGetStackVfModule_200();
455 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
456 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_NOT_FOUND,"OpenstackResponse_Stack_Created_VfModule.json");
457 Map<String, String> map = new HashMap<>();
458 map.put("key1", "value1");
459 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
460 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
461 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
462 new Holder<VnfRollback>());
466 public void updateVnfTest_MissingParams() throws Exception {
467 expectedException.expect(VnfException.class);
468 MsoRequest msoRequest = getMsoRequest();
469 mockOpenStackResponseAccess(wireMockPort);
470 mockOpenStackGetStackVfModule_200();
471 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
472 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
473 Map<String, String> map = new HashMap<>();
474 map.put("key1", "value1");
475 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
476 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
477 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
478 new Holder<VnfRollback>());
482 public void updateVnfTest_UpdateStackException() throws Exception {
483 expectedException.expect(VnfException.class);
484 MsoRequest msoRequest = getMsoRequest();
485 mockOpenStackResponseAccess(wireMockPort);
486 mockOpenStackGetStackVfModule_200();
487 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
488 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
490 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
491 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
492 Map<String, String> map = new HashMap<>();
493 map.put("key1", "value1");
494 instance.updateVfModule("mtn13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
495 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
496 "88a6ca3ee0394ade9403f075db23167e", map, msoRequest, new Holder<Map<String, String>>(),
497 new Holder<VnfRollback>());
501 public void updateVnfTest() throws Exception {
502 MsoRequest msoRequest = getMsoRequest();
503 mockOpenStackResponseAccess(wireMockPort);
504 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/"+vnfName,HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
505 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/volumeGroupHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
506 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/baseVfHeatStackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_Created_VfModule.json");
507 mockOpenStackPutStack("null/stackId", HttpStatus.SC_OK);
508 mockOpenstackGetWithResponse("/mockPublicUrl/stacks/null/stackId",HttpStatus.SC_OK,"OpenstackResponse_Stack_UpdateComplete.json");
510 VfModuleCustomization vfModuleCustomization = getVfModuleCustomization();
511 vfModuleCustomization.getVfModule().getModuleHeatTemplate().setParameters(new HashSet<>());
512 Map<String, String> map = new HashMap<>();
513 map.put("key1", "value1");
514 instance.updateVfModule("MTN13", "88a6ca3ee0394ade9403f075db23167e", "vnf", "1", vnfName, "VFMOD",
515 "volumeGroupHeatStackId", "baseVfHeatStackId", "vfModuleStackId",
516 "b4ea86b4-253f-11e7-93ae-92361f002671", map, msoRequest, new Holder<Map<String, String>>(),
517 new Holder<VnfRollback>());
522 public void deleteVnfTest() throws MsoException {
524 Map<String, Object> outputs = new HashMap<>();
525 outputs.put("Key1", "value1");
526 when(heatUtils.queryStackForOutputs("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12")).thenReturn(outputs);
528 MsoVnfAdapterImpl instance = new MsoVnfAdapterImpl();
529 MsoRequest msoRequest = getMsoRequest();
531 instance.deleteVfModule("mdt1", "88a6ca3ee0394ade9403f075db23167e", "vSAMP12", msoRequest,
532 new Holder<Map<String, String>>());
533 } catch (Exception e) {
538 private VfModuleCustomization getVfModuleCustomization() {
539 VfModuleCustomization vfModuleCustomization = new VfModuleCustomization();
540 VfModule vfModule = new VfModule();
541 vfModule.setIsBase(false);
543 HeatTemplate heatTemplate = new HeatTemplate();
544 heatTemplate.setTemplateBody("");
545 heatTemplate.setTimeoutMinutes(200);
546 HeatTemplateParam heatTemplateParam = new HeatTemplateParam();
547 heatTemplateParam.setParamAlias("ParamAlias");
548 heatTemplateParam.setRequired(true);
549 heatTemplateParam.setParamName("test");
550 Set set = new HashSet();
551 set.add(heatTemplateParam);
552 heatTemplate.setParameters(set);
553 vfModule.setModuleHeatTemplate(heatTemplate);
554 vfModuleCustomization.setVfModule(vfModule);
556 HeatEnvironment heatEnvironment = new HeatEnvironment();
557 heatEnvironment.setEnvironment("parameters:ist");
558 vfModuleCustomization.setHeatEnvironment(heatEnvironment);
559 return vfModuleCustomization;