SOTN siteInstance DGs
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_site-vnf-topology-operation-activate.xml
1 <service-logic
2     xmlns='http://www.onap.org/sdnc/svclogic'
3     xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.onap.org/sdnc/svclogic ./svclogic.xsd' module='GENERIC-RESOURCE-API' version='${project.version}'>
4     <method rpc='site-vnf-topology-operation-activate' mode='sync'>
5         <block atomic="true">
6             <switch test='`$service-data.vnfs.vnf_length`'>
7                 <outcome value='0'>
8                     <return status='failure'>
9                         <parameter name='ack-final' value='Y'/>
10                         <parameter name="error-code" value="500" />
11                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
12                     </return>
13                 </outcome>
14                 <outcome value=''>
15                     <return status='failure'>
16                         <parameter name='ack-final' value='Y'/>
17                         <parameter name="error-code" value="500" />
18                         <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
19                     </return>
20                 </outcome>
21                 <outcome value='Other'>
22                     <block atomic="true">
23                         <set>
24                             <parameter name='prop.site.deviceId_length' value='0' />
25                         </set>
26                         <for index='vidx' start='0' end='`$service-data.vnfs.vnf_length`' >
27                             <block>
28                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-id == $vnf-topology-operation-input.vnf-information.vnf-id`">
29                                     <outcome value='true'>
30                                         <set>
31                                             <parameter name='tmp.vidx' value='`$vidx`' />
32                                             <parameter name='ctx.vnf-data.' value='`$service-data.vnfs.vnf[$vidx].`' />
33                                         </set>
34                                     </outcome>
35                                 </switch>
36                                 <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.request-information.request-action == 'ActivateSDWANDeviceInstance'`">
37                                     <outcome value='true'>
38                                         <block atomic="true">
39                                             <for index="deviceidx" start="0" end="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`">
40                                                 <block>
41                                                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].name == 'deviceId'`">
42                                                         <outcome value='true'>
43                                                             <set>
44                                                                 <parameter name='prop.site.deviceId[$prop.site.deviceId_length]' value='`$service-data.vnfs.vnf[$tmp.deviceVidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$deviceidx].value`' />
45                                                                 <parameter name='prop.site.deviceId_length' value='`$prop.site.deviceId_length + 1`' />
46                                                             </set>
47                                                         </outcome>
48                                                     </switch>
49                                                 </block>
50                                             </for>
51                                         </block>
52                                     </outcome>
53                                 </switch>
54                             </block>
55                         </for>
56                         <switch test="`$tmp.vidx`">
57                             <outcome value=''>
58                                 <return status='failure'>
59                                     <parameter name='ack-final' value='Y'/>
60                                     <parameter name="error-code" value="500" />
61                                     <parameter name="error-message" value="vnf-topology-operation-input.vnf-request-input.vnf-id not found in service-data" />
62                                 </return>
63                             </outcome>
64                         </switch>
65                     </block>
66                 </outcome>
67             </switch>
68             <set>
69                 <parameter name='prop.site.sdwan' value="false" />
70             </set>
71             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >
72                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />
73                 <parameter name='contextPrefix' value='prop' />
74             </execute>
75             <for index='idx' start='0' end='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length`' >
76                 <block>
77                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'name'`">
78                         <outcome value='true'>
79                             <set>
80                                 <parameter name='prop.site.name' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
81                             </set>
82                         </outcome>
83                     </switch>
84                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'location-name'`">
85                         <outcome value='true'>
86                             <set>
87                                 <parameter name='prop.site.location-name' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
88                             </set>
89                         </outcome>
90                     </switch>
91                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'address'`">
92                         <outcome value='true'>
93                             <set>
94                                 <parameter name='prop.site.location-address' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
95                             </set>
96                         </outcome>
97                     </switch>
98                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'postcode'`">
99                         <outcome value='true'>
100                             <set>
101                                 <parameter name='prop.site.location-postcode' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
102                             </set>
103                         </outcome>
104                     </switch>
105                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'latitude'`">
106                         <outcome value='true'>
107                             <set>
108                                 <parameter name='prop.site.location-latitude' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
109                             </set>
110                         </outcome>
111                     </switch>
112                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'longitude'`">
113                         <outcome value='true'>
114                             <set>
115                                 <parameter name='prop.site.location-latitude' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
116                             </set>
117                         </outcome>
118                     </switch>
119                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'emails'`">
120                         <outcome value='true'>
121                             <block atomic="true">
122                                 <set>
123                                     <parameter name='prop.site.emails' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
124                                 </set>
125                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
126                                     <parameter name="original_string" value='`$prop.site.emails`'/>
127                                     <parameter name="regex" value=","/>
128                                     <parameter name="ctx_memory_result_key" value="prop.site.email"/>
129                                 </execute>
130                             </block>
131                         </outcome>
132                     </switch>
133                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'type'`">
134                         <outcome value='true'>
135                             <set>
136                                 <parameter name='prop.site.type' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
137                                 <parameter name='prop.site.sdwan' value="true" />
138                             </set>
139                         </outcome>
140                     </switch>
141                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'role'`">
142                         <outcome value='true'>
143                             <block atomic="true">
144                                 <set>
145                                     <parameter name='prop.site.role' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
146                                     <parameter name='prop.site.sdwan' value="true" />
147                                 </set>
148                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
149                                     <parameter name="original_string" value='`$prop.site.role`'/>
150                                     <parameter name="regex" value=","/>
151                                     <parameter name="ctx_memory_result_key" value="prop.site.roles"/>
152                                 </execute>
153                             </block>
154                         </outcome>
155                     </switch>
156                     <switch test="`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].name == 'controlPoints'`">
157                         <outcome value='true'>
158                             <block atomic="true">
159                                 <set>
160                                     <parameter name='prop.site.controlPoint' value='`$service-data.vnfs.vnf[$vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$idx].value`' />
161                                 </set>
162                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='split' >
163                                     <parameter name="original_string" value='`$prop.site.controlPoint`'/>
164                                     <parameter name="regex" value=","/>
165                                     <parameter name="ctx_memory_result_key" value="prop.site.controlpoints"/>
166                                 </execute>
167                             </block>
168                         </outcome>
169                     </switch>
170                 </block>
171             </for>
172             <switch test="`$prop.site.sdwan`">
173                 <outcome value='true'>
174                     <block atomic="true">
175                         <set>
176                             <parameter name='prop.site.siteId' value="" />
177                         </set>
178                         <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" 
179                 resource="esr-thirdparty-sdnc" 
180                 key="esr-thirdparty-sdnc.thirdparty-sdnc-id = $tmp.thirdparty-sdnc-id AND 
181                      depth = '1'"
182         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >
183                             <outcome value='success'>
184                                 <set>
185                                     <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />
186                                     <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />
187                                     <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />
188                                 </set>
189                             </outcome>
190                             <outcome value='not-found'>
191                                 <return status='failure'>
192                                     <parameter name='ack-final' value='Y'/>
193                                     <parameter name="error-code" value="500" />
194                                     <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
195                                 </return>
196                             </outcome>
197                             <outcome value='Other'>
198                                 <return status='failure'>
199                                     <parameter name='ack-final' value='Y'/>
200                                     <parameter name="error-code" value="500" />
201                                     <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />
202                                 </return>
203                             </outcome>
204                         </get-resource>
205                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
206                             <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />
207                             <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />
208                             <parameter name="format" value="json"/>
209                             <parameter name="httpMethod" value="post"/>
210                             <parameter name="responsePrefix" value="token-result"/>
211                             <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
212                             <parameter name="trustStorePassword" value="adminadmin"/>
213                             <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
214                             <parameter name="keyStorePassword" value="adminadmin"/>
215                             <outcome value='success'>
216                                 <set>
217                                     <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />
218                                 </set>
219                             </outcome>
220                             <outcome value='failure'>
221                                 <block></block>
222                             </outcome>
223                         </execute>
224                         <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >
225                             <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-site.json'`" />
226                             <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/sites'`" />
227                             <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />
228                             <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />
229                             <parameter name="format" value="json"/>
230                             <parameter name="httpMethod" value="post"/>
231                             <parameter name="responsePrefix" value="site-result"/>
232                             <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.openecomp.client.jks"/>
233                             <parameter name="trustStorePassword" value="adminadmin"/>
234                             <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>
235                             <parameter name="keyStorePassword" value="adminadmin"/>
236                             <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />
237                             <outcome value='success'>
238                                 <block atomic="true"></block>
239                             </outcome>
240                         </execute>
241                     </block>
242                 </outcome>
243             </switch>
244             <set>
245                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />
246                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].name' value='siteId' />
247                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param[$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1].value' value='`$site-result[0].id`' />
248                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-request-input.vnf-input-parameters.param_length + 1`' />
249             </set>
250             <set>
251                 <parameter name='vnfId' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />
252                 <parameter name="vnf-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $vnf-topology-operation-input.service-information.service-instance-id  + '/service-data/vnfs/vnf/'  + $service-data.vnfs.vnf[$tmp.vidx].vnf-id  + '/vnf-data/'` " />
253             </set>
254             <set>
255                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.order-status' value='Active' />
256                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-rpc-action' value='`$vnf-topology-operation-input.sdnc-request-header.svc-action`' />
257                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.vnf-level-oper-status.last-action' value='`$vnf-topology-operation-input.request-information.request-action`' />
258             </set>
259             <set>
260                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />
261                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.sdnc-request-header.' value='$vnf-topology-operation-input.sdnc-request-header.' />
262                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.request-information.' value='$vnf-topology-operation-input.request-information.' />
263                 <parameter name='service-data.vnfs.vnf[$tmp.vidx].vnf-data.service-information.' value='$vnf-topology-operation-input.service-information.' />
264             </set>
265             <save plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='site-resource' 
266       key='site-resource.id = $service-data.vnfs.vnf[$tmp.vidx].vnf-id' >
267                 <parameter name='id' value='`$service-data.vnfs.vnf[$tmp.vidx].vnf-id`' />
268                 <parameter name='generated-site-id' value='`$site-result[0].site-id`' />
269                 <parameter name='operational-status' value='Active' />
270             </save>
271             <return status='success'>
272                 <parameter name="ack-final-indicator" value="Y" />
273                 <parameter name="error-code" value="200" />
274                 <parameter name="error-message" value="`$error-message`" />
275             </return>
276         </block>
277     </method>
278 </service-logic>