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;
46 import javax.ws.rs.core.MediaType;
47 import javax.ws.rs.core.Response;
48 import javax.ws.rs.core.UriBuilder;
50 import java.io.IOException;
51 import java.util.HashMap;
54 import static com.shazam.shazamcrest.MatcherAssert.assertThat;
55 import static com.shazam.shazamcrest.matcher.Matchers.sameBeanAs;
56 import static org.junit.Assert.assertEquals;
57 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeletePublicUrlStackByNameAndID_204;
58 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackDeleteStacks;
59 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetPublicUrlStackByNameAndID_200;
60 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_200;
61 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStackVfModule_404;
62 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksBaseStack_200;
63 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_200;
64 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksStackId_404;
65 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVUSP_404;
66 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModuleWithLocationHeader_200;
67 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksVfModule_200;
68 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_200;
69 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacksWithBody_404;
70 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackGetStacks_404;
71 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPostStacks_200;
72 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackPutStacks_200;
73 import static org.onap.so.bpmn.mock.StubOpenStack.mockOpenStackResponseAccess;
75 public class VnfAdapterRestTest extends BaseRestTestUtils {
79 private JettisonStyleMapperProvider jettisonTypeObjectMapper;
80 private static final String MESSAGE_ID = "62265093-277d-4388-9ba6-449838ade586-1517252396874";
81 private static final String AAI_VNF_ID = "c93e0d34-5b63-45de-bbae-b0fe49dd3bd9";
82 private static final String MSO_REQUEST_ID = "62265093-277d-4388-9ba6-449838ade586";
83 private static final String MSO_SERVICE_INSTANCE_ID = "4147e06f-1b89-49c5-b21f-4faf8dc9805a";
84 private static final String CLOUDSITE_ID = "mtn13";
85 private static final String CLOUD_OWNER = "CloudOwner";
86 private static final String TENANT_ID = "0422ffb57ba042c0800a29dc85ca70f8";
87 private static final String VNF_TYPE = "MSOTADevInfra_vSAMP10a_Service/vSAMP10a 1";
88 private static final String VNF_NAME = "MSO-DEV-VNF-1802-it3-pwt3-vSAMP10a-1XXX-Replace";
89 private static final String VNF_VERSION = "1.0";
90 private static final String VF_MODULE_ID = "1d48aaec-b7f3-4c24-ba4a-4e798ed3223c";
91 private static final String VF_MODULE_NAME = "DEV-VF-1802-it3-pwt3-v6-vSAMP10a-addon2-Replace-1001";
92 private static final String VF_MODULE_TYPE = "vSAMP10aDEV::PCM::module-2";
93 private static final String MODEL_CUSTOMIZATION_UUID = "cb82ffd8-252a-11e7-93ae-92361f002671";
94 private static final String BASE_VF_MODULE_ID = "3d7ff7b4-720b-4604-be0a-1974fc58ed96";
95 // vfModuleParams specific variables
96 private static final String NETWORK_NAME = "Dev-vSAMP10a-ntwk-1802-pwt3-v6-Replace-1001";
97 private static final String SERVER_NAME = "Dev-vSAMP10a-addon2-1802-pwt3-v6-Replace-1001";
98 private static final String IMAGE = "ubuntu_14.04_IPv6";
99 private static final String EXN_DIRECT_NET_FQDN = "direct";
100 private static final String EXN_HSL_NET_FQDN = "hsl";
101 private static final String AVAILABILITY_ZONE_0 = "nova";
102 private static final String VF_MODULE_INDEX = "0";
103 private static final String REQUEST_TYPE = "";
106 public void testCreateVfModule() throws JSONException, JsonParseException, JsonMappingException, IOException {
108 CreateVfModuleRequest request = populateCreateVfModuleRequest();
110 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
112 mockOpenStackGetStackVfModule_404(wireMockServer);
114 mockOpenStackPostStacks_200(wireMockServer);
116 mockOpenStackGetStackVfModule_200(wireMockServer);
118 headers.add("Accept", MediaType.APPLICATION_JSON);
119 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
121 ResponseEntity<CreateVfModuleResponse> response = restTemplate.exchange(
122 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
123 entity, CreateVfModuleResponse.class);
125 ResponseEntity<CreateVfModuleResponse> responseV2 = restTemplate.exchange(
126 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
127 entity, CreateVfModuleResponse.class);
129 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
130 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
132 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
133 assertThat(response.getBody(), sameBeanAs(expectedResponse));
135 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
136 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
140 public void testCreateVfModuleAsyncCall() throws Exception {
141 CreateVfModuleRequest request = populateCreateVfModuleRequest();
142 request.setNotificationUrl( createURLWithPort("/mso/WorkflowMesssage"));
144 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
145 mockOpenStackGetStackVfModule_404(wireMockServer);
146 mockOpenStackPostStacks_200(wireMockServer);
147 mockOpenStackGetStackVfModule_200(wireMockServer);
149 headers.add("Accept", MediaType.APPLICATION_JSON);
150 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
152 ResponseEntity<CreateVfModuleResponse> response = restTemplate.exchange(
153 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
154 entity, CreateVfModuleResponse.class);
156 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
157 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
159 assertEquals(Response.Status.ACCEPTED.getStatusCode(), response.getStatusCode().value());
163 public void testCreateVfModuleWithEnableBridgeNull()
164 throws JSONException, JsonParseException, JsonMappingException, IOException {
166 CreateVfModuleRequest request = new CreateVfModuleRequest();
167 request.setBackout(true);
168 request.setSkipAAI(true);
169 request.setFailIfExists(false);
170 MsoRequest msoReq = new MsoRequest();
171 boolean failIfExists = true;
172 Boolean enableBridge = null;
173 Map<String, Object> vfModuleParams = new HashMap<>();
176 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
177 vfModuleParams.put("vnf_id", AAI_VNF_ID);
178 vfModuleParams.put("network_name", NETWORK_NAME);
179 vfModuleParams.put("vnf_name", VNF_NAME);
180 vfModuleParams.put("environment_context", "");
181 vfModuleParams.put("server_name", SERVER_NAME);
182 vfModuleParams.put("image", IMAGE);
183 vfModuleParams.put("workload_context", "");
184 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
185 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
186 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
187 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
188 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
190 msoReq.setRequestId(MSO_REQUEST_ID);
191 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
192 request.setMsoRequest(msoReq);
193 request.setRequestType(REQUEST_TYPE);
194 request.setCloudSiteId(CLOUDSITE_ID);
195 request.setTenantId(TENANT_ID);
196 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
197 request.setVnfId(AAI_VNF_ID);
198 request.setVnfVersion(VNF_VERSION);
199 request.setVfModuleId(VF_MODULE_ID);
200 request.setVfModuleName(VF_MODULE_NAME);
201 request.setBaseVfModuleId(BASE_VF_MODULE_ID);
202 request.setFailIfExists(failIfExists);
203 request.setEnableBridge(enableBridge);
204 request.setVfModuleParams(vfModuleParams);
205 request.setMessageId(MESSAGE_ID);
207 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
209 mockOpenStackGetStackVfModule_404(wireMockServer);
211 mockOpenStackPostStacks_200(wireMockServer);
213 mockOpenStackGetStackVfModule_200(wireMockServer);
216 headers.add("Accept", MediaType.APPLICATION_JSON);
217 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
219 ResponseEntity<CreateVfModuleResponse> response = restTemplate.exchange(
220 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
221 entity, CreateVfModuleResponse.class);
223 CreateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
224 new File("src/test/resources/__files/CreateVfModuleResponse.json"), CreateVfModuleResponse.class);
226 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
227 assertThat(response.getBody(), sameBeanAs(expectedResponse));
231 public void testCreateVfModuleFail() throws IOException{
233 CreateVfModuleRequest request = new CreateVfModuleRequest();
234 request.setBackout(true);
235 request.setSkipAAI(true);
236 request.setFailIfExists(false);
237 MsoRequest msoReq = new MsoRequest();
238 boolean failIfExists = true;
239 boolean enableBridge = false;
240 Map<String, Object> vfModuleParams = new HashMap<>();
242 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
243 vfModuleParams.put("vnf_id", AAI_VNF_ID);
244 vfModuleParams.put("network_name", NETWORK_NAME);
245 vfModuleParams.put("vnf_name", VNF_NAME);
246 vfModuleParams.put("environment_context", "");
247 vfModuleParams.put("server_name", SERVER_NAME);
248 vfModuleParams.put("image", IMAGE);
249 vfModuleParams.put("workload_context", "");
250 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
251 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
252 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
253 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
254 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
256 msoReq.setRequestId(MSO_REQUEST_ID);
257 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
258 request.setMsoRequest(msoReq);
259 request.setRequestType(REQUEST_TYPE);
260 request.setCloudSiteId(CLOUDSITE_ID);
261 request.setTenantId(TENANT_ID);
262 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
263 request.setVnfId(AAI_VNF_ID);
264 request.setVnfType(VNF_TYPE);
265 request.setVnfVersion(VNF_VERSION);
266 request.setVfModuleId(VF_MODULE_ID);
267 request.setVfModuleName(VF_MODULE_NAME);
268 request.setVfModuleType(VF_MODULE_TYPE);
269 request.setBaseVfModuleStackId(BASE_VF_MODULE_ID);
270 request.setFailIfExists(failIfExists);
271 request.setEnableBridge(enableBridge);
272 request.setVfModuleParams(vfModuleParams);
273 request.setMessageId(MESSAGE_ID);
275 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
277 mockOpenStackGetStackVfModule_404(wireMockServer);
279 mockOpenStackGetStacks_404(wireMockServer);
281 mockOpenStackPostStacks_200(wireMockServer);
283 mockOpenStackGetStackVfModule_200(wireMockServer);
285 headers.add("Accept", MediaType.APPLICATION_JSON);
286 HttpEntity<CreateVfModuleRequest> entity = new HttpEntity<CreateVfModuleRequest>(request, headers);
288 ResponseEntity<VfModuleExceptionResponse> response = restTemplate.exchange(
289 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
290 entity, VfModuleExceptionResponse.class);
292 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
294 mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_IN_PROGRESS");
296 response = restTemplate.exchange(
297 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
298 entity, VfModuleExceptionResponse.class);
300 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
302 mockOpenStackGetStacksWithBody_200(wireMockServer, "DELETE_FAILED");
304 response = restTemplate.exchange(
305 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
306 entity, VfModuleExceptionResponse.class);
308 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
310 mockOpenStackGetStacksWithBody_200(wireMockServer, "UPDATE_COMPLETE");
312 response = restTemplate.exchange(
313 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
314 entity, VfModuleExceptionResponse.class);
316 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
318 mockOpenStackGetStacksWithBody_404(wireMockServer);
320 response = restTemplate.exchange(
321 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules"), HttpMethod.POST,
322 entity, VfModuleExceptionResponse.class);
324 assertEquals(Response.Status.BAD_REQUEST.getStatusCode(), response.getStatusCode().value());
329 public void testDeleteVfModule() throws IOException{
331 DeleteVfModuleRequest request = new DeleteVfModuleRequest();
332 MsoRequest msoRequest = new MsoRequest();
333 String vfModuleStackId = "stackId";
335 msoRequest.setRequestId(MSO_REQUEST_ID);
336 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
337 request.setCloudSiteId(CLOUDSITE_ID);
338 request.setTenantId(TENANT_ID);
339 request.setVfModuleId(VF_MODULE_ID);
340 request.setVfModuleStackId(vfModuleStackId);
341 request.setVnfId(AAI_VNF_ID);
342 request.setMsoRequest(msoRequest);
344 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
346 mockOpenStackPostStacks_200(wireMockServer);
348 mockOpenStackGetStacksStackId_404(wireMockServer);
350 mockOpenStackGetPublicUrlStackByNameAndID_200(wireMockServer, wireMockPort);
352 mockOpenStackDeletePublicUrlStackByNameAndID_204(wireMockServer);
355 headers.add("Accept", MediaType.APPLICATION_JSON);
356 HttpEntity<DeleteVfModuleRequest> entity = new HttpEntity<DeleteVfModuleRequest>(request, headers);
358 ResponseEntity<DeleteVfModuleResponse> response = restTemplate.exchange(
359 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID), HttpMethod.DELETE,
360 entity, DeleteVfModuleResponse.class);
362 ResponseEntity<DeleteVfModuleResponse> responseV2 = restTemplate.exchange(
363 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID), HttpMethod.DELETE,
364 entity, DeleteVfModuleResponse.class);
367 DeleteVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
368 new File("src/test/resources/__files/DeleteVfModuleResponse.json"), DeleteVfModuleResponse.class);
371 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
372 assertThat(response.getBody(), sameBeanAs(expectedResponse));
374 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
375 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
379 public void testUpdateVfModule() throws IOException{
381 UpdateVfModuleRequest request = new UpdateVfModuleRequest();
382 MsoRequest msoRequest = new MsoRequest();
383 String vfModuleStackId = "vfModuleStackId";
384 Boolean failIfExists = false;
385 Boolean backout = false;
386 msoRequest.setRequestId(MSO_REQUEST_ID);
387 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
389 Map<String, Object> vfModuleParams = new HashMap<>();
391 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
392 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
394 Map<String, String> vfModuleOutputs = new HashMap<String, String>();
396 vfModuleOutputs.put("output name", "output value");
398 request.setBackout(backout);
399 request.setCloudSiteId(CLOUDSITE_ID);
400 request.setFailIfExists(failIfExists);
401 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
402 request.setMsoRequest(msoRequest);
403 request.setRequestType(REQUEST_TYPE);
404 request.setTenantId(TENANT_ID);
405 request.setVfModuleId(VF_MODULE_ID);
406 request.setVfModuleName(VF_MODULE_NAME);
407 request.setVfModuleStackId(vfModuleStackId);
408 request.setBackout(backout);
409 request.setVfModuleParams(vfModuleParams);
411 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
413 mockOpenStackGetStacksVfModuleWithLocationHeader_200(wireMockServer, wireMockPort);
415 mockOpenStackGetStacksVfModule_200(wireMockServer, wireMockPort);
417 mockOpenStackGetStacksBaseStack_200(wireMockServer, wireMockPort);
419 mockOpenStackPutStacks_200(wireMockServer);
421 UpdateVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
422 new File("src/test/resources/__files/UpdateVfModuleResponse.json"), UpdateVfModuleResponse.class);
423 expectedResponse.setVfModuleOutputs(vfModuleOutputs);
425 headers.add("Accept", MediaType.APPLICATION_JSON);
426 HttpEntity<UpdateVfModuleRequest> entity = new HttpEntity<UpdateVfModuleRequest>(request, headers);
428 ResponseEntity<UpdateVfModuleResponse> response = restTemplate.exchange(
429 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE), HttpMethod.PUT,
430 entity, UpdateVfModuleResponse.class);
432 ResponseEntity<UpdateVfModuleResponse> responseV2 = restTemplate.exchange(
433 createURLWithPort("/services/rest/v2/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_TYPE), HttpMethod.PUT,
434 entity, UpdateVfModuleResponse.class);
436 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
437 assertThat(response.getBody(), sameBeanAs(expectedResponse));
439 assertEquals(Response.Status.OK.getStatusCode(), responseV2.getStatusCode().value());
440 assertThat(responseV2.getBody(), sameBeanAs(expectedResponse));
445 public void testRollbackVfModule() throws IOException {
448 MsoRequest msoRequest = new MsoRequest();
449 msoRequest.setRequestId(MSO_REQUEST_ID);
450 msoRequest.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
452 VfModuleRollback vfModuleRollback = new VfModuleRollback(AAI_VNF_ID, VF_MODULE_ID,
453 "StackId", false, TENANT_ID, CLOUD_OWNER, CLOUDSITE_ID, msoRequest, "messageId");
455 RollbackVfModuleRequest request = new RollbackVfModuleRequest();
456 request.setVfModuleRollback(vfModuleRollback);
458 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
460 mockOpenStackGetStacksStackId_200(wireMockServer, wireMockPort);
462 mockOpenStackDeleteStacks(wireMockServer);
464 mockOpenStackGetStacksVUSP_404(wireMockServer);
466 headers.add("Accept", MediaType.APPLICATION_JSON);
467 HttpEntity<RollbackVfModuleRequest> entity = new HttpEntity<RollbackVfModuleRequest>(request, headers);
469 ResponseEntity<RollbackVfModuleResponse> response = restTemplate.exchange(
470 createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID + "/rollback"), HttpMethod.DELETE,
471 entity, RollbackVfModuleResponse.class);
473 RollbackVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
474 new File("src/test/resources/__files/RollbackVfModuleResponse.json"),RollbackVfModuleResponse.class);
476 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
477 assertThat(response.getBody(), sameBeanAs(expectedResponse));
483 public void testQueryVfModule() throws IOException{
485 String testUrl = createURLWithPort("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID);
486 String testUri = UriBuilder.fromPath("/services/rest/v1/vnfs/" + AAI_VNF_ID + "/vf-modules/" + VF_MODULE_ID )
487 .host("localhost").port(wireMockPort).scheme("http")
488 //.queryParam("cloudSiteId", CLOUDSITE_ID).queryParam("tenantId", TENANT_ID)
490 System.out.println(testUri);
492 mockOpenStackResponseAccess(wireMockServer, wireMockPort);
495 headers.add("Accept", MediaType.APPLICATION_JSON);
496 //HttpEntity entity = new HttpEntity(null, headers);
497 ResponseEntity<QueryVfModuleResponse> response = restTemplate.getForEntity(testUri, QueryVfModuleResponse.class);
498 //System.out.println(response);
500 QueryVfModuleResponse expectedResponse = jettisonTypeObjectMapper.getMapper().readValue(
501 new File("src/test/resources/__files/QueryVfModuleResponse.json"),QueryVfModuleResponse.class);
503 assertEquals(Response.Status.OK.getStatusCode(), response.getStatusCode().value());
504 assertThat(response.getBody(), sameBeanAs(expectedResponse));
507 private CreateVfModuleRequest populateCreateVfModuleRequest(){
508 CreateVfModuleRequest request = new CreateVfModuleRequest();
509 request.setBackout(true);
510 request.setSkipAAI(true);
511 request.setFailIfExists(false);
512 MsoRequest msoReq = new MsoRequest();
513 boolean failIfExists = true;
514 boolean enableBridge = false;
515 Map<String, Object> vfModuleParams = new HashMap<>();
517 vfModuleParams.put("vf_module_id", VF_MODULE_ID);
518 vfModuleParams.put("vnf_id", AAI_VNF_ID);
519 vfModuleParams.put("network_name", NETWORK_NAME);
520 vfModuleParams.put("vnf_name", VNF_NAME);
521 vfModuleParams.put("environment_context", "");
522 vfModuleParams.put("server_name", SERVER_NAME);
523 vfModuleParams.put("image", IMAGE);
524 vfModuleParams.put("workload_context", "");
525 vfModuleParams.put("vf_module_index", VF_MODULE_INDEX);
526 vfModuleParams.put("vf_module_name", VF_MODULE_NAME);
527 vfModuleParams.put("availability_zone_0", AVAILABILITY_ZONE_0);
528 vfModuleParams.put("exn_direct_net_fqdn", EXN_DIRECT_NET_FQDN);
529 vfModuleParams.put("exn_hsl_net_fqdn", EXN_HSL_NET_FQDN);
531 msoReq.setRequestId(MSO_REQUEST_ID);
532 msoReq.setServiceInstanceId(MSO_SERVICE_INSTANCE_ID);
533 request.setMsoRequest(msoReq);
534 request.setRequestType(REQUEST_TYPE);
535 request.setCloudSiteId(CLOUDSITE_ID);
536 request.setTenantId(TENANT_ID);
537 request.setModelCustomizationUuid(MODEL_CUSTOMIZATION_UUID);
538 request.setVnfId(AAI_VNF_ID);
539 request.setVnfType(VNF_TYPE);
540 request.setVnfVersion(VNF_VERSION);
541 request.setVfModuleId(VF_MODULE_ID);
542 request.setVfModuleName(VF_MODULE_NAME);
543 request.setVfModuleType(VF_MODULE_TYPE);
544 request.setBaseVfModuleId(BASE_VF_MODULE_ID);
545 request.setFailIfExists(failIfExists);
546 request.setEnableBridge(enableBridge);
547 request.setVfModuleParams(vfModuleParams);
548 request.setMessageId(MESSAGE_ID);