dda220aa0b2dbfdfd8d4667ed4ad37bf29add547
[sdnc/oam.git] / platform-logic / generic-resource-api / src / main / xml / GENERIC-RESOURCE-API_service-topology-operation-assign.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='service-topology-operation-assign' mode='sync'>\r
5         <block atomic="true">\r
6             <switch test='`$service-topology-operation-input.request-information.request-action`'>\r
7                 <outcome value='CreateServiceInstance'>\r
8                     <block></block>\r
9                 </outcome>\r
10                 <outcome value='Other'>\r
11                     <return status='failure'>\r
12                         <parameter name='ack-final' value='Y'/>\r
13                         <parameter name="error-code" value="500" />\r
14                         <parameter name="error-message" value="If svc-action is 'assign' then request-action must be 'CreateServiceInstance'" />\r
15                     </return>\r
16                 </outcome>\r
17             </switch>\r
18             <get-resource plugin='org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource' resource='SQL'\r
19   key='SELECT * from SERVICE_MODEL WHERE service_uuid = $service-topology-operation-input.service-information.onap-model-information.model-uuid'\r
20   pfx='db.service-model'>\r
21                 <outcome value='failure'>\r
22                     <return status='failure'>\r
23                         <parameter name='ack-final' value='Y'/>\r
24                         <parameter name="error-code" value="500" />\r
25                         <parameter name="error-message" value="Error reading SERVICE_MODEL table" />\r
26                     </return>\r
27                 </outcome>\r
28                 <outcome value='not-found'>\r
29                     <return status='failure'>\r
30                         <parameter name='ack-final' value='Y'/>\r
31                         <parameter name="error-code" value="500" />\r
32                         <parameter name="error-message" value="`'No model found for service UUID ' + $service-topology-operation-input.service-information.onap-model-information.model-uuid`" />\r
33                     </return>\r
34                 </outcome>\r
35             </get-resource>\r
36             <set>\r
37                 <parameter name='tmp.service-instance-name' value='' />\r
38             </set>\r
39             <switch test='`$service-topology-operation-input.service-request-input.service-instance-name`'>\r
40                 <outcome value=''>\r
41                     <block atomic="true">\r
42                         <switch test='`$db.service-model.ecomp-naming`'>\r
43                             <outcome value='Y'>\r
44                                 <block></block>\r
45                             </outcome>\r
46                             <outcome value='N'>\r
47                                 <return status='failure'>\r
48                                     <parameter name='ack-final' value='Y'/>\r
49                                     <parameter name="error-code" value="500" />\r
50                                     <parameter name="error-message" value="No service-instance-name was received but ecomp-naming is not Y" />\r
51                                 </return>\r
52                             </outcome>\r
53                             <outcome value='Other'>\r
54                                 <return status='failure'>\r
55                                     <parameter name='ack-final' value='Y'/>\r
56                                     <parameter name="error-code" value="500" />\r
57                                     <parameter name="error-message" value="No service-instance-name was received but ecomp-naming is not Y" />\r
58                                 </return>\r
59                             </outcome>\r
60                         </switch>\r
61                         <switch test='`$db.service-model.naming-policy`'>\r
62                             <outcome value=''>\r
63                                 <block atomic="true">\r
64                                     <set>\r
65                                         <parameter name='generate-unique-name-input.action' value='ASSIGN' />\r
66                                         <parameter name='generate-unique-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\r
67                                         <parameter name='generate-unique-name-input.index-table-name' value='SERVICE_INSTANCE_NAME_INDEX' />\r
68                                         <parameter name='generate-unique-name-input.index-table-prefix-column' value='service_instance_name_prefix' />\r
69                                         <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />\r
70                                         <parameter name='generate-unique-name-input.prefix' value="`$db.service-model.service-instance-name-prefix + '_'`" />\r
71                                     </set>\r
72                                     <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
73                                         <outcome value='failure'>\r
74                                             <return status='failure'>\r
75                                                 <parameter name='ack-final' value='Y'/>\r
76                                                 <parameter name="error-code" value="500" />\r
77                                                 <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
78                                             </return>\r
79                                         </outcome>\r
80                                         <outcome value='success'>\r
81                                             <set>\r
82                                                 <parameter name='tmp.service-instance-name' value='`$generate-unique-name-output.generated-name`' />\r
83                                             </set>\r
84                                         </outcome>\r
85                                     </call>\r
86                                 </block>\r
87                             </outcome>\r
88                             <outcome value='Other'>\r
89                                 <block atomic="true">\r
90                                     <set>\r
91                                         <parameter name='generated-via-policy' value='true' />\r
92                                     </set>\r
93                                     <set>\r
94                                         <parameter name='naming-policy-generate-name-input.policy-instance-name' value='`$db.service-model.naming-policy`' />\r
95                                         <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\r
96                                         <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\r
97                                         <parameter name='naming-policy-generate-name-input.query-parameter' value='`$db.service-model.service-uuid`' />\r
98                                         <parameter name='naming-policy-generate-name-input.action' value='ASSIGN' />\r
99                                     </set>\r
100                                     <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' >\r
101                                         <outcome value='failure'>\r
102                                             <return status='failure'>\r
103                                                 <parameter name='ack-final' value='Y'/>\r
104                                                 <parameter name="error-code" value="500" />\r
105                                                 <parameter name="error-message" value="Unable to generate service name" />\r
106                                             </return>\r
107                                         </outcome>\r
108                                         <outcome value='success'>\r
109                                             <set>\r
110                                                 <parameter name='tmp.service-instance-name' value='`$naming-policy-generate-name-output.service-name`' />\r
111                                             </set>\r
112                                         </outcome>\r
113                                     </call>\r
114                                 </block>\r
115                             </outcome>\r
116                         </switch>\r
117                     </block>\r
118                 </outcome>\r
119                 <outcome value='Other'>\r
120                     <block atomic="true">\r
121                         <set>\r
122                             <parameter name='generate-unique-name-input.name-table-type' value='SERVICE_INSTANCE' />\r
123                             <parameter name='generate-unique-name-input.supplied-name' value='`$service-topology-operation-input.service-request-input.service-instance-name`' />\r
124                         </set>\r
125                         <call module='GENERIC-RESOURCE-API' rpc='generate-unique-name' mode='sync' >\r
126                             <outcome value='failure'>\r
127                                 <return status='failure'>\r
128                                     <parameter name='ack-final' value='Y'/>\r
129                                     <parameter name="error-code" value="500" />\r
130                                     <parameter name="error-message" value="`$generate-unique-name-output.error-message`" />\r
131                                 </return>\r
132                             </outcome>\r
133                             <outcome value='success'>\r
134                                 <set>\r
135                                     <parameter name='tmp.service-instance-name' value="`$service-topology-operation-input.service-request-input.service-instance-name`" />\r
136                                 </set>\r
137                             </outcome>\r
138                         </call>\r
139                     </block>\r
140                 </outcome>\r
141             </switch>\r
142             <set>\r
143                 <parameter name='service-object-path'\r
144  value="`'restconf/config/GENERIC-RESOURCE-API:services/service/'\r
145  + $service-topology-operation-input.service-information.service-instance-id\r
146  + '/service-data/service-topology/'`"/>\r
147             </set>\r
148             <update plugin="org.onap.ccsdk.sli.adaptors.aai.AAIService" \r
149                 resource="service-instance" \r
150                 key="customer.global-customer-id = $service-topology-operation-input.service-information.global-customer-id AND\r
151                         service-subscription.service-type = $service-topology-operation-input.service-information.subscription-service-type AND\r
152                         service-instance.service-instance-id = $service-topology-operation-input.service-information.service-instance-id"\r
153         pfx='pfx' local-only='false' force='false'>\r
154                 <parameter name="service-instance-name" value="`$tmp.service-instance-name`" />\r
155                 <parameter name="selflink" value="`$service-object-path`" />\r
156                 <outcome value='failure'>\r
157                     <block>\r
158                         <block atomic="true">\r
159                             <set>\r
160                                 <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\r
161                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\r
162                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
163                             </set>\r
164                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
165                         </block>\r
166                         <return status='failure'>\r
167                             <parameter name='ack-final' value='Y'/>\r
168                             <parameter name="error-code" value="500" />\r
169                             <parameter name="error-message" value="Failure calling AAI to update the service instance" />\r
170                         </return>\r
171                     </block>\r
172                 </outcome>\r
173                 <outcome value='not-found'>\r
174                     <block>\r
175                         <block atomic="true">\r
176                             <set>\r
177                                 <parameter name='naming-policy-generate-name-input.naming-type' value='SERVICE' />\r
178                                 <parameter name='naming-policy-generate-name-input.context-id' value='`$service-topology-operation-input.service-information.service-instance-id`' />\r
179                                 <parameter name='naming-policy-generate-name-input.action' value='DELETE' />\r
180                             </set>\r
181                             <call module='GENERIC-RESOURCE-API' rpc='naming-policy-generate-name' mode='sync' ></call>\r
182                         </block>\r
183                         <return status='failure'>\r
184                             <parameter name='ack-final' value='Y'/>\r
185                             <parameter name="error-code" value="500" />\r
186                             <parameter name="error-message" value="The service instance does not exist in AAI" />\r
187                         </return>\r
188                     </block>\r
189                 </outcome>\r
190             </update>\r
191             <set>\r
192                 <parameter name='service-data.service-topology.service-topology-identifier.service-instance-id'\r
193   value='`$service-topology-operation-input.service-information.service-instance-id`' />\r
194                 <parameter name='service-data.service-topology.service-topology-identifier.service-type'\r
195   value='`$service-topology-operation-input.service-information.subscription-service-type`' />\r
196                 <parameter name='service-data.service-topology.service-topology-identifier.service-instance-name'\r
197   value='`$tmp.service-instance-name`' />\r
198                 <parameter name='service-data.service-topology.service-topology-identifier.global-customer-id'\r
199   value='`$service-topology-operation-input.service-information.global-customer-id`' />\r
200             </set>\r
201             <set>\r
202                 <parameter name='service-data.service-topology.onap-model-information.'\r
203   value='`$service-topology-operation-input.service-information.onap-model-information.`' />\r
204             </set>\r
205             <switch test='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`'>\r
206                 <outcome value=''>\r
207                     <block></block>\r
208                 </outcome>\r
209                 <outcome value='Other'>\r
210                     <for index='idx' start='0' end='`$service-topology-operation-input.service-request-input.service-input-parameters.param_length`' >\r
211                         <set>\r
212                             <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-name'\r
213   value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].name`' />\r
214                             <parameter name='service-data.service-topology.service-parameters[$idx].service-parameter-value'\r
215   value='`$service-topology-operation-input.service-request-input.service-input-parameters.param[$idx].value`' />\r
216                         </set>\r
217                     </for>\r
218                 </outcome>\r
219             </switch>\r
220             <set>\r
221                 <parameter name='service-data.service-level-oper-status.order-status' value='Created' />\r
222                 <parameter name='service-data.service-level-oper-status.last-rpc-action' value='assign' />\r
223                 <parameter name='service-data.service-level-oper-status.last-action' value='CreateServiceInstance' />\r
224             </set>\r
225         </block>\r
226     </method>\r
227 </service-logic>