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;
23 import com.fasterxml.jackson.core.JsonParseException;
24 import com.fasterxml.jackson.databind.JsonMappingException;
25 import org.json.JSONException;
26 import org.junit.Ignore;
27 import org.junit.Test;
28 import org.onap.so.adapters.vnfrest.CreateVfModuleRequest;
29 import org.onap.so.adapters.vnfrest.CreateVfModuleResponse;
30 import org.onap.so.adapters.vnfrest.DeleteVfModuleRequest;
31 import org.onap.so.adapters.vnfrest.DeleteVfModuleResponse;
32 import org.onap.so.adapters.vnfrest.QueryVfModuleResponse;
33 import org.onap.so.adapters.vnfrest.RollbackVfModuleRequest;
34 import org.onap.so.adapters.vnfrest.RollbackVfModuleResponse;
35 import org.onap.so.adapters.vnfrest.UpdateVfModuleRequest;
36 import org.onap.so.adapters.vnfrest.UpdateVfModuleResponse;
37 import org.onap.so.adapters.vnfrest.VfModuleExceptionResponse;
38 import org.onap.so.adapters.vnfrest.VfModuleRollback;
39 import org.onap.so.client.policy.JettisonStyleMapperProvider;
40 import org.onap.so.entity.MsoRequest;
41 import org.springframework.beans.factory.annotation.Autowired;
42 import org.springframework.http.HttpEntity;
43 import org.springframework.http.HttpMethod;
44 import org.springframework.http.ResponseEntity;
45 import javax.ws.rs.core.MediaType;
46 import javax.ws.rs.core.Response;
47 import javax.ws.rs.core.UriBuilder;
49 import java.io.IOException;
50 import java.util.HashMap;
52 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
53 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
54 import static org.junit.Assert.assertEquals;
55 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeletePublicUrlStackByNameAndID_204;
56 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStacks;
57 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetPublicUrlStackByNameAndID_200;
58 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
59 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
60 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksBaseStack_200;
61 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_200;
62 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_404;
63 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVUSP_404;
64 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModuleWithLocationHeader_200;
65 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModule_200;
66 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_200;
67 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_404;
68 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacks_404;
69 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
70 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStacks_200;
71 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
73 public class VnfAdapterRestTest extends BaseRestTestUtils {
77 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
78 private static final String MESSAGE_ID = "62265093-277d-4388-9ba6-449838ade586-1517252396874";
79 private static final String AAI_VNF_ID = "c93e0d34-5b63-45de-bbae-b0fe49dd3bd9";
80 private static final String MSO_REQUEST_ID = "62265093-277d-4388-9ba6-449838ade586";
81 private static final String MSO_SERVICE_INSTANCE_ID = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
82 private static final String CLOUDSITE_ID = "mtn13";
83 private static final String CLOUD_OWNER = "CloudOwner";
84 private static final String TENANT_ID = "0422ffb57ba042c0800a29dc85ca70f8";
85 private static final String VNF_TYPE = "MSOTADevInfra_vSAMP10a_Service/vSAMP10a 1";
86 private static final String VNF_NAME = "MSO-DEV-VNF-1802-it3-pwt3-vSAMP10a-1XXX-Replace";
87 private static final String VNF_VERSION = "1.0";
88 private static final String VF_MODULE_ID = "1d48aaec-b7f3-4c24-ba4a-4e798ed3223c";
89 private static final String VF_MODULE_NAME = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001";
90 private static final String VF_MODULE_TYPE = "vSAMP10aDEV::PCM::module-2";
91 private static final String MODEL_CUSTOMIZATION_UUID = "cb82ffd8-252a-11e7-93ae-92361f002671";
92 private static final String BASE_VF_MODULE_ID = "3d7ff7b4-720b-4604-be0a-1974fc58ed96";
93 // vfModuleParams specific variables
94 private static final String NETWORK_NAME = "Dev-vSAMP10a-ntwk-1802-pwt3-v6-Replace-1001";
95 private static final String SERVER_NAME = "Dev-vSAMP10a-addon2-1802-pwt3-v6-Replace-1001";
96 private static final String IMAGE = "ubuntu_14.04_IPv6";
97 private static final String EXN_DIRECT_NET_FQDN = "direct";
98 private static final String EXN_HSL_NET_FQDN = "hsl";
99 private static final String AVAILABILITY_ZONE_0 = "nova";
100 private static final String VF_MODULE_INDEX = "0";
101 private static final String REQUEST_TYPE = "";
104 public void testCreateVfModule() throws JSONException, JsonParseException, JsonMappingException, IOException {
106 CreateVfModuleRequest request = populateCreateVfModuleRequest();
108 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
110 mockOpenStackGetStackVfModule_404(wireMockServer);
112 mockOpenStackPostStacks_200(wireMockServer);
114 mockOpenStackGetStackVfModule_200(wireMockServer);
116 headers.add("Accept", MediaType.APPLICATION_JSON);
117 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
119 ResponseEntity<CreateVfModuleResponse> response =
120 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
121 HttpMethod.POST, entity, CreateVfModuleResponse.class);
123 ResponseEntity<CreateVfModuleResponse> responseV2 =
124 restTemplate.exchange(createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules"),
125 HttpMethod.POST, entity, CreateVfModuleResponse.class);
127 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
128 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
130 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
131 assertThat(response.getBody(), sameBeanAs(expectedResponse));
133 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
134 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
138 public void testCreateVfModuleAsyncCall() throws Exception {
139 CreateVfModuleRequest request = populateCreateVfModuleRequest();
140 request.setNotificationUrl(createURLWithPort("/mso/WorkflowMesssage"));
142 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
143 mockOpenStackGetStackVfModule_404(wireMockServer);
144 mockOpenStackPostStacks_200(wireMockServer);
145 mockOpenStackGetStackVfModule_200(wireMockServer);
147 headers.add("Accept", MediaType.APPLICATION_JSON);
148 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
150 ResponseEntity<CreateVfModuleResponse> response =
151 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
152 HttpMethod.POST, entity, CreateVfModuleResponse.class);
154 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
155 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
157 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
161 public void testCreateVfModuleWithEnableBridgeNull()
162 throws JSONException, JsonParseException, JsonMappingException, IOException {
164 CreateVfModuleRequest request = new CreateVfModuleRequest();
165 request.setBackout(true);
166 request.setSkipAAI(true);
167 request.setFailIfExists(false);
168 MsoRequest msoReq = new MsoRequest();
169 boolean failIfExists = true;
170 Boolean enableBridge = null;
171 Map<String, Object> vfModuleParams = new HashMap<>();
174 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
175 vfModuleParams.put("vnf_id", AAI_VNF_ID);
176 vfModuleParams.put("network_name", NETWORK_NAME);
177 vfModuleParams.put("vnf_name", VNF_NAME);
178 vfModuleParams.put("environment_context", "");
179 vfModuleParams.put("server_name", SERVER_NAME);
180 vfModuleParams.put("image", IMAGE);
181 vfModuleParams.put("workload_context", "");
182 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
183 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
184 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
185 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
186 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
188 msoReq.setRequestId(MSO_REQUEST_ID);
189 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
190 request.setMsoRequest(msoReq);
191 request.setRequestType(REQUEST_TYPE);
192 request.setCloudSiteId(CLOUDSITE_ID);
193 request.setTenantId(TENANT_ID);
194 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
195 request.setVnfId(AAI_VNF_ID);
196 request.setVnfVersion(VNF_VERSION);
197 request.setVfModuleId(VF_MODULE_ID);
198 request.setVfModuleName(VF_MODULE_NAME);
199 request.setBaseVfModuleId(BASE_VF_MODULE_ID);
200 request.setFailIfExists(failIfExists);
201 request.setEnableBridge(enableBridge);
202 request.setVfModuleParams(vfModuleParams);
203 request.setMessageId(MESSAGE_ID);
205 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
207 mockOpenStackGetStackVfModule_404(wireMockServer);
209 mockOpenStackPostStacks_200(wireMockServer);
211 mockOpenStackGetStackVfModule_200(wireMockServer);
214 headers.add("Accept", MediaType.APPLICATION_JSON);
215 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
217 ResponseEntity<CreateVfModuleResponse> response =
218 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
219 HttpMethod.POST, entity, CreateVfModuleResponse.class);
221 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
222 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
224 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
225 assertThat(response.getBody(), sameBeanAs(expectedResponse));
229 public void testCreateVfModuleFail() throws IOException {
231 CreateVfModuleRequest request = new CreateVfModuleRequest();
232 request.setBackout(true);
233 request.setSkipAAI(true);
234 request.setFailIfExists(false);
235 MsoRequest msoReq = new MsoRequest();
236 boolean failIfExists = true;
237 boolean enableBridge = false;
238 Map<String, Object> vfModuleParams = new HashMap<>();
240 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
241 vfModuleParams.put("vnf_id", AAI_VNF_ID);
242 vfModuleParams.put("network_name", NETWORK_NAME);
243 vfModuleParams.put("vnf_name", VNF_NAME);
244 vfModuleParams.put("environment_context", "");
245 vfModuleParams.put("server_name", SERVER_NAME);
246 vfModuleParams.put("image", IMAGE);
247 vfModuleParams.put("workload_context", "");
248 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
249 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
250 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
251 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
252 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
254 msoReq.setRequestId(MSO_REQUEST_ID);
255 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
256 request.setMsoRequest(msoReq);
257 request.setRequestType(REQUEST_TYPE);
258 request.setCloudSiteId(CLOUDSITE_ID);
259 request.setTenantId(TENANT_ID);
260 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
261 request.setVnfId(AAI_VNF_ID);
262 request.setVnfType(VNF_TYPE);
263 request.setVnfVersion(VNF_VERSION);
264 request.setVfModuleId(VF_MODULE_ID);
265 request.setVfModuleName(VF_MODULE_NAME);
266 request.setVfModuleType(VF_MODULE_TYPE);
267 request.setBaseVfModuleStackId(BASE_VF_MODULE_ID);
268 request.setFailIfExists(failIfExists);
269 request.setEnableBridge(enableBridge);
270 request.setVfModuleParams(vfModuleParams);
271 request.setMessageId(MESSAGE_ID);
273 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
275 mockOpenStackGetStackVfModule_404(wireMockServer);
277 mockOpenStackGetStacks_404(wireMockServer);
279 mockOpenStackPostStacks_200(wireMockServer);
281 mockOpenStackGetStackVfModule_200(wireMockServer);
283 headers.add("Accept", MediaType.APPLICATION_JSON);
284 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
286 ResponseEntity<VfModuleExceptionResponse> response =
287 restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
288 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
290 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
292 mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_IN_PROGRESS");
294 response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
295 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
297 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
299 mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_FAILED");
301 response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
302 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
304 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
306 mockOpenStackGetStacksWithBody_200(wireMockServer, "UPDATE_COMPLETE");
308 response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
309 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
311 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
313 mockOpenStackGetStacksWithBody_404(wireMockServer);
315 response = restTemplate.exchange(createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"),
316 HttpMethod.POST, entity, VfModuleExceptionResponse.class);
318 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
323 public void testDeleteVfModule() throws IOException {
325 DeleteVfModuleRequest request = new DeleteVfModuleRequest();
326 MsoRequest msoRequest = new MsoRequest();
327 String vfModuleStackId = "stackId";
329 msoRequest.setRequestId(MSO_REQUEST_ID);
330 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
331 request.setCloudSiteId(CLOUDSITE_ID);
332 request.setTenantId(TENANT_ID);
333 request.setVfModuleId(VF_MODULE_ID);
334 request.setVfModuleStackId(vfModuleStackId);
335 request.setVnfId(AAI_VNF_ID);
336 request.setMsoRequest(msoRequest);
338 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
340 mockOpenStackPostStacks_200(wireMockServer);
342 mockOpenStackGetStacksStackId_404(wireMockServer);
344 mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockServer, wireMockPort);
346 mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
349 headers.add("Accept", MediaType.APPLICATION_JSON);
350 HttpEntity<DeleteVfModuleRequest> entity = new HttpEntity<DeleteVfModuleRequest>(request, headers);
352 ResponseEntity<DeleteVfModuleResponse> response = restTemplate.exchange(
353 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID),
354 HttpMethod.DELETE, entity, DeleteVfModuleResponse.class);
356 ResponseEntity<DeleteVfModuleResponse> responseV2 = restTemplate.exchange(
357 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID),
358 HttpMethod.DELETE, entity, DeleteVfModuleResponse.class);
361 DeleteVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
362 new File("src/test/resources/__files/DeleteVfModuleResponse.json"), DeleteVfModuleResponse.class);
365 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
366 assertThat(response.getBody(), sameBeanAs(expectedResponse));
368 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
369 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
373 public void testUpdateVfModule() throws IOException {
375 UpdateVfModuleRequest request = new UpdateVfModuleRequest();
376 MsoRequest msoRequest = new MsoRequest();
377 String vfModuleStackId = "vfModuleStackId";
378 Boolean failIfExists = false;
379 Boolean backout = false;
380 msoRequest.setRequestId(MSO_REQUEST_ID);
381 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
383 Map<String, Object> vfModuleParams = new HashMap<>();
385 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
386 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
388 Map<String, String> vfModuleOutputs = new HashMap<String, String>();
390 vfModuleOutputs.put("output name", "output value");
392 request.setBackout(backout);
393 request.setCloudSiteId(CLOUDSITE_ID);
394 request.setFailIfExists(failIfExists);
395 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
396 request.setMsoRequest(msoRequest);
397 request.setRequestType(REQUEST_TYPE);
398 request.setTenantId(TENANT_ID);
399 request.setVfModuleId(VF_MODULE_ID);
400 request.setVfModuleName(VF_MODULE_NAME);
401 request.setVfModuleStackId(vfModuleStackId);
402 request.setBackout(backout);
403 request.setVfModuleParams(vfModuleParams);
405 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
407 mockOpenStackGetStacksVfModuleWithLocationHeader_200(wireMockServer, wireMockPort);
409 mockOpenStackGetStacksVfModule_200(wireMockServer, wireMockPort);
411 mockOpenStackGetStacksBaseStack_200(wireMockServer, wireMockPort);
413 mockOpenStackPutStacks_200(wireMockServer);
415 UpdateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
416 new File("src/test/resources/__files/UpdateVfModuleResponse.json"), UpdateVfModuleResponse.class);
417 expectedResponse.setVfModuleOutputs(vfModuleOutputs);
419 headers.add("Accept", MediaType.APPLICATION_JSON);
420 HttpEntity<UpdateVfModuleRequest> entity = new HttpEntity<UpdateVfModuleRequest>(request, headers);
422 ResponseEntity<UpdateVfModuleResponse> response = restTemplate.exchange(
423 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE),
424 HttpMethod.PUT, entity, UpdateVfModuleResponse.class);
426 ResponseEntity<UpdateVfModuleResponse> responseV2 = restTemplate.exchange(
427 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE),
428 HttpMethod.PUT, entity, UpdateVfModuleResponse.class);
430 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
431 assertThat(response.getBody(), sameBeanAs(expectedResponse));
433 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
434 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
439 public void testRollbackVfModule() throws IOException {
442 MsoRequest msoRequest = new MsoRequest();
443 msoRequest.setRequestId(MSO_REQUEST_ID);
444 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
446 VfModuleRollback vfModuleRollback = new VfModuleRollback(AAI_VNF_ID, VF_MODULE_ID, "StackId", false, TENANT_ID,
447 CLOUD_OWNER, CLOUDSITE_ID, msoRequest, "messageId");
449 RollbackVfModuleRequest request = new RollbackVfModuleRequest();
450 request.setVfModuleRollback(vfModuleRollback);
452 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
454 mockOpenStackGetStacksStackId_200(wireMockServer, wireMockPort);
456 mockOpenStackDeleteStacks(wireMockServer);
458 mockOpenStackGetStacksVUSP_404(wireMockServer);
460 headers.add("Accept", MediaType.APPLICATION_JSON);
461 HttpEntity<RollbackVfModuleRequest> entity = new HttpEntity<RollbackVfModuleRequest>(request, headers);
463 ResponseEntity<RollbackVfModuleResponse> response = restTemplate.exchange(
464 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID + "/rollback"),
465 HttpMethod.DELETE, entity, RollbackVfModuleResponse.class);
467 RollbackVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
468 new File("src/test/resources/__files/RollbackVfModuleResponse.json"), RollbackVfModuleResponse.class);
470 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
471 assertThat(response.getBody(), sameBeanAs(expectedResponse));
477 public void testQueryVfModule() throws IOException {
479 String testUrl = createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID);
480 String testUri = UriBuilder.fromPath("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID)
481 .host("localhost").port(wireMockPort).scheme("http")
482 // .queryParam("cloudSiteId", CLOUDSITE_ID).queryParam("tenantId", TENANT_ID)
484 System.out.println(testUri);
486 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
489 headers.add("Accept", MediaType.APPLICATION_JSON);
490 // HttpEntity entity = new HttpEntity(null, headers);
491 ResponseEntity<QueryVfModuleResponse> response =
492 restTemplate.getForEntity(testUri, QueryVfModuleResponse.class);
493 // System.out.println(response);
495 QueryVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
496 new File("src/test/resources/__files/QueryVfModuleResponse.json"), QueryVfModuleResponse.class);
498 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
499 assertThat(response.getBody(), sameBeanAs(expectedResponse));
502 private CreateVfModuleRequest populateCreateVfModuleRequest() {
503 CreateVfModuleRequest request = new CreateVfModuleRequest();
504 request.setBackout(true);
505 request.setSkipAAI(true);
506 request.setFailIfExists(false);
507 MsoRequest msoReq = new MsoRequest();
508 boolean failIfExists = true;
509 boolean enableBridge = false;
510 Map<String, Object> vfModuleParams = new HashMap<>();
512 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
513 vfModuleParams.put("vnf_id", AAI_VNF_ID);
514 vfModuleParams.put("network_name", NETWORK_NAME);
515 vfModuleParams.put("vnf_name", VNF_NAME);
516 vfModuleParams.put("environment_context", "");
517 vfModuleParams.put("server_name", SERVER_NAME);
518 vfModuleParams.put("image", IMAGE);
519 vfModuleParams.put("workload_context", "");
520 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
521 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
522 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
523 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
524 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
526 msoReq.setRequestId(MSO_REQUEST_ID);
527 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
528 request.setMsoRequest(msoReq);
529 request.setRequestType(REQUEST_TYPE);
530 request.setCloudSiteId(CLOUDSITE_ID);
531 request.setTenantId(TENANT_ID);
532 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
533 request.setVnfId(AAI_VNF_ID);
534 request.setVnfType(VNF_TYPE);
535 request.setVnfVersion(VNF_VERSION);
536 request.setVfModuleId(VF_MODULE_ID);
537 request.setVfModuleName(VF_MODULE_NAME);
538 request.setVfModuleType(VF_MODULE_TYPE);
539 request.setBaseVfModuleId(BASE_VF_MODULE_ID);
540 request.setFailIfExists(failIfExists);
541 request.setEnableBridge(enableBridge);
542 request.setVfModuleParams(vfModuleParams);
543 request.setMessageId(MESSAGE_ID);