413e35a32690bfbabc7ae8ad289e616767ab1e87
[so.git] /
1 /*- \r
2  * ============LICENSE_START======================================================= \r
3  * ONAP - SO \r
4  * ================================================================================ \r
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. \r
6  * ================================================================================ \r
7  * Licensed under the Apache License, Version 2.0 (the "License"); \r
8  * you may not use this file except in compliance with the License. \r
9  * You may obtain a copy of the License at \r
10  * \r
11  *      http://www.apache.org/licenses/LICENSE-2.0 \r
12  * \r
13  * Unless required by applicable law or agreed to in writing, software \r
14  * distributed under the License is distributed on an "AS IS" BASIS, \r
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. \r
16  * See the License for the specific language governing permissions and \r
17  * limitations under the License. \r
18  * ============LICENSE_END========================================================= \r
19  */\r
20 \r
21 package org.openecomp.mso.bpmn.infrastructure;\r
22 \r
23 import static com.github.tomakehurst.wiremock.client.WireMock.aResponse;\r
24 import static com.github.tomakehurst.wiremock.client.WireMock.containing;\r
25 import static com.github.tomakehurst.wiremock.client.WireMock.delete;\r
26 import static com.github.tomakehurst.wiremock.client.WireMock.get;\r
27 import static com.github.tomakehurst.wiremock.client.WireMock.post;\r
28 import static com.github.tomakehurst.wiremock.client.WireMock.put;\r
29 import static com.github.tomakehurst.wiremock.client.WireMock.stubFor;\r
30 import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo;\r
31 import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching;\r
32 import static org.openecomp.mso.bpmn.mock.StubResponseDatabase.mockUpdateRequestDB;\r
33 import static org.openecomp.mso.bpmn.mock.StubResponseVNFAdapter.mockVNFDelete;\r
34 \r
35 import java.io.IOException;\r
36 import java.util.HashMap;\r
37 import java.util.Map;\r
38 import java.util.UUID;\r
39 \r
40 import org.camunda.bpm.engine.test.Deployment;\r
41 import org.junit.Ignore;\r
42 import org.junit.Test;\r
43 import org.openecomp.mso.bpmn.common.WorkflowTest;\r
44 import org.openecomp.mso.bpmn.common.workflow.service.WorkflowResponse;\r
45 import org.openecomp.mso.bpmn.core.WorkflowException;\r
46 import org.openecomp.mso.bpmn.mock.FileUtil;\r
47 \r
48 import com.github.tomakehurst.wiremock.client.WireMock;\r
49 \r
50 /**\r
51  * Unit test for DoDeleteVfModule.bpmn.\r
52  */\r
53 public class DeleteVfModuleInfraTest extends WorkflowTest {\r
54     private final CallbackSet callbacks = new CallbackSet();\r
55 \r
56     private static final String EOL = "\n";\r
57 \r
58     private final String vnfAdapterDeleteCallback =\r
59             "<deleteVfModuleResponse>" + EOL +\r
60                     "    <vnfId>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnfId>" + EOL +\r
61                     "    <vfModuleId>973ed047-d251-4fb9-bf1a-65b8949e0a73</vfModuleId>" + EOL +\r
62                     "    <vfModuleDeleted>true</vfModuleDeleted>" + EOL +\r
63                     "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
64                     "   <vfModuleOutputs>" + EOL +\r
65                     "    <entry>" + EOL +\r
66                     "    <key>policyKey1_contrail_network_policy_fqdn</key>" + EOL +\r
67                     " <value>MSOTest:DefaultPolicyFQDN1</value>" + EOL +\r
68                     "</entry>" + EOL +\r
69                     "<entry>" + EOL +\r
70                     "<key>policyKey2_contrail_network_policy_fqdn</key>" + EOL +\r
71                     "<value>MSOTest:DefaultPolicyFQDN2</value>" + EOL +\r
72                     "</entry>" + EOL +\r
73                     "    <entry>" + EOL +\r
74                     "    <key>oam_management_v4_address</key>" + EOL +\r
75                     " <value>1234</value>" + EOL +\r
76                     "</entry>" + EOL +\r
77                     "    <entry>" + EOL +\r
78                     "    <key>oam_management_v6_address</key>" + EOL +\r
79                     " <value>1234</value>" + EOL +\r
80                     "</entry>" + EOL +\r
81                     "</vfModuleOutputs>" + EOL +\r
82                     "</deleteVfModuleResponse>" + EOL;\r
83 \r
84     private final String vnfAdapterDeleteCallbackFail =\r
85             "<vfModuleException>" + EOL +\r
86                     "    <message>Error processing request to VNF-Async. Not Found.</message>" + EOL +\r
87                     "    <category>INTERNAL</category>" + EOL +\r
88                     "    <rolledBack>false</rolledBack>" + EOL +\r
89                     "    <messageId>{{MESSAGE-ID}}</messageId>" + EOL +\r
90                     "</vfModuleException>" + EOL;\r
91 \r
92     private final String sdncAdapterDeleteCallback =\r
93             "<output xmlns=\"org:onap:sdnctl:l3api\">" + EOL +\r
94                     "  <svc-request-id>{{REQUEST-ID}}</svc-request-id>" + EOL +\r
95                     "  <ack-final-indicator>Y</ack-final-indicator>" + EOL +\r
96                     "</output>" + EOL;\r
97 \r
98     public DeleteVfModuleInfraTest() throws IOException {\r
99         callbacks.put("sdncChangeDelete", sdncAdapterDeleteCallback);\r
100         callbacks.put("sdncDelete", sdncAdapterDeleteCallback);\r
101         callbacks.put("vnfDelete", vnfAdapterDeleteCallback);\r
102         callbacks.put("vnfDeleteFail", vnfAdapterDeleteCallbackFail);\r
103     }\r
104 \r
105     @Test\r
106     @Deployment(resources = {\r
107             "process/Infrastructure/DeleteVfModuleInfra.bpmn",\r
108             "subprocess/DoDeleteVfModule.bpmn",\r
109             "subprocess/PrepareUpdateAAIVfModule.bpmn",\r
110             "subprocess/UpdateAAIVfModule.bpmn",\r
111             "subprocess/UpdateAAIGenericVnf.bpmn",\r
112             "subprocess/DeleteAAIVfModule.bpmn",\r
113             "subprocess/SDNCAdapterV1.bpmn",\r
114             "subprocess/VnfAdapterRestV1.bpmn",\r
115             "subprocess/CompleteMsoProcess.bpmn",\r
116             "subprocess/FalloutHandler.bpmn"\r
117     })\r
118     @Ignore\r
119     public void TestDeleteVfModuleSuccess() throws Exception {\r
120         // delete the Base Module\r
121         // vnf-id=a27ce5a9-29c4-4c22-a017-6615ac73c721, vf-module-id=973ed047-d251-4fb9-bf1a-65b8949e0a73\r
122         String request =\r
123                 "<vnf-request xmlns=\"http://openecomp.org/mso/infra/vnf-request/v1\">" + EOL +\r
124                         "  <request-info>" + EOL +\r
125                         "    <request-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</request-id>" + EOL +\r
126                         "    <action>DELETE_VF_MODULE</action>" + EOL +\r
127                         "    <source>PORTAL</source>" + EOL +\r
128                         "  </request-info>" + EOL +\r
129                         "  <vnf-inputs>" + EOL +\r
130                         "    <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
131                         "    <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
132                         "    <vnf-type>asc_heat-int</vnf-type>" + EOL +\r
133                         "    <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
134                         "    <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
135                         "    <service-id>00000000-0000-0000-0000-000000000000</service-id>" + EOL +\r
136                         "    <service-type>SDN-ETHERNET-INTERNET</service-type>" + EOL +\r
137                         "    <tenant-id>fba1bd1e195a404cacb9ce17a9b2b421</tenant-id>" + EOL +\r
138                         "    <orchestration-status>pending-delete</orchestration-status>" + EOL +\r
139                         "    <aic-cloud-region>RDM2WAGPLCP</aic-cloud-region>" + EOL +\r
140                         "  </vnf-inputs>" + EOL +\r
141                         "  <vnf-params xmlns:tns=\"http://openecomp.org/mso/infra/vnf-request/v1\"/>" + EOL +\r
142                         "</vnf-request>" + EOL;\r
143         logStart();\r
144         WireMock.reset();\r
145 \r
146         stubFor(post(urlEqualTo("/SDNCAdapter"))\r
147                 .withRequestBody(containing("SvcAction>changedelete"))\r
148                 .willReturn(aResponse()\r
149                         .withStatus(200)\r
150                         .withHeader("Content-Type", "text/xml")\r
151                         .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
152         stubFor(post(urlEqualTo("/SDNCAdapter"))\r
153                 .withRequestBody(containing("SvcAction>delete"))\r
154                 .willReturn(aResponse()\r
155                         .withStatus(200)\r
156                         .withHeader("Content-Type", "text/xml")\r
157                         .withBodyFile("DeleteGenericVNFV1/sdncAdapterResponse.xml")));\r
158 \r
159         mockVNFDelete(".*", "/.*", 202);\r
160 //              MockAAIGenericVnfSearch();\r
161 //              MockAAIVfModulePUT(false);\r
162 //              MockAAIDeleteGenericVnf();\r
163 //              MockAAIDeleteVfModule();\r
164         mockUpdateRequestDB(200, "VfModularity/DBUpdateResponse.xml");\r
165 \r
166         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a73/[?]resource-version=0000073"))\r
167                 .willReturn(aResponse()\r
168                         .withStatus(200)));\r
169         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c720/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a75/[?]resource-version=0000075"))\r
170                 .willReturn(aResponse()\r
171                         .withStatus(200)));\r
172         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a78/[?]resource-version=0000078"))\r
173                 .willReturn(aResponse()\r
174                         .withStatus(200)));\r
175         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c719/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a77/[?]resource-version=0000077"))\r
176                 .willReturn(aResponse()\r
177                         .withStatus(500)\r
178                         .withHeader("Content-Type", "text/xml")\r
179                         .withBodyFile("aaiFault.xml")));\r
180         stubFor(get(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy\\?network-policy-fqdn=.*"))\r
181                 .willReturn(aResponse()\r
182                         .withStatus(200)\r
183                         .withHeader("Content-Type", "text/xml")\r
184                         .withBodyFile("VfModularity/QueryNetworkPolicy_AAIResponse_Success.xml")));\r
185 \r
186         stubFor(delete(urlMatching("/aai/v[0-9]+/network/network-policies/network-policy/.*"))\r
187                 .willReturn(aResponse()\r
188                         .withStatus(200)));\r
189 \r
190 \r
191         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/[?]resource-version=0000021"))\r
192                 .willReturn(aResponse()\r
193                         .withStatus(200)));\r
194         stubFor(delete(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718/[?]resource-version=0000018"))\r
195                 .willReturn(aResponse()\r
196                         .withStatus(500)\r
197                         .withHeader("Content-Type", "text/xml")\r
198                         .withBodyFile("aaiFault.xml")));\r
199 \r
200         stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
201                 .withRequestBody(containing("MMSC"))\r
202                 .willReturn(aResponse()\r
203                         .withStatus(200)));\r
204         stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/.*/vf-modules/vf-module/.*"))\r
205                 .withRequestBody(containing("PCRF"))\r
206                 .willReturn(aResponse()\r
207                         .withStatus(500)\r
208                         .withHeader("Content-Type", "text/xml")\r
209                         .withBodyFile("aaiFault.xml")));\r
210         stubFor(put(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721"))\r
211                 .willReturn(aResponse()\r
212                         .withStatus(200)));\r
213 \r
214         String body;\r
215 \r
216         // The following stubs are for CreateAAIVfModule and UpdateAAIVfModule\r
217 \r
218         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC23&depth=1"))\r
219                 .willReturn(aResponse()\r
220                         .withStatus(500)\r
221                         .withHeader("Content-Type", "text/xml")\r
222                         .withBodyFile("aaiFault.xml")));\r
223 \r
224         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC22&depth=1"))\r
225                 .willReturn(aResponse()\r
226                         .withStatus(404)\r
227                         .withHeader("Content-Type", "text/xml")\r
228                         .withBody("Generic VNF Not Found")));\r
229         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/768073c7-f41f-4822-9323-b75962763d74[?]depth=1"))\r
230                 .willReturn(aResponse()\r
231                         .withStatus(404)\r
232                         .withHeader("Content-Type", "text/xml")\r
233                         .withBody("Generic VNF Not Found")));\r
234 \r
235         body =\r
236                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
237                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
238                         "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
239                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
240                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
241                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
242                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
243                         "  <in-maint>false</in-maint>" + EOL +\r
244                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
245                         "  <resource-version>1508691</resource-version>" + EOL +\r
246                         "  <vf-modules>" + EOL +\r
247                         "    <vf-module>" + EOL +\r
248                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
249                         "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
250                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
251                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
252                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
253                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
254                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
255                         "      <resource-version>1508692</resource-version>" + EOL +\r
256                         "    </vf-module>" + EOL +\r
257                         "  </vf-modules>" + EOL +\r
258                         "  <relationship-list/>" + EOL +\r
259                         "  <l-interfaces/>" + EOL +\r
260                         "  <lag-interfaces/>" + EOL +\r
261                         "</generic-vnf>" + EOL;\r
262         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC21&depth=1"))\r
263                 .willReturn(aResponse()\r
264                         .withStatus(200)\r
265                         .withHeader("Content-Type", "text/xml")\r
266                         .withBody(body)));\r
267         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721[?]depth=1"))\r
268                 .willReturn(aResponse()\r
269                         .withStatus(200)\r
270                         .withHeader("Content-Type", "text/xml")\r
271                         .withBody(body)));\r
272 \r
273         body =\r
274                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
275                         "  <vnf-id>2f6aee38-1e2a-11e6-82d1-ffc7d9ee8aa4</vnf-id>" + EOL +\r
276                         "  <vnf-name>STMTN5MMSC20</vnf-name>" + EOL +\r
277                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
278                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
279                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
280                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
281                         "  <in-maint>false</in-maint>" + EOL +\r
282                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
283                         "  <resource-version>1508691</resource-version>" + EOL +\r
284                         "  <vf-modules>" + EOL +\r
285                         "    <vf-module>" + EOL +\r
286                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
287                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-0-0</vf-module-name>" + EOL +\r
288                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
289                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
290                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
291                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
292                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
293                         "      <resource-version>1508692</resource-version>" + EOL +\r
294                         "    </vf-module>" + EOL +\r
295                         "    <vf-module>" + EOL +\r
296                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</vf-module-id>" + EOL +\r
297                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-1-0</vf-module-name>" + EOL +\r
298                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</persona-model-id>" + EOL +\r
299                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
300                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
301                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
302                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
303                         "      <resource-version>1508692</resource-version>" + EOL +\r
304                         "    </vf-module>" + EOL +\r
305                         "  </vf-modules>" + EOL +\r
306                         "  <relationship-list/>" + EOL +\r
307                         "  <l-interfaces/>" + EOL +\r
308                         "  <lag-interfaces/>" + EOL +\r
309                         "</generic-vnf>" + EOL;\r
310         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/[?]vnf-name=STMTN5MMSC20&depth=1"))\r
311                 .willReturn(aResponse()\r
312                         .withStatus(200)\r
313                         .withHeader("Content-Type", "text/xml")\r
314                         .withBody(body)));\r
315         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/2f6aee38-1e2a-11e6-82d1-ffc7d9ee8aa4[?]depth=1"))\r
316                 .willReturn(aResponse()\r
317                         .withStatus(200)\r
318                         .withHeader("Content-Type", "text/xml")\r
319                         .withBody(body)));\r
320 \r
321         // The following stubs are for DeleteAAIVfModule\r
322 \r
323         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c723[?]depth=1"))\r
324                 .willReturn(aResponse()\r
325                         .withStatus(500)\r
326                         .withHeader("Content-Type", "text/xml")\r
327                         .withBodyFile("aaiFault.xml")));\r
328 \r
329         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c722[?]depth=1"))\r
330                 .willReturn(aResponse()\r
331                         .withStatus(404)\r
332                         .withHeader("Content-Type", "text/xml")\r
333                         .withBody("Generic VNF Not Found")));\r
334 \r
335         body =\r
336                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
337                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
338                         "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
339                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
340                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
341                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
342                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
343                         "  <in-maint>false</in-maint>" + EOL +\r
344                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
345                         "  <resource-version>0000021</resource-version>" + EOL +\r
346                         "  <vf-modules>" + EOL +\r
347                         "    <vf-module>" + EOL +\r
348                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
349                         "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
350                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
351                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
352                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
353                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
354                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
355                         "      <resource-version>0000073</resource-version>" + EOL +\r
356                         "    </vf-module>" + EOL +\r
357                         "  </vf-modules>" + EOL +\r
358                         "  <relationship-list/>" + EOL +\r
359                         "  <l-interfaces/>" + EOL +\r
360                         "  <lag-interfaces/>" + EOL +\r
361                         "</generic-vnf>" + EOL;\r
362         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721[?]depth=1"))\r
363                 .willReturn(aResponse()\r
364                         .withStatus(200)\r
365                         .withHeader("Content-Type", "text/xml")\r
366                         .withBody(body)));\r
367 \r
368         body =\r
369                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
370                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c720</vnf-id>" + EOL +\r
371                         "  <vnf-name>STMTN5MMSC20</vnf-name>" + EOL +\r
372                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
373                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
374                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
375                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
376                         "  <in-maint>false</in-maint>" + EOL +\r
377                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
378                         "  <resource-version>0000020</resource-version>" + EOL +\r
379                         "  <vf-modules>" + EOL +\r
380                         "    <vf-module>" + EOL +\r
381                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</vf-module-id>" + EOL +\r
382                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-0-0</vf-module-name>" + EOL +\r
383                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a74</persona-model-id>" + EOL +\r
384                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
385                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
386                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
387                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
388                         "      <resource-version>0000074</resource-version>" + EOL +\r
389                         "    </vf-module>" + EOL +\r
390                         "    <vf-module>" + EOL +\r
391                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a75</vf-module-id>" + EOL +\r
392                         "      <vf-module-name>STMTN5MMSC20-MMSC::module-1-0</vf-module-name>" + EOL +\r
393                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a75</persona-model-id>" + EOL +\r
394                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
395                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
396                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
397                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
398                         "      <resource-version>0000075</resource-version>" + EOL +\r
399                         "    </vf-module>" + EOL +\r
400                         "  </vf-modules>" + EOL +\r
401                         "  <relationship-list/>" + EOL +\r
402                         "  <l-interfaces/>" + EOL +\r
403                         "  <lag-interfaces/>" + EOL +\r
404                         "</generic-vnf>" + EOL;\r
405         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c720[?]depth=1"))\r
406                 .willReturn(aResponse()\r
407                         .withStatus(200)\r
408                         .withHeader("Content-Type", "text/xml")\r
409                         .withBody(body)));\r
410 \r
411         body =\r
412                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
413                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c719</vnf-id>" + EOL +\r
414                         "  <vnf-name>STMTN5MMSC19</vnf-name>" + EOL +\r
415                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
416                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
417                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
418                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
419                         "  <in-maint>false</in-maint>" + EOL +\r
420                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
421                         "  <resource-version>0000019</resource-version>" + EOL +\r
422                         "  <vf-modules>" + EOL +\r
423                         "    <vf-module>" + EOL +\r
424                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a76</vf-module-id>" + EOL +\r
425                         "      <vf-module-name>STMTN5MMSC19-MMSC::module-0-0</vf-module-name>" + EOL +\r
426                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a76</persona-model-id>" + EOL +\r
427                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
428                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
429                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
430                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
431                         "      <resource-version>0000076</resource-version>" + EOL +\r
432                         "    </vf-module>" + EOL +\r
433                         "    <vf-module>" + EOL +\r
434                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a77</vf-module-id>" + EOL +\r
435                         "      <vf-module-name>STMTN5MMSC19-MMSC::module-1-0</vf-module-name>" + EOL +\r
436                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a77</persona-model-id>" + EOL +\r
437                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
438                         "      <is-base-vf-module>false</is-base-vf-module>" + EOL +\r
439                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
440                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
441                         "      <resource-version>0000077</resource-version>" + EOL +\r
442                         "    </vf-module>" + EOL +\r
443                         "  </vf-modules>" + EOL +\r
444                         "  <relationship-list/>" + EOL +\r
445                         "  <l-interfaces/>" + EOL +\r
446                         "  <lag-interfaces/>" + EOL +\r
447                         "</generic-vnf>" + EOL;\r
448         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c719[?]depth=1"))\r
449                 .willReturn(aResponse()\r
450                         .withStatus(200)\r
451                         .withHeader("Content-Type", "text/xml")\r
452                         .withBody(body)));\r
453 \r
454         body =\r
455                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
456                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c718</vnf-id>" + EOL +\r
457                         "  <vnf-name>STMTN5MMSC18</vnf-name>" + EOL +\r
458                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
459                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
460                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
461                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
462                         "  <in-maint>false</in-maint>" + EOL +\r
463                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
464                         "  <resource-version>0000018</resource-version>" + EOL +\r
465                         "  <vf-modules>" + EOL +\r
466                         "    <vf-module>" + EOL +\r
467                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a78</vf-module-id>" + EOL +\r
468                         "      <vf-module-name>STMTN5MMSC18-MMSC::module-0-0</vf-module-name>" + EOL +\r
469                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a78</persona-model-id>" + EOL +\r
470                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
471                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
472                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
473                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
474                         "      <resource-version>0000078</resource-version>" + EOL +\r
475                         "    </vf-module>" + EOL +\r
476                         "  </vf-modules>" + EOL +\r
477                         "  <relationship-list/>" + EOL +\r
478                         "  <l-interfaces/>" + EOL +\r
479                         "  <lag-interfaces/>" + EOL +\r
480                         "</generic-vnf>" + EOL;\r
481         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c718[?]depth=1"))\r
482                 .willReturn(aResponse()\r
483                         .withStatus(200)\r
484                         .withHeader("Content-Type", "text/xml")\r
485                         .withBody(body)));\r
486 \r
487         body =\r
488                 "<generic-vnf xmlns=\"http://org.openecomp.aai.inventory/v7\">" + EOL +\r
489                         "  <vnf-id>a27ce5a9-29c4-4c22-a017-6615ac73c721</vnf-id>" + EOL +\r
490                         "  <vnf-name>STMTN5MMSC21</vnf-name>" + EOL +\r
491                         "  <vnf-type>mmsc-capacity</vnf-type>" + EOL +\r
492                         "  <service-id>SDN-MOBILITY</service-id>" + EOL +\r
493                         "  <equipment-role>vMMSC</equipment-role>" + EOL +\r
494                         "  <orchestration-status>pending-create</orchestration-status>" + EOL +\r
495                         "  <in-maint>false</in-maint>" + EOL +\r
496                         "  <is-closed-loop-disabled>false</is-closed-loop-disabled>" + EOL +\r
497                         "  <resource-version>0000021</resource-version>" + EOL +\r
498                         "  <vf-modules>" + EOL +\r
499                         "    <vf-module>" + EOL +\r
500                         "      <vf-module-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</vf-module-id>" + EOL +\r
501                         "      <vf-module-name>STMTN5MMSC21-MMSC::module-0-0</vf-module-name>" + EOL +\r
502                         "      <persona-model-id>973ed047-d251-4fb9-bf1a-65b8949e0a73</persona-model-id>" + EOL +\r
503                         "      <persona-model-version>1.0</persona-model-version>" + EOL +\r
504                         "      <is-base-vf-module>true</is-base-vf-module>" + EOL +\r
505                         "      <heat-stack-id>FILLED-IN-BY-MSO</heat-stack-id>" + EOL +\r
506                         "      <orchestration-status>pending-create</orchestration-status>" + EOL +\r
507                         "      <resource-version>0000073</resource-version>" + EOL +\r
508                         "    </vf-module>" + EOL +\r
509                         "  </vf-modules>" + EOL +\r
510                         "  <relationship-list/>" + EOL +\r
511                         "  <l-interfaces/>" + EOL +\r
512                         "  <lag-interfaces/>" + EOL +\r
513                         "</generic-vnf>" + EOL;\r
514         stubFor(get(urlMatching("/aai/v[0-9]+/network/generic-vnfs/generic-vnf/a27ce5a9-29c4-4c22-a017-6615ac73c721/vf-modules/vf-module/973ed047-d251-4fb9-bf1a-65b8949e0a73"))\r
515                 .willReturn(aResponse()\r
516                         .withStatus(200)\r
517                         .withHeader("Content-Type", "text/xml")\r
518                         .withBody(body)));\r
519 \r
520         String businessKey = UUID.randomUUID().toString();\r
521         String deleteVfModuleRequest =\r
522                 FileUtil.readResourceFile("__files/DeleteVfModule_VID_request.json");\r
523         //Map<String, Object> variables = new HashMap<String, Object>();\r
524 \r
525         //variables.put("isDebugLogEnabled","true");\r
526 //              variables.put("mso-request-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
527 //              variables.put("mso-service-instance-id", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
528 \r
529         Map<String, Object> variables = setupVariablesSunnyDayVID();\r
530 \r
531         TestAsyncResponse asyncResponse = invokeAsyncProcess("DeleteVfModuleInfra",\r
532                 "v1", businessKey, deleteVfModuleRequest, variables);\r
533         WorkflowResponse response = receiveResponse(businessKey, asyncResponse, 10000);\r
534         String responseBody = response.getResponse();\r
535         System.out.println("Workflow (Synch) Response:\n" + responseBody);\r
536 \r
537         // "changedelete" operation not required for deleting a Vf Module\r
538 //              injectSDNCCallbacks(callbacks, "sdncChangeDelete");\r
539         injectVNFRestCallbacks(callbacks, "vnfDelete");\r
540         waitForRunningProcessCount("vnfAdapterDeleteV1", 0, 120000);\r
541         injectSDNCCallbacks(callbacks, "sdncDelete");\r
542 \r
543         waitForProcessEnd(businessKey, 10000);\r
544         WorkflowException wfe = (WorkflowException) getVariableFromHistory(businessKey, "WorkflowException");\r
545         checkVariable(businessKey, "DeleteVfModuleInfraSuccessIndicator", true);\r
546         checkVariable(businessKey, "WorkflowException", null);\r
547         if (wfe != null) {\r
548             System.out.println("TestDeleteVfModuleInfraSuccess: ErrorCode=" + wfe.getErrorCode() +\r
549                     ", ErrorMessage=" + wfe.getErrorMessage());\r
550         }\r
551         logEnd();\r
552     }\r
553 \r
554     // Active Scenario\r
555     private Map<String, Object> setupVariablesSunnyDayVID() {\r
556         Map<String, Object> variables = new HashMap<>();\r
557         //try {\r
558         //      variables.put("bpmnRequest", FileUtil.readResourceFile("__files/CreateVfModule_VID_request.json"));\r
559         //}\r
560         //catch (Exception e) {\r
561 \r
562         //}\r
563         //variables.put("mso-request-id", "testRequestId");\r
564         variables.put("requestId", "testRequestId");\r
565         variables.put("isBaseVfModule", "true");\r
566         variables.put("isDebugLogEnabled", "true");\r
567         variables.put("recipeTimeout", "0");\r
568         variables.put("requestAction", "DELETE_VF_MODULE");\r
569         variables.put("serviceInstanceId", "f70e927b-6087-4974-9ef8-c5e4d5847ca4");\r
570         variables.put("vnfId", "a27ce5a9-29c4-4c22-a017-6615ac73c721");\r
571         variables.put("vfModuleId", "973ed047-d251-4fb9-bf1a-65b8949e0a73");\r
572         variables.put("volumeGroupId", "");\r
573         variables.put("serviceType", "MOG");\r
574         variables.put("vfModuleType", "");\r
575         return variables;\r
576 \r
577     }\r
578 \r
579 \r
580 }\r