bdbd590e5f9da06fce654cb32604c91004fbd370
[vfc/nfvo/lcm.git] / docs / platform / ns-instantiate-guide.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3
4 NS LCM Guide Using VF-C
5 -----------------------
6
7 VF-C supports vCPE use case in R3, all VNFs are deployed through VF-C GVNFM .
8 This page describe how to use VF-C to instantiate NS
9
10 Before you try, please prepare two csar file: 
11 * VNF csar
12 * NS csar
13
14 If you don't have any csar, you can download the simple csar from https://wiki.onap.org/display/DW/VF-C+User+Guide 
15
16
17 Environment
18 +++++++++++
19 VF-C components can run as docker, docker service should be installed before installing VF-C components.
20
21 The following scripts show the docker service install commands in centos 7.
22
23 ::
24
25   yum install docker
26   systemctl enable docker.service
27   systemctl start docker.service
28
29 Steps
30 +++++
31
32
33
34 If you want to  try VF-C, the small project set should include: VF-C , Multicloud, MSB and A&AI.
35
36 VF-C components need to register to MSB when starting, so MSB components should be installed first,you can refer the following link to install MSB.
37
38 http://onap.readthedocs.io/en/latest/submodules/msb/apigateway.git/docs/platform/installation.html
39
40 Note: In the following steps, we use ${MSB_IP} as the IP of msb_apigateway component.
41
42
43 1. Install vfc-nfvo-lcm component.
44
45 ::
46
47   docker run -d -p 8403:8403 --name vfc-nslcm -e MSB_ADDR=${MSB_IP}:80 -e MYSQL_ADDR=${VFC_DB_IP}:3306
48   nexus3.onap.org:10001/onap/vfc/nslcm
49
50 2. Install modeling-etsicatalog component.
51
52 ::
53
54   docker run -d -p 8806:8806 --name modeling-etsicatalog -e MSB_ADDR=${MSB_IP}:80 -e MYSQL_ADDR=${VFC_DB_IP}:3306 nexus3.onap.org:10001/onap/modeling/etsicatalog
55
56 3. Install vfc-nfvo-gvnfmdriver component.
57
58 ::
59
60   docker run -d -p 8484:8484 --name vfc-gvnfmdriver -e MSB_ADDR=${MSB_IP}:80 nexus3.onap.org:10001/onap/vfc/gvnfmdriver
61
62 4. Install vfc-gvnfm-vnflcm component.
63
64 ::
65
66   docker run -d -p 8801:8801 --name vfc-vnflcm -e MSB_ADDR=${MSB_IP}:80 -e MYSQL_ADDR=${VFC_DB_IP}:3306 nexus3.onap.org:10001/onap/vfc/vnflcm
67
68
69 ESR Registration
70 ++++++++++++++++
71
72
73 Before we instantiate a service, we need to register vim and vnfm which is used to deploy vnfs.
74   1.VIM Registration
75
76   |image1|
77
78   .. |image1| image:: vim.png
79    :width: 1000px
80    :height: 600px
81
82
83   2. GVNFM Registration
84
85   For VF-C, because we use GVNFM to deploy vnfs , so you can register GVNFM in esr gui as follows:
86
87   |image2|
88
89   .. |image2| image:: gvnfm.png
90    :width: 1000px
91    :height: 600px
92
93
94 Note: type should be gvnfmdriver which is the same with gvnfmdriver microservice
95 url is the msb-iag NodeIp:port 
96 vim corresponds to cloudowner_cloudregionid which registered in step1
97
98 Package Onboarding
99 ++++++++++++++++++
100
101
102 VF-C R3 support VNF/PNF/NS csar package upload from local csar file. VNF/PNF csar package should be uploaded first, then NS csar package can be uploaded.
103 Before onboarding a package,  should create one record first. 
104
105
106 1. Create VNF package record in etsicatalog DB
107
108 ::
109
110   curl -X POST \
111
112   http://172.30.3.104:30280/api/vnfpkgm/v1/vnf_packages \
113
114   -H 'Postman-Token: f9c45dea-b7bb-4acd-89e1-b9b1c3d70d8a' \
115   -H 'accept: application/json' \
116   -H 'cache-control: no-cache' \
117   -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
118   -F 'userDefinedData= "key2": "value2"'
119
120 Note:  
121   a. 172.30.3.104:30280 is the node IP and exposed port where the msb-iag pod is located. 
122   b. userDefinedData is the key value pair which defined for the vnf package we created
123
124 2. Upload VNF package to modeling etsicatalog
125
126 ::
127
128   curl -X PUT \
129   http://172.30.3.104:30280/api/vnfpkgm/v1/vnf_packages/38037a12-a0d4-4aa4-ac50-cd6b05ce0b24/package_content \
130   -H 'Postman-Token: 88ada218-86fd-4cd7-a06e-cc462f5df651' \
131   -H 'cache-control: no-cache'
132   -H 'accept: application/json' \
133   -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
134   -F 'file=@C:\ONAP\Integration\R3\vCPE\vnf-vsn.csar'
135
136 Note:
137   a.  38037a12-a0d4-4aa4-ac50-cd6b05ce0b24  is the vnf_pkg_id which we get from the first step.
138   b.  -F is used to specify the local vnf package file
139
140 3. Create NS package record in etsicatalog DB
141
142 ::
143
144   curl -X POST \
145
146   http://172.30.3.104:30280/api/nsd/v1/ns_descriptors \
147   -H 'Postman-Token: 71b11910-1708-471c-84bb-5b0dd8d214a2' \
148   -H 'accept: application/json' \
149   -H 'cache-control: no-cache' \
150   -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
151   -F 'userDefinedData= "key1": "value1"'
152
153 Note:
154   a. userDefinedData is the key value pair which defined for the ns package we created
155
156 4. Upload NS package to modeling etsicatalog
157
158 ::
159
160   curl -X PUT \
161   http://172.30.3.104:30280/api/nsd/v1/ns_descriptors/79ca81ec-10e0-44e4-bc85-ba968f345711/nsd_content \
162   -H 'Postman-Token: f16e4a54-a514-4878-b307-9b80c630166e' \
163   -H 'cache-control: no-cache'
164   -H 'accept: application/json' \
165   -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
166   -F 'file=@C:\ONAP\Integration\R3\vCPE\ns.csar'
167
168 Note:
169   a.  -F is used to specify the local ns package file
170
171
172 NS Life Cycle Management
173 ++++++++++++++++++++++++
174
175
176 Currently VF-C GVNFM support NS create/Instantiate/terminate/delete/heal.
177
178 VF-C R3 healing only suport restart a vm of an VNF. 
179
180 1. NS Create 
181
182 ::
183
184   curl -X POST \
185   http://172.30.3.104:30280/api/nslcm/v1/ns \
186   -H 'Postman-Token: 27e2c576-2d9b-4753-a6b0-6262a4a7ec86' \
187   -H 'accept: application/json' \
188   -H 'cache-control: no-cache' \
189   -H 'content-type: application/json' \
190   -d '{
191        "context": {
192                 "globalCustomerId": "global-customer-id-test1",
193                 "serviceType": "service-type-test1"
194         },
195         "csarId": "79ca81ec-10e0-44e4-bc85-ba968f345711",
196         "nsName": "ns_vsn",
197         "description": "description"
198         }'
199
200 Note:
201   a.  globalCustomerId  and serviceType is defined in A&AI.
202   b. csar Id is the NS package id  which is consistent with the etsicatalog ns package id.
203   c. nsName is the NS name 
204
205 2. NS Instantiate
206
207 ::
208
209    curl -X POST \
210   http://172.30.3.104:30280/api/nslcm/v1/ns/f0b4c09f-c653-438a-b091-5218b0f806ec/instantiate \
211   -H 'Postman-Token: 2a9542b2-3364-4a40-8513-45e10b8ca2ce' \
212   -H 'accept: application/json' \
213   -H 'cache-control: no-cache' \
214   -H 'content-type: application/json' \
215     -d '{
216          "additionalParamForNs": {
217                 "sdnControllerId": "2"
218          },
219          "locationConstraints": [{
220                 "vnfProfileId": "45711f40-3f43-415b-bb45-46e5c6940735",
221                 "locationConstraints": {
222                       "vimId": "CPE-DC_RegionOne"
223                 }
224                 }]
225          }'
226
227 Note:
228   a.  f0b4c09f-c653-438a-b091-5218b0f806ec is the ns instance id which create in step 1 : NS create.
229   b.  locationConstraints  is an array which contains all the vnfs included under NS locationConstraints is used to define the VIM( cloudOwner_cloudRegionId)  that the VNF will be deployed vnfProfileId is the vnf descriptor id which defined in NS template  under  node_templates . 
230
231
232  |image3|
233
234   .. |image3| image:: image2018-12-10_12-1-36.png
235    :width: 5.97047in
236    :height: 2.63208in
237
238   c.   before instantiate, you should create one volumntype which is called root.
239
240 3. NS Heal
241
242 ::
243
244   curl -X PUT \
245    http://172.30.3.104:30280/api/nslcm/v1/ns/f0b4c09f-c653-438a-b091-5218b0f806ec/heal \
246   -H 'Content-Type: application/json' \
247   -H 'Postman-Token: f18754b8-ed68-43b0-ae55-b8b8780e5c6a' \
248   -H 'accept: application/json' \
249   -H 'cache-control: no-cache' \
250   -d '{   "vnfInstanceId": "044b705c-e44d-4733-ab64-987f46d9b567", 
251                     "cause": "restartvm",  
252                     "additionalParams": {    
253                                                         "action": "restartvm",  
254                                                          "actionvminfo": {   
255                                                          "vmid": "1623cd25-ae6f-4880-8132-15914367e47b",
256                                                          "vduid": "",    
257                                                           "vmname": "1623cd25-ae6f-4880-8132-15914367e47b"  
258         }}  
259         }'
260
261 Note:
262   a.  f0b4c09f-c653-438a-b091-5218b0f806ec  is the ns instance id which create in step 1 : NS create.
263   b.   "vnfInstanceId": "044b705c-e44d-4733-ab64-987f46d9b567" is the VNF instanceId, we can get this from A&AI or VF-C DB.
264   c.  action only support restartvm  in Casablanca release.
265   d.  actionvminfo only supports to include one vm , vmid is the vmid which is the same with the vmid in cloud. 
266
267 4. NS Terminate
268
269 ::
270
271   curl -X POST \
272   http://172.30.3.104:30280/api/nslcm/v1/ns/f0b4c09f-c653-438a-b091-5218b0f806ec/terminate \
273   -H 'Postman-Token: 5190e46f-f612-432a-90d8-161ea67778b2' \
274   -H 'accept: application/json' \
275   -H 'cache-control: no-cache' \
276   -H 'content-type: application/json' \
277   -d 'gracefulTerminationTimeout: 600,
278   \terminationType: FORCEFUL'
279
280 Note:
281   a.  f0b4c09f-c653-438a-b091-5218b0f806ec  is the ns instance id which create in step 1 : NS create.
282   b.  terminateType supports FORCEFUL and GRACEFULLc.  gracefulTerminationTimeout is the wait time before execute terminate.
283
284 5. NS delete
285
286 ::
287
288   curl -X DELETE \
289   http://172.30.3.104:30280/api/nslcm/v1/ns/f0b4c09f-c653-438a-b091-5218b0f806ec \
290   -H 'Postman-Token: 62b35de6-1785-40ed-8026-06d73f9770d8' \
291   -H 'cache-control: no-cache'
292
293 Note:
294   a.  f0b4c09f-c653-438a-b091-5218b0f806ec is the ns instance id which create in step 1 : NS create