ffd5ee73059845723932450c3f58c8c145144f4b
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / sdwan / GENERIC-RESOURCE-API_sdwan-network-topology-operation-activate.xml
1 <service-logic\r
2     xmlns='http://www.onap.org/sdnc/svclogic'\r
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}'>\r
4     <method rpc='sdwan-network-topology-operation-activate' mode='sync'>\r
5         <block atomic="true">\r
6             <call module='GENERIC-RESOURCE-API' rpc='validate-sdwan-network-input-parameters' mode='sync' ></call>\r
7             <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">\r
8                 <parameter name="file" value="/opt/opendaylight/current/data/log/svclogic.log"/>\r
9                 <parameter name="field1" value="__TIMESTAMP__"/>\r
10                 <parameter name="field2" value="sdwan-network-topology-operation-activate"/>\r
11                 <parameter name="field3" value="SDWAN-Activate"/>\r
12             </record>\r
13             <execute plugin='org.onap.ccsdk.sli.plugins.prop.PropertiesNode' method='readProperties' >\r
14                 <parameter name='fileName' value='%SDNC_CONFIG_DIR%/generic-resource-api-dg.properties' />\r
15                 <parameter name='contextPrefix' value='prop' />\r
16             </execute>\r
17             <for index='idx' start='0' end='`$ctx.network-data.network-request-input.network-input-parameters.param_length`' >\r
18                 <block>\r
19                     <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'name'`">\r
20                         <outcome value='true'>\r
21                             <set>\r
22                                 <parameter name='prop.name' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\r
23                             </set>\r
24                         </outcome>\r
25                     </switch>\r
26                     <switch test="`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].name == 'topology'`">\r
27                         <outcome value='true'>\r
28                             <set>\r
29                                 <parameter name='prop.topology' value='`$ctx.network-data.network-request-input.network-input-parameters.param[$idx].value`' />\r
30                             </set>\r
31                         </outcome>\r
32                     </switch>\r
33                 </block>\r
34             </for>\r
35             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
36                 resource="esr-thirdparty-sdnc" \r
37                 key="esr-thirdparty-sdnc.thirdparty-sdnc-id = 'SDWANController' AND \r
38                      depth = '1'"\r
39         pfx='tmp.aai.esr-thirdparty-sdnc' local-only='false' >\r
40                 <outcome value='success'>\r
41                     <set>\r
42                         <parameter name='prop.sdncRestApi.thirdpartySdnc.url' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].service-url`" />\r
43                         <parameter name='prop.sdncRestApi.thirdpartySdnc.user' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].user-name`" />\r
44                         <parameter name='prop.sdncRestApi.thirdpartySdnc.password' value="`$tmp.aai.esr-thirdparty-sdnc.esr-system-info-list.esr-system-info[0].password`" />\r
45                     </set>\r
46                 </outcome>\r
47                 <outcome value='not-found'>\r
48                     <return status='failure'>\r
49                         <parameter name='ack-final' value='Y'/>\r
50                         <parameter name="error-code" value="500" />\r
51                         <parameter name="error-message" value="`'An error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
52                     </return>\r
53                 </outcome>\r
54                 <outcome value='Other'>\r
55                     <return status='failure'>\r
56                         <parameter name='ack-final' value='Y'/>\r
57                         <parameter name="error-code" value="500" />\r
58                         <parameter name="error-message" value="`'Unexpected error occurred while querying esr-thirdparty-sdnc from AnAI with thirdparty-sdnc-id = ' + $tmp.thirdparty-sdnc-id`" />\r
59                     </return>\r
60                 </outcome>\r
61             </get-resource>\r
62             <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
63                 <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/actokentemplate.json'`" />\r
64                 <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/v2/tokens'`" />\r
65                 <parameter name="format" value="json"/>\r
66                 <parameter name="httpMethod" value="post"/>\r
67                 <parameter name="responsePrefix" value="token-result"/>\r
68                 <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
69                 <parameter name="trustStorePassword" value="adminadmin"/>\r
70                 <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
71                 <parameter name="keyStorePassword" value="adminadmin"/>\r
72                 <outcome value='success'>\r
73                     <set>\r
74                         <parameter name='prop.sdncRestApi.token_id' value='`$token-result.data.token_id`' />\r
75                     </set>\r
76                 </outcome>\r
77                 <outcome value='failure'>\r
78                     <return status='failure'>\r
79                         <parameter name='ack-final' value='Y'/>\r
80                         <parameter name="error-code" value="500" />\r
81                         <parameter name="error-message" value="Error executing get token rest api" />\r
82                     </return>\r
83                 </outcome>\r
84             </execute>\r
85             <get-resource plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
86                 resource="service-subscription" \r
87         key= 'service-subscription.service-type = $service-data.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type \r
88         AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-data.service-information.global-customer-id'\r
89       force="true" pfx="tmp.AnAI-data">\r
90                 <outcome value='success'>\r
91                     <switch test='`$tmp.AnAI-data.temp-ub-sub-account-id`'>\r
92                         <outcome value=''>\r
93                             <block atomic="true">\r
94                                 <set>\r
95                                     <parameter name='prop.customer-id' value='`$ctx.network-data.service-information.global-customer-id`' />\r
96                                 </set>\r
97                                 <execute plugin='org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils' method='concat' >\r
98                                     <parameter name="source" value='`$prop.customer-id`'/>\r
99                                     <parameter name="outputPath" value="tmp.userAccountEmail"/>\r
100                                     <parameter name="target" value="@test.com"/>\r
101                                 </execute>\r
102                                 <set>\r
103                                     <parameter name='prop.userAccount' value='`$tmp.userAccountEmail`' />\r
104                                     <parameter name='prop.userEmail' value='`$tmp.userAccountEmail`' />\r
105                                 </set>\r
106                                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
107                                     <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-tenant.json'`" />\r
108                                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/baseservice/tenants'`" />\r
109                                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
110                                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
111                                     <parameter name="format" value="json"/>\r
112                                     <parameter name="httpMethod" value="post"/>\r
113                                     <parameter name="responsePrefix" value="tenant-result"/>\r
114                                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
115                                     <parameter name="trustStorePassword" value="adminadmin"/>\r
116                                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
117                                     <parameter name="keyStorePassword" value="adminadmin"/>\r
118                                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
119                                 </execute>\r
120                                 <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
121                 resource="service-subscription" \r
122         key= 'service-subscription.service-type = $service-data.networks.network[$tmp.nidx].network-data.service-information.subscription-service-type \r
123         AND customer.global-customer-id = $service-data.networks.network[$tmp.nidx].network-data.service-information.global-customer-id'>\r
124                                     <parameter name='temp-ub-sub-account-id' value='`$tenant-result.data.tenantId`' />\r
125                                     <!--parameter name='temp-ub-sub-account-id' value='`$prop.customer-id`' /-->\r
126                                 </update>\r
127                                 <set>\r
128                                     <parameter name='prop.tenant-id' value='`$tenant-result.data.tenantId`' />\r
129                                 </set>\r
130                                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
131                                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/baseservice/tenants/authorization/' + $prop.tenant-id`" />\r
132                                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
133                                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
134                                     <parameter name="format" value="json"/>\r
135                                     <parameter name="httpMethod" value="put"/>\r
136                                     <parameter name="responsePrefix" value="tenant-result"/>\r
137                                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
138                                     <parameter name="trustStorePassword" value="adminadmin"/>\r
139                                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
140                                     <parameter name="keyStorePassword" value="adminadmin"/>\r
141                                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
142                                 </execute>\r
143                             </block>\r
144                         </outcome>\r
145                         <outcome value='Other'>\r
146                             <block atomic="true">\r
147                                 <set>\r
148                                     <parameter name='prop.tenant-id' value='`$tmp.AnAI-data.temp-ub-sub-account-id`' />\r
149                                 </set>\r
150                                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
151                                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/baseservice/tenants/authorization/' + $prop.tenant-id`" />\r
152                                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
153                                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
154                                     <parameter name="format" value="json"/>\r
155                                     <parameter name="httpMethod" value="put"/>\r
156                                     <parameter name="responsePrefix" value="tenant-result"/>\r
157                                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
158                                     <parameter name="trustStorePassword" value="adminadmin"/>\r
159                                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
160                                     <parameter name="keyStorePassword" value="adminadmin"/>\r
161                                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
162                                 </execute>\r
163                             </block>\r
164                         </outcome>\r
165                     </switch>\r
166                 </outcome>\r
167                 <outcome value='failure'>\r
168                     <return status='failure'>\r
169                         <parameter name='ack-final' value='Y'/>\r
170                         <parameter name="error-code" value="500" />\r
171                         <parameter name="error-message" value="Error executing get token rest api" />\r
172                     </return>\r
173                 </outcome>\r
174             </get-resource>\r
175             <block atomic="true">\r
176                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
177                     <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-network-orchestration.json'`" />\r
178                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/net/network-orchestration-resources'`" />\r
179                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
180                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
181                     <parameter name="format" value="json"/>\r
182                     <parameter name="httpMethod" value="put"/>\r
183                     <parameter name="responsePrefix" value="orchestration-result"/>\r
184                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
185                     <parameter name="trustStorePassword" value="adminadmin"/>\r
186                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
187                     <parameter name="keyStorePassword" value="adminadmin"/>\r
188                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
189                 </execute>\r
190             </block>\r
191             <block atomic="true">\r
192                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
193                     <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-create.json'`" />\r
194                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/vpn'`" />\r
195                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
196                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
197                     <parameter name="format" value="json"/>\r
198                     <parameter name="httpMethod" value="post"/>\r
199                     <parameter name="responsePrefix" value="vpn-result"/>\r
200                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
201                     <parameter name="trustStorePassword" value="adminadmin"/>\r
202                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
203                     <parameter name="keyStorePassword" value="adminadmin"/>\r
204                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
205                 </execute>\r
206                 <set>\r
207                     <parameter name='prop.vpn-id' value='`$vpn-result.success[0].id`' />\r
208                     <parameter name='prop.vpn1Id' value='`$vpn-result.success[0].id`' />\r
209                 </set>\r
210                 <execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\r
211                     <parameter name="templateFileName" value="`$prop.restapi.templateDir + '/sdwan-vpn-topology-create.json'`" />\r
212                     <parameter name="restapiUrl" value="`$prop.sdncRestApi.thirdpartySdnc.url + '/controller/campus/v1/sdwan/overlay-network/' + $prop.vpn-id + '/topology'`" />\r
213                     <parameter name="restapiUser" value="`$prop.sdncRestApi.thirdpartySdnc.user`" />\r
214                     <parameter name="restapiPassword" value="`$prop.sdncRestApi.thirdpartySdnc.password`" />\r
215                     <parameter name="format" value="json"/>\r
216                     <parameter name="httpMethod" value="post"/>\r
217                     <parameter name="responsePrefix" value="vpn-result"/>\r
218                     <parameter name="trustStoreFileName" value="/opt/onap/sdnc/data/stores/truststore.onap.client.jks"/>\r
219                     <parameter name="trustStorePassword" value="adminadmin"/>\r
220                     <parameter name="keyStoreFileName" value="/opt/onap/sdnc/data/stores/sdnc.p12"/>\r
221                     <parameter name="keyStorePassword" value="adminadmin"/>\r
222                     <parameter name='customHttpHeaders' value="`'X-ACCESS-TOKEN=' + $prop.sdncRestApi.token_id`" />\r
223                 </execute>\r
224             </block>\r
225             <set>\r
226                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='tenant-id' />\r
227                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.tenant-id`' />\r
228                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />\r
229             </set>\r
230             <set>\r
231                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].name' value='vpn-id' />\r
232                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param[$network-topology-operation-input.network-request-input.network-input-parameters.param_length].value' value='`$prop.vpn-id`' />\r
233                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-request-input.network-input-parameters.param_length' value='`$network-topology-operation-input.network-request-input.network-input-parameters.param_length + 1`' />\r
234             </set>\r
235             <set>\r
236                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.sdnc-request-header.' value='`$network-topology-operation-input.sdnc-request-header.`' />\r
237                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.request-information.' value='`$network-topology-operation-input.request-information.`' />\r
238                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.service-information.' value='`$network-topology-operation-input.service-information.`' />\r
239                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-information.' value='`$network-topology-operation-input.network-information.`' />\r
240             </set>\r
241             <set>\r
242                 <parameter name='networkId' value='`$network-topology-operation-input.network-information.network-id`' />\r
243                 <parameter name="network-object-path" value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'  + $network-topology-operation-input.service-information.service-instance-id  + '/service-data/networks/network/'  + $network-topology-operation-input.network-information.network-id  + '/network-data/'` " />\r
244             </set>\r
245             <set>\r
246                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.order-status' value='Active' />\r
247                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-rpc-action' value='`$network-topology-operation-input.sdnc-request-header.svc-action`' />\r
248                 <parameter name='service-data.networks.network[$tmp.nidx].network-data.network-level-oper-status.last-action' value='`$network-topology-operation-input.request-information.request-action`' />\r
249             </set>\r
250             <update plugin='org.onap.ccsdk.sli.adaptors.aai.AAIService' resource='sdwan-vpn' \r
251       key='sdwan-vpn.sdwan-vpn-id = $network-topology-operation-input.network-information.network-id' >\r
252                 <parameter name='sdwan-vpn-id' value='`$network-topology-operation-input.network-information.network-id`' />\r
253                 <parameter name='operational-status' value='Active' />\r
254                 <parameter name='tenanat-id' value='`$prop.tenant-id`' />\r
255                 <parameter name='vpn-id' value='`$prop.vpn-id`' />\r
256             </update>\r
257             <return status='success'>\r
258                 <parameter name="ack-final-indicator" value="Y" />\r
259                 <parameter name="error-code" value="200" />\r
260                 <parameter name="error-message" value="`$error-message`" />\r
261             </return>\r
262         </block>\r
263     </method>\r
264 </service-logic>\r