blob: af2edc8c96d24ed56d6928e8a8971cb89c0679a9 [file] [log] [blame]
Rene_Robertfb177972019-07-09 14:39:47 +02001.. This work is licensed under a Creative Commons Attribution 4.0
2.. International License. http://creativecommons.org/licenses/by/4.0
3.. Copyright 2019 ONAP Contributors. All rights reserved.
4
andreasgeissler7789a222019-07-16 18:44:23 +02005.. _doc_guide_user_ser_inst_so1:
Rene_Robertfb177972019-07-09 14:39:47 +02006
7
andreasgeissler7789a222019-07-16 18:44:23 +02008A La Carte mode Service Instantiation via ONAP SO API
9=====================================================
Rene_Robertfb177972019-07-09 14:39:47 +020010
Rene_Robertf45d05a2019-07-31 17:13:35 +020011Using ONAP SO API in "A La Carte" mode, the user needs to send
12a request to instantiate the service object but also for each VNF/VF-module
13and network that compose the Service.
Rene_Robertfb177972019-07-09 14:39:47 +020014
Rene_Robertf45d05a2019-07-31 17:13:35 +020015ONAP will instantiate resources on Cloud platforms only when user is requesting
16to instantiate VF-module or Network (openstack neutron or contrail).
Rene_Robertfb177972019-07-09 14:39:47 +020017
Rene_Robertf45d05a2019-07-31 17:13:35 +020018To instantiate a VF-module, it is required to have instantiated a VNF object.
19
20To instantiate a VNF object, it is required to have instantiated
21a Service object.
22
23To instantiate a Network object, it is required to have instantiated
24a Service object.
25
26**Requests**
27 * `Request to instantiate Service object`_
28 * `Request to instantiate VNF object`_
29 * `Requests to instantiate VF-module object`_
30 * `Requests to instantiate Neutron Network object`_
31 * `Requests to instantiate a Contrail Network object`_
Rene_Robertfb177972019-07-09 14:39:47 +020032
33
Rene_Robertf45d05a2019-07-31 17:13:35 +020034Request to instantiate Service object
35-------------------------------------
Rene_Robertfb177972019-07-09 14:39:47 +020036
37Example to request a service instance directly to ONAP SO
38
Rene_Robertf45d05a2019-07-31 17:13:35 +020039::
Rene_Robertfb177972019-07-09 14:39:47 +020040
Rene_Robertf45d05a2019-07-31 17:13:35 +020041 curl -X POST \
Rene_Robertaa9be1c2019-10-24 09:23:25 +020042 http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstantiation/v7/serviceInstances \
Rene_Robertf45d05a2019-07-31 17:13:35 +020043 -H 'Accept: application/json' \
44 -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
45 -H 'Content-Type: application/json' \
Rene_Robertaa9be1c2019-10-24 09:23:25 +020046 -H 'X-ONAP-PartnerName: NBI' \
Rene_Robertf45d05a2019-07-31 17:13:35 +020047 -H 'cache-control: no-cache' \
48 -d '{
49 "requestDetails": {
50 "requestInfo": {
51 "instanceName": "integration_test_service_instance_001",
52 "source": "VID",
53 "suppressRollback": false,
54 "requestorId": "demo"
55 },
56 "modelInfo": {
57 "modelType": "service",
Rene_Robertaa9be1c2019-10-24 09:23:25 +020058 "modelInvariantId": "48d7ceec-7975-406c-8b96-cb3fbdbcfa33",
59 "modelVersionId": "33a99ef7-b5a3-4603-b21e-790582b4567e",
60 "modelName": "integration_test_service_ubuntu16",
Rene_Robertf45d05a2019-07-31 17:13:35 +020061 "modelVersion": "1.0"
62 },
63 "cloudConfiguration": {
Rene_Robertaa9be1c2019-10-24 09:23:25 +020064 "tenantId": "dd8fce79e74a4989a6be6b6c5e55acef",
65 "cloudOwner": "cloudOwner",
Rene_Robertf45d05a2019-07-31 17:13:35 +020066 "lcpCloudRegionId": "RegionOne"
67 },
68 "requestParameters": {
69 "userParams": [],
70 "testApi": "VNF_API",
Rene_Robertaa9be1c2019-10-24 09:23:25 +020071 "subscriptionServiceType": "integration_test_service_ubuntu16",
Rene_Robertf45d05a2019-07-31 17:13:35 +020072 "aLaCarte": true
73 },
74 "subscriberInfo": {
75 "globalSubscriberId": "integration_test_customer"
76 },
77 "project": {
78 "projectName": "integration_test_project"
79 },
80 "owningEntity": {
Rene_Robertaa9be1c2019-10-24 09:23:25 +020081 "owningEntityId": "8874891f-5120-4b98-b452-46284513958d",
82 "owningEntityName": "OE-Generic"
Rene_Robertf45d05a2019-07-31 17:13:35 +020083 }
84 }
85 }'
Rene_Robertfb177972019-07-09 14:39:47 +020086
87
Rene_Robertfb177972019-07-09 14:39:47 +020088In the response, you will obtain the serviceOrderId value.
89
90Then you have the possibility to check about the SO request
91(here after the requestId=e3ad8df6-ea0d-4384-be95-bcb7dd39bbde).
92
93This will allow you to get the serviceOrder Status (completed, failed...)
94
95::
96
97 curl -X GET \
98 http://so.api.simpledemo.onap.org:30277/onap/so/infra/orchestrationRequests/v6/e3ad8df6-ea0d-4384-be95-bcb7dd39bbde \
99 -H 'Accept: application/json' \
100 -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
101 -H 'Content-Type: application/json' \
102 -H 'X-FromAppId: AAI' \
103 -H 'X-TransactionId: get_aai_subscr' \
104 -H 'cache-control: no-cache'
105
106
Rene_Robertf45d05a2019-07-31 17:13:35 +0200107Request to instantiate VNF object
108---------------------------------
109
110To instantiate a VNF, you need to build an other request.
Rene_Robertfb177972019-07-09 14:39:47 +0200111All necessary parameters are available in the Tosca service template
112generated by SDC when you defined your service model.
113
114::
115
116 curl -X POST \
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200117 http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstantiation/v7/serviceInstances/7d550d9e-e1c4-4a21-a2bb-1c3ced8a8722/vnfs \
118 -H 'Accept: application/json' \
119 -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
120 -H 'Content-Type: application/json' \
121 -H 'X-ONAP-PartnerName: NBI' \
122 -H 'cache-control: no-cache' \
123 -d '{
124 "requestDetails": {
125 "requestInfo": {
126 "instanceName": "integration_test_vnf_instance_002",
127 "source": "VID",
128 "suppressRollback": false,
129 "requestorId": "test",
130 "productFamilyId": "1234"
131 },
132 "modelInfo": {
133 "modelType": "vnf",
134 "modelInvariantId": "661a34ce-6f76-4ebf-ad94-814a9fc8a2aa",
135 "modelVersionId": "7e7d453c-0085-4df2-b4b5-91281ea2e710",
136 "modelName": "integration_test_VF_ubuntu16_2",
137 "modelVersion": "1.0",
138 "modelCustomizationId": "342c14b4-8a24-46dd-a8c3-ff39dd7949e9",
139 "modelCustomizationName": "integration_test_VF_ubuntu16_2 0"
140 },
141 "requestParameters": {
142 "userParams": [],
143 "aLaCarte": true,
144 "testApi": "VNF_API"
145 },
146 "cloudConfiguration": {
147 "lcpCloudRegionId": "RegionOne",
148 "cloudOwner": "cloudOwner",
149 "tenantId": "dd8fce79e74a4989a6be6b6c5e55acef"
150 },
151 "lineOfBusiness": {
152 "lineOfBusinessName": "integration_test_LOB"
153 },
154 "platform": {
155 "platformName": "integration_test_platform"
156 },
157 "relatedInstanceList": [{
158 "relatedInstance": {
159 "instanceId": "7d550d9e-e1c4-4a21-a2bb-1c3ced8a8722",
160 "modelInfo": {
161 "modelType": "service",
162 "modelName": "integration_test_service_ubuntu16",
163 "modelInvariantId": "48d7ceec-7975-406c-8b96-cb3fbdbcfa33",
164 "modelVersion": "1.0",
165 "modelVersionId": "33a99ef7-b5a3-4603-b21e-790582b4567e"
166 }
Rene_Robertfb177972019-07-09 14:39:47 +0200167 }
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200168 }]
169 }
Rene_Robertfb177972019-07-09 14:39:47 +0200170 }
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200171
172 '
Rene_Robertfb177972019-07-09 14:39:47 +0200173
Rene_Robertf45d05a2019-07-31 17:13:35 +0200174
175Requests to instantiate VF-module object
176----------------------------------------
177
Rene_Robertfb177972019-07-09 14:39:47 +0200178To instantiate a VF module, you need to build two complex requests
179All necessary parameters are available in the Tosca service template
180generated by SDC when you defined your service model.
181
1821st request is called a "SDNC-preload" for a VNF object and is used
183to store in SDNC some VNF parameters values
andreasgeissler7789a222019-07-16 18:44:23 +0200184that will be needed for the instantiation
Rene_Robertfb177972019-07-09 14:39:47 +0200185
186::
187
188 curl -X POST \
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200189 https://sdnc.api.simpledemo.onap.org:30267/restconf/operations/VNF-API:preload-vnf-topology-operation \
190 -H 'Accept: application/json' \
191 -H 'Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==' \
192 -H 'Content-Type: application/json' \
193 -H 'X-FromAppId: API client' \
194 -H 'X-TransactionId: 0a3f6713-ba96-4971-a6f8-c2da85a3176e' \
195 -H 'cache-control: no-cache' \
196 -d '{
197 "input": {
198 "request-information": {
199 "notification-url": "onap.org",
200 "order-number": "1",
201 "order-version": "1",
202 "request-action": "PreloadVNFRequest",
203 "request-id": "test"
204 },
205 "sdnc-request-header": {
206 "svc-action": "reserve",
207 "svc-notification-url": "http:\/\/onap.org:8080\/adapters\/rest\/SDNCNotify",
208 "svc-request-id": "test"
209 },
210 "vnf-topology-information": {
211 "vnf-assignments": {
212 "availability-zones": [],
213 "vnf-networks": [],
214 "vnf-vms": []
215 },
216 "vnf-parameters": [],
217 "vnf-topology-identifier": {
218 "generic-vnf-name": "integration_test_vnf_instance_002",
219 "generic-vnf-type": "integration_test_VF_ubuntu16_2 0",
220 "service-type": "7d550d9e-e1c4-4a21-a2bb-1c3ced8a8722",
221 "vnf-name": "integration_test_vfmodule_002",
222 "vnf-type": "IntegrationTestVfUbuntu162..base_ubuntu16..module-0"
223 }
224 }
225 }
Rene_Robertfb177972019-07-09 14:39:47 +0200226 }'
227
andreasgeissler7789a222019-07-16 18:44:23 +0200228The 2nd request is to instantiate the VF module via ONAP SO
Rene_Robertfb177972019-07-09 14:39:47 +0200229(instance name must be identical in both requests)
230
231::
232
233 curl -X POST \
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200234 http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstantiation/v7/serviceInstances/7d550d9e-e1c4-4a21-a2bb-1c3ced8a8722/vnfs/9764c2af-e4b0-413d-80cd-b65014ea0926/vfModules \
235 -H 'Accept: application/json' \
236 -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
237 -H 'Content-Type: application/json' \
238 -H 'X-ONAP-PartnerName: NBI' \
239 -H 'cache-control: no-cache' \
240 -d '{
241 "requestDetails": {
242 "requestInfo": {
243 "instanceName": "integration_test_vfmodule_002",
244 "source": "VID",
245 "suppressRollback": false,
246 "requestorId": "test"
247 },
248 "modelInfo": {
249 "modelType": "vfModule",
250 "modelInvariantId": "273bef63-1f26-4b14-91e0-003fa203ead2",
251 "modelVersionId": "7cdf75de-ff3c-4a7d-a7e0-ecbc00693e8e",
252 "modelName": "IntegrationTestVfUbuntu162..base_ubuntu16..module-0",
253 "modelVersion": "1",
254 "modelCustomizationId": "470956aa-b739-4cdd-b114-7ce032f65b18",
255 "modelCustomizationName": "IntegrationTestVfUbuntu162..base_ubuntu16..module-0"
Rene_Robertfb177972019-07-09 14:39:47 +0200256 },
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200257 "requestParameters": {
258 "userParams": [],
259 "testApi": "VNF_API",
260 "usePreload": true
Rene_Robertfb177972019-07-09 14:39:47 +0200261 },
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200262 "cloudConfiguration": {
263 "lcpCloudRegionId": "RegionOne",
264 "cloudOwner": "cloudOwner",
265 "tenantId": "dd8fce79e74a4989a6be6b6c5e55acef"
266 },
267 "relatedInstanceList": [{
268 "relatedInstance": {
269 "instanceId": "7d550d9e-e1c4-4a21-a2bb-1c3ced8a8722",
270 "modelInfo": {
271 "modelType": "service",
272 "modelName": "integration_test_service_ubuntu16",
273 "modelInvariantId": "48d7ceec-7975-406c-8b96-cb3fbdbcfa33",
274 "modelVersion": "1.0",
275 "modelVersionId": "33a99ef7-b5a3-4603-b21e-790582b4567e"
276 }
Rene_Robertfb177972019-07-09 14:39:47 +0200277 }
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200278 },
279 {
280 "relatedInstance": {
281 "instanceId": "9764c2af-e4b0-413d-80cd-b65014ea0926",
282 "modelInfo": {
283 "modelType": "vnf",
284 "modelName": "integration_test_VF_ubuntu16_2",
285 "modelInvariantId": "661a34ce-6f76-4ebf-ad94-814a9fc8a2aa",
286 "modelVersion": "1.0",
287 "modelVersionId": "7e7d453c-0085-4df2-b4b5-91281ea2e710",
288 "modelCustomizationId": "342c14b4-8a24-46dd-a8c3-ff39dd7949e9",
289 "modelCustomizationName": "integration_test_VF_ubuntu16_2 0"
290 }
Rene_Robertfb177972019-07-09 14:39:47 +0200291 }
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200292 }]
293 }
Rene_Robertfb177972019-07-09 14:39:47 +0200294 }'
295
296
297
Rene_Robertf45d05a2019-07-31 17:13:35 +0200298Requests to instantiate Neutron Network object
299----------------------------------------------
300
Rene_Robertfb177972019-07-09 14:39:47 +0200301To instantiate a Neutron Network, you need to build two complex request.
302All necessary parameters are available in the Tosca service template
303generated by SDC when you defined your service model.
304
305
Rene_Robertf45d05a2019-07-31 17:13:35 +02003061st request is the "SDNC-preload" for a neutron network object:
Rene_Robertfb177972019-07-09 14:39:47 +0200307
308::
309
310 curl -X POST \
311 http://sdnc.api.simpledemo.onap.org:30202/restconf/operations/VNF-API:preload-network-topology-operation \
312 -H 'Accept: application/json' \
313 -H 'Authorization: Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==' \
314 -H 'Content-Type: application/json' \
315 -H 'X-FromAppId: API client' \
316 -H 'X-TransactionId: 0a3f6713-ba96-4971-a6f8-c2da85a3176e' \
317 -H 'cache-control: no-cache' \
318 -d '{
319 "input": {
320 "request-information": {
321 "request-id": "postman001",
322 "notification-url": "http://so.onap.org",
323 "order-number": "postman001",
324 "request-sub-action": "SUPP",
325 "request-action": "PreloadNetworkRequest",
326 "source": "postman",
327 "order-version": "1.0"
328 },
329 "network-topology-information": {
330 "network-policy": [],
331 "route-table-reference": [],
332 "vpn-bindings": [],
333 "network-topology-identifier": {
334 "network-role": "integration_test_net",
335 "network-technology": "neutron",
336 "service-type": "my-service-2",
337 "network-name": "my_network_01",
338 "network-type": "Generic NeutronNet"
339 },
340 "provider-network-information": {
341 "is-external-network": "false",
342 "is-provider-network": "false",
343 "is-shared-network": "false"
344 },
345 "subnets": [
346 {
347 "subnet-name": "my_subnet_01",
348 "subnet-role": "OAM",
349 "start-address": "192.168.90.0",
350 "cidr-mask": "24",
351 "ip-version": "4",
352 "dhcp-enabled": "Y",
353 "dhcp-start-address": "",
354 "dhcp-end-address": "",
355 "gateway-address": "192.168.90.1",
356 "host-routes":[]
357 }
358 ]
359 },
360 "sdnc-request-header": {
361 "svc-action": "reserve",
362 "svc-notification-url": "http://so.onap.org",
363 "svc-request-id": "postman001"
364 }
365 }
366 }'
367
368
Rene_Robertf45d05a2019-07-31 17:13:35 +02003692nd request is to instantiate the neutron network via ONAP SO
Rene_Robertfb177972019-07-09 14:39:47 +0200370(instance name must be identical in both requests)
371
372
373::
374
andreasgeissler7789a222019-07-16 18:44:23 +0200375 curl -X POST \
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200376 http://so.api.simpledemo.onap.org:30277/onap/so/infra/serviceInstantiation/v7/95762b50-0244-4723-8fde-35f911db9263/networks \
Rene_Robertfb177972019-07-09 14:39:47 +0200377 -H 'Accept: application/json' \
378 -H 'Authorization: Basic SW5mcmFQb3J0YWxDbGllbnQ6cGFzc3dvcmQxJA==' \
379 -H 'Content-Type: application/json' \
380 -H 'X-FromAppId: AAI' \
381 -H 'X-TransactionId: get_aai_subscr' \
382 -H 'cache-control: no-cache' \
383 -d '{
384 "requestDetails": {
385 "requestInfo": {
386 "instanceName": "my_network_01",
387 "source": "VID",
388 "suppressRollback": false,
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200389 "requestorId": "demo"
Rene_Robertfb177972019-07-09 14:39:47 +0200390 },
391 "modelInfo": {
392 "modelType": "network",
393 "modelInvariantId": "0070b65c-48cb-4985-b4df-7c67ca99cd95",
394 "modelVersionId": "4f738bed-e804-4765-8d22-07bb4d11f14b",
395 "modelName": "Generic NeutronNet",
396 "modelVersion": "1.0",
397 "modelCustomizationId": "95534a95-dc8d-4ffb-89c7-091e2c49b55d",
398 "modelCustomizationName": "Generic NeutronNet 0"
399 },
400 "requestParameters": {
401 "userParams": [],
402 "aLaCarte": true,
403 "testApi": "VNF_API"
404 },
405 "cloudConfiguration": {
406 "lcpCloudRegionId": "my_cloud_site",
407 "tenantId": "5906b9b8fd9642df9ba1c9e290063439"
408 },
409 "lineOfBusiness": {
410 "lineOfBusinessName": "Test_LOB"
411 },
412 "platform": {
413 "platformName": "Test_platform"
414 },
415 "relatedInstanceList": [{
416 "relatedInstance": {
417 "instanceId": "95762b50-0244-4723-8fde-35f911db9263",
418 "modelInfo": {
419 "modelType": "service",
420 "modelName": "my_service_model_name",
421 "modelInvariantId": "11265d8c-2cc2-40e5-95d8-57cad81c18da",
422 "modelVersion": "1.0",
423 "modelVersionId": "0d463b0c-e559-4def-8d7b-df64cfbd3159"
424 }
425 }
426 }]
andreasgeissler7789a222019-07-16 18:44:23 +0200427 }
428 }'
Rene_Robertf45d05a2019-07-31 17:13:35 +0200429
430
Rene_Robertaa9be1c2019-10-24 09:23:25 +0200431It is then possible to get information about that network from AAI:
432replace {{virtual_link_UUID}} by the UUID of the virtual link
433
434
435::
436
437 curl -X GET \
438 https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/network/l3-networks/l3-network/{{virtual_link_UUID}} \
439 -H 'Accept: application/json' \
440 -H 'Authorization: Basic QUFJOkFBSQ==' \
441 -H 'Content-Type: application/json' \
442 -H 'X-FromAppId: AAI' \
443 -H 'X-TransactionId: get_aai_subscr' \
444 -H 'cache-control: no-cache'
445
446
447And also about subnet:
448
449::
450
451 curl -X GET \
452 https://aai.api.sparky.simpledemo.onap.org:30233/aai/v16/network/l3-networks/l3-network/{{virtual_link_UUID}}/subnets \
453 -H 'Accept: application/json' \
454 -H 'Authorization: Basic QUFJOkFBSQ==' \
455 -H 'Content-Type: application/json' \
456 -H 'X-FromAppId: AAI' \
457 -H 'X-TransactionId: get_aai_subscr' \
458 -H 'cache-control: no-cache'
459
460
461
Rene_Robertf45d05a2019-07-31 17:13:35 +0200462Requests to instantiate a Contrail Network object
463-------------------------------------------------
464
465TO BE COMPLETED