diff options
author | Miruna Paun <Miruna.Paun@enea.com> | 2019-05-15 17:27:34 +0200 |
---|---|---|
committer | Martin Borg <martin.borg@enea.com> | 2019-05-16 11:16:48 +0200 |
commit | cdfd320516250acdc5d3a9b11b07a066262ad849 (patch) | |
tree | 89a984f48fdb0cd72c23017a02919d2596a84742 | |
parent | e0e4fa4f73db0fbd803b60b4368adbcb3667912e (diff) | |
download | nfv-access-documentation-cdfd320516250acdc5d3a9b11b07a066262ad849.tar.gz |
Add Content in all remaining chapters + basic formatting.
Content proofing to follow in new patches.
Change-Id: I3439ad81e05eef5b77fbd437e0aba635db7923c9
4 files changed, 1757 insertions, 305 deletions
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml index 53940eb..85d8dbf 100644 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml +++ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/automation_framework_test_harness.xml | |||
@@ -2,106 +2,1666 @@ | |||
2 | <chapter id="auto_fw_test_harness"> | 2 | <chapter id="auto_fw_test_harness"> |
3 | <title>Automation Framework and Test Harness</title> | 3 | <title>Automation Framework and Test Harness</title> |
4 | 4 | ||
5 | <para>The Automation Framework and Test Harness installation directory is | ||
6 | structured as follows:</para> | ||
7 | |||
8 | <programlisting>. | ||
9 | |-- automation_framework | ||
10 | | |-- device | ||
11 | | | |-- addDevice.py | ||
12 | | | |-- getEventsForUcpe.py | ||
13 | | | |-- removeDevice.py | ||
14 | | | `-- waitDeviceUp.py | ||
15 | | |-- eneaUcpeMgr.py | ||
16 | | |-- network | ||
17 | | | |-- bindNetworkInterface.py | ||
18 | | | |-- delNetworkBridge.py | ||
19 | | | |-- getNetworkInterfaces.py | ||
20 | | | |-- newNetworkBridge.py | ||
21 | | | `-- unbindNetworkInterface.py | ||
22 | | |-- unittestSuite | ||
23 | | | |-- config | ||
24 | | | | |-- addDevice.json | ||
25 | | | | |-- bindNetworkInterface.json | ||
26 | | | | |-- controlVNFI.json | ||
27 | | | | |-- delNetworkBridge.json | ||
28 | | | | |-- destroyVNFI.json | ||
29 | | | | |-- instantiateVNFI.json | ||
30 | | | | |-- newNetworkBridge.json | ||
31 | | | | |-- offboardVNF.json | ||
32 | | | | |-- onboardVNF.json | ||
33 | | | | |-- onboardVNFRaw.json | ||
34 | | | | |-- removeDevice.json | ||
35 | | | | |-- unbindNetworkInterface.json | ||
36 | | | | `-- waitDeviceUp.json | ||
37 | | | |-- fortigateCleanup.json | ||
38 | | | |-- fortigateDeploy.json | ||
39 | | | |-- unittestLoader.py | ||
40 | | | `-- unittestSuite.py | ||
41 | | `-- vnf | ||
42 | | |-- controlVNFI.py | ||
43 | | |-- destroyVNFI.py | ||
44 | | |-- instantiateVNFI.py | ||
45 | | |-- offboardVNF.py | ||
46 | | |-- onboardVNF.py | ||
47 | | `-- onboardVNFRaw.py | ||
48 | |-- ansible.cfg | ||
49 | |-- hosts | ||
50 | |-- setup_env.sh | ||
51 | |-- lab_config | ||
52 | | |-- intelc3850-2 | ||
53 | | | |-- intelc3850-2.json | ||
54 | | | |-- lan_br.json | ||
55 | | | |-- lan_nic.json | ||
56 | | | |-- wan_br.json | ||
57 | | | `-- wan_nic.json | ||
58 | | |-- inteld1521-1 | ||
59 | | | |-- inteld1521-1.json | ||
60 | | | |-- lan_br.json | ||
61 | | | |-- lan_nic.json | ||
62 | | | |-- mgmt_nic.json | ||
63 | | | |-- sfc_br.json | ||
64 | | | |-- vnf_mgmt_br.json | ||
65 | | | |-- wan_br.json | ||
66 | | | `-- wan_nic.json | ||
67 | | `-- inteld1521-2 | ||
68 | | |-- inteld1521-2.json | ||
69 | | |-- lan_br.json | ||
70 | | |-- lan_nic.json | ||
71 | | |-- mgmt_nic.json | ||
72 | | |-- sfc_br.json | ||
73 | | |-- vnf_mgmt_br.json | ||
74 | | |-- wan_br.json | ||
75 | | `-- wan_nic.json | ||
76 | |-- playbooks | ||
77 | | |-- addBridge.yml | ||
78 | | |-- addDevice.yml | ||
79 | | |-- bindNIC.yml | ||
80 | | |-- chainedVNFsService | ||
81 | | | |-- chainedVNFsService.yml | ||
82 | | | |-- cleanupChainedVNFsService.yml | ||
83 | | | `-- testChainedVNFsService.yml | ||
84 | | |-- controlVNFI.yml | ||
85 | | |-- deleteBridge.yml | ||
86 | | |-- destroyVNFI.yml | ||
87 | | |-- fortigateFWService | ||
88 | | | |-- cleanupFortigateFWInstance.yml | ||
89 | | | |-- cleanupTestFortigateFWInstance.yml | ||
90 | | | |-- instantiateFortigateFW.yml | ||
91 | | | `-- testFortigateFWInstance.yml | ||
92 | | |-- instantiateVNFI.yml | ||
93 | | |-- offboardVNF.yml | ||
94 | | |-- onboardVNFBundle.yml | ||
95 | | |-- onboardVNFImage.yml | ||
96 | | |-- removeDevice.yml | ||
97 | | |-- setupuCPEManager.yml | ||
98 | | |-- unbindNIC.yml | ||
99 | | `-- unittestSuiteTest | ||
100 | | |-- cleanupFortigateFWScenario.yml | ||
101 | | `-- deployFortigateFWScenario.yml | ||
102 | |-- uCPEM_config | ||
103 | | `-- ucpem01.json | ||
104 | |-- vnf_config | ||
105 | | |-- fortigateFWImage | ||
106 | | | |-- fortigateFWImage.json | ||
107 | | | |-- fortigateFWInstance1.json | ||
108 | | | `-- fortigateFWInstance2.json | ||
109 | | |-- fortigateImage | ||
110 | | | |-- fortigateFWInstance.json | ||
111 | | | `-- fortigateImage.json | ||
112 | | `-- junipervSRXImage | ||
113 | | |-- junipervSRXImage.json | ||
114 | | |-- junipervSRXInstanceAtomC1.json | ||
115 | | |-- junipervSRXInstanceAtomC2.json | ||
116 | | |-- junipervSRXInstanceXeonD1.json | ||
117 | | `-- junipervSRXInstanceXeonD2.json | ||
118 | `-- vnf_image</programlisting> | ||
119 | |||
5 | <section id="auto_fw"> | 120 | <section id="auto_fw"> |
6 | <title>Automation Framework</title> | 121 | <title>Automation Framework</title> |
7 | 122 | ||
8 | <para></para> | 123 | <para>All Automation Framework sources are under the |
9 | 124 | <literal><AF-TH-install-dir>/automation_framework</literal> | |
10 | <section id="python_testsuite"> | 125 | directory.</para> |
11 | <title>Python Unit-Test Suite</title> | ||
12 | 126 | ||
13 | <para></para> | 127 | <para>The <literal>/device</literal> folder contains Python scripts for |
14 | </section> | 128 | adding a uCPE device, receiving uCPE events' reports, removing a uCPE |
15 | 129 | device, and waiting for a uCPE device to connect to the uCPE | |
16 | <section id="add_ucpe_device"> | 130 | Manager.</para> |
17 | <title>Adding a uCPE Device</title> | ||
18 | 131 | ||
19 | <para></para> | 132 | <para>The <literal>/network</literal> folder contains Python scripts for |
20 | </section> | 133 | binding or unbinding a network interface to/from a target (DPDK or |
134 | SR-IOV), creating or deleting an OVS network bridge, or dumping network | ||
135 | interface information about the available interfaces.</para> | ||
21 | 136 | ||
22 | <section id="remove_ucpe_device"> | 137 | <para>The <literal>/unittestSuite</literal> folder contains Python |
23 | <title>Removing a uCPE Device</title> | 138 | unit-test class and loader scripts for generating specific test cases for |
139 | the available Python scripts. The generated test cases are injected into | ||
140 | the Python unit-test suite class to be run using the Python unit-test | ||
141 | framework.</para> | ||
24 | 142 | ||
25 | <para></para> | 143 | <para>The <literal>/unittestSuite/config</literal> folder contains |
26 | </section> | 144 | configuration files in JSON format that describe the list of test cases |
145 | for a particular Python script. Each defined test case is a dictionary | ||
146 | that must contain the test case name and arguments to be passed to the | ||
147 | Python script for running the test case.</para> | ||
27 | 148 | ||
28 | <section id="wait_ucpe_device"> | 149 | <para>The <literal>/vnf</literal> folder contains Python scripts for |
29 | <title>Waiting a uCPE Device</title> | 150 | onboarding and offboarding a VNF bundle or image, instantiating a VNF, |
151 | controlling a VNF instance or destroying an existing one.</para> | ||
30 | 152 | ||
31 | <para></para> | 153 | <para>The <filename>eneaUcpeMgr.py</filename> file acts as a library for |
32 | </section> | 154 | the (Python) Automation Framework scripts. It contains common functions |
155 | and unit-test configuration options.</para> | ||
33 | 156 | ||
34 | <section id="bind_ucpe_device"> | 157 | <section id="python_testsuite"> |
35 | <title>Bind a uCPE Device</title> | 158 | <title>Python Unit-Test Suite</title> |
36 | 159 | ||
37 | <para></para> | 160 | <para>The Python unit-test class defined in the |
38 | </section> | 161 | <filename>unittestSuite.py</filename> script provides a way to automate |
162 | the execution of specific test cases for each supported Python script. | ||
163 | This class requires a test suite configuration JSON file that contains a | ||
164 | dictionary list of the Python scripts to be processed. Each dictionary | ||
165 | must contain the path of the Python script to be loaded and the path to | ||
166 | the file describing the test cases to be performed against the | ||
167 | designated script.</para> | ||
39 | 168 | ||
40 | <section id="unbind_ucpe_device"> | 169 | <para>Steps for running the Python unit-test suite onto the uCPE Manager |
41 | <title>Unbind a uCPE Device</title> | 170 | are provided below.</para> |
42 | 171 | ||
43 | <para></para> | 172 | <section id="script_opts"> |
44 | </section> | 173 | <title>Script Options</title> |
45 | |||
46 | <section id="create_ovs_net_bridge"> | ||
47 | <title>Create an OVS Network Bridge</title> | ||
48 | 174 | ||
49 | <para></para> | 175 | <programlisting>$ python unittestSuite.py -h |
50 | </section> | 176 | Usage: unittestSuite.py [options] |
51 | 177 | ||
52 | <section id="delete_ovs_net_bridge"> | 178 | Run selected unit-test suite against Enea uCPE Manager. |
53 | <title>Delete an OVS Network Bridge</title> | ||
54 | 179 | ||
55 | <para></para> | 180 | Options: |
56 | </section> | 181 | --version show program's version number and exit |
182 | -h, --help show this help message and exit | ||
183 | -u USERNAME, --username=USERNAME | ||
184 | Enea uCPE Manager login username | ||
185 | -p PASSWORD, --password=PASSWORD | ||
186 | Enea uCPE Manager login password | ||
187 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
188 | -n DEVICENAME, --deviceName=DEVICENAME | ||
189 | Name of vCPE device (Virtual Infrastructure Manager) | ||
190 | -s SUITEFILE, --suite=SUITEFILE | ||
191 | Test suite configuration file in JSON format | ||
192 | -d DESCRIPTION, --description=DESCRIPTION | ||
193 | Test suite description | ||
57 | 194 | ||
58 | <section id="onboard_vnf_bundle"> | 195 | Mandatory options: |
59 | <title>Onboard a VNF Bundle</title> | 196 | -H/--host, -n/--deviceName, -s/--suiteFile, -d/--description</programlisting> |
197 | </section> | ||
60 | 198 | ||
61 | <para></para> | 199 | <section id="config_ut_json"> |
62 | </section> | 200 | <title>Configuring Unit-Test JSON File<remark>Starting from this |
201 | section onward NOTHING has been proofed</remark></title> | ||
63 | 202 | ||
64 | <section id="onboard_vnf_image"> | 203 | <para>The unit-test suite JSON configuration file contains a list of |
65 | <title>Onboard a VNF Image</title> | 204 | dictionaries, each dictionary indicating the path of the Python module |
205 | to load and the test cases configuration file to be executed against | ||
206 | the loaded module.</para> | ||
66 | 207 | ||
67 | <para></para> | 208 | <para>Sample unit-test configuration file describing the Fortigate |
68 | </section> | 209 | deployment scenario, fortigateDeploy.json:</para> |
69 | 210 | ||
70 | <section id="offboard_vnf"> | 211 | <para><programlisting>[ |
71 | <title>Offboard a VNF</title> | 212 | { |
213 | "config": "config/addDevice.json", | ||
214 | "module": "../device/addDevice.py" | ||
215 | }, | ||
216 | { | ||
217 | "config": "config/waitDeviceUp.json", | ||
218 | "module": "../device/waitDeviceUp.py" | ||
219 | }, | ||
220 | { | ||
221 | "config": "config/bindNetworkInterface.json", | ||
222 | "module": "../network/bindNetworkInterface.py" | ||
223 | }, | ||
224 | { | ||
225 | "config": "config/newNetworkBridge.json", | ||
226 | "module": "../network/newNetworkBridge.py" | ||
227 | }, | ||
228 | { | ||
229 | "config": "config/onboardVNFRaw.json", | ||
230 | "module": "../vnf/onboardVNFRaw.py" | ||
231 | }, | ||
232 | { | ||
233 | "config": "config/instantiateVNFI.json", | ||
234 | "module": "../vnf/instantiateVNFI.py" | ||
235 | }, | ||
236 | { | ||
237 | "config": "config/controlVNFI.json", | ||
238 | "module": "../vnf/controlVNFI.py" | ||
239 | } | ||
240 | ]</programlisting>Sample unit-test configuration file describing the Fortigate | ||
241 | cleanup scenario, fortigateCleanup.json:</para> | ||
72 | 242 | ||
73 | <para></para> | 243 | <programlisting>[ |
74 | </section> | 244 | { |
245 | "config": "config/destroyVNFI.json", | ||
246 | "module": "../vnf/destroyVNFI.py" | ||
247 | }, | ||
248 | { | ||
249 | "config": "config/delNetworkBridge.json", | ||
250 | "module": "../network/delNetworkBridge.py" | ||
251 | }, | ||
252 | { | ||
253 | "config": "config/unbindNetworkInterface.json", | ||
254 | "module": "../network/unbindNetworkInterface.py" | ||
255 | }, | ||
256 | { | ||
257 | "config": "config/offboardVNF.json", | ||
258 | "module": "../vnf/offboardVNF.py" | ||
259 | }, | ||
260 | { | ||
261 | "config": "config/removeDevice.json", | ||
262 | "module": "../device/removeDevice.py" | ||
263 | } | ||
264 | ]</programlisting> | ||
75 | 265 | ||
76 | <section id="instantiate_vnf"> | 266 | <para>"config" key contains the path to the test cases configuration |
77 | <title>Instantiate a VNF</title> | 267 | file.</para> |
78 | 268 | ||
79 | <para></para> | 269 | <para>"module" key contains the path to the Python script to be |
80 | </section> | 270 | executed.</para> |
271 | </section> | ||
81 | 272 | ||
82 | <section id="control_vnf_inst"> | 273 | <section id="ut_config_opts"> |
83 | <title>Control a VNF Instance</title> | 274 | <title>Unit-Test Configuration Options</title> |
84 | 275 | ||
85 | <para></para> | 276 | <para>The unit-test behavior can be tweaked in a number of ways |
86 | </section> | 277 | through the following options set through the eneaUcpeMgr.py |
278 | file:<programlisting># Defaults for the framework | ||
279 | username = "admin" | ||
280 | password = "admin" | ||
281 | host = None | ||
282 | deviceName = None | ||
283 | directory = "." | ||
284 | ftpUsername = "ftp" | ||
285 | ftpPassword = "ftp" | ||
286 | ftpPort = "2021" | ||
87 | 287 | ||
88 | <section id="destroy_vnf_inst"> | 288 | # Stop the test run on the first error or failure |
89 | <title>Destroy a VNF Instance</title> | 289 | failfast = True |
90 | 290 | ||
91 | <para></para> | 291 | # Logging levels ordered by the highest severity: |
92 | </section> | 292 | # CRITICAL 50 |
293 | # ERROR 40 | ||
294 | # WARNING 30 | ||
295 | # INFO 20 | ||
296 | # DEBUG 10 | ||
297 | # NOTSET 0 | ||
298 | fileLoggingLevel = logging.DEBUG | ||
299 | consoleLoggingLevel = logging.INFO</programlisting>username - user to be used | ||
300 | when authenticating to uCPE Manager; this can be overwritten by | ||
301 | setting the Python unit-test suite command line option -u.</para> | ||
302 | |||
303 | <para>password - password to be used when authenticating to uCPE | ||
304 | Manager; this can be overwritten by setting the Python unit-test suite | ||
305 | command line option -p.</para> | ||
306 | |||
307 | <para>host - IP address of the uCPE Manager host; this can be | ||
308 | overwritten by setting the Python unit-test suite command line option | ||
309 | -H.</para> | ||
310 | |||
311 | <para>devicename - name of the VCPE agent to perform the tests | ||
312 | against; this can be overwritten by setting the Python unit-test suite | ||
313 | command line option -n.</para> | ||
314 | |||
315 | <para>ftpUsername - user to be used for the FTP connection when | ||
316 | onboarding a VNF bundle/image; this can be overwritten by setting the | ||
317 | Python script command line option -f.</para> | ||
318 | |||
319 | <para>ftpPassword - password to be used for the FTP connection when | ||
320 | onboarding a VNF bundle/image; this can be overwritten by setting the | ||
321 | Python script command line option -w.</para> | ||
322 | |||
323 | <para>ftpPort - port to be used for the FTP connection when onboarding | ||
324 | a VNF bundle/image; this can be overwritten by setting the Python | ||
325 | script command line option -P.</para> | ||
326 | |||
327 | <para>failfast - describes the unit-test execution behavior on the | ||
328 | first error or failure encountered.</para> | ||
329 | |||
330 | <para>fileLoggingLevel - sets the file logging level.</para> | ||
331 | |||
332 | <para>consoleLoggingLevel - sets the console logging level.</para> | ||
333 | </section> | ||
334 | |||
335 | <section id="ut_suite_log"> | ||
336 | <title>Python Unit-Test Suite Logging</title> | ||
337 | |||
338 | <para>Logging messages are displayed in the console and also saved to | ||
339 | the specified log file depending on the chosen logging level.</para> | ||
340 | |||
341 | <para>Logging messages are ranked by their severity | ||
342 | level:<programlisting>CRITICAL 50 | ||
343 | ERROR 40 | ||
344 | WARNING 30 | ||
345 | INFO 20 | ||
346 | DEBUG 10 | ||
347 | NOTSET 0</programlisting>Logging messages which are less severe than the | ||
348 | logging level set will be ignored.</para> | ||
349 | |||
350 | <para>Setting console logging level to INFO is done through the | ||
351 | consoleLoggingLevel option:<programlisting>consoleLoggingLevel = logging.INFO</programlisting>Setting | ||
352 | file logging level to DEBUG is done through the fileLoggingLevel | ||
353 | option:<programlisting>fileLoggingLevel = logging.DEBUG</programlisting></para> | ||
354 | </section> | ||
355 | |||
356 | <section id="run_ut_suite"> | ||
357 | <title>Running Python Unit-Test Suite</title> | ||
358 | |||
359 | <para>Sample unit-test command line options for running the Fortigate | ||
360 | deployment scenario:</para> | ||
361 | |||
362 | <para><programlisting>$ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s | ||
363 | fortigateDeploy.json -d "Fortigate deployment scenario"</programlisting>Setting | ||
364 | console logging level to DEBUG:<programlisting>consoleLoggingLevel = logging.DEBUG</programlisting><emphasis | ||
365 | role="bold">Expected Output:</emphasis><programlisting>2019-03-07 18:03:20,791 - DEBUG: Started logging | ||
366 | |||
367 | Running Fortigate deployment scenario... | ||
368 | |||
369 | test 001: Add VCPE Agent device (__main__.UnittestSuite) ... | ||
370 | 2019-03-07 18:03:20,795 - INFO: Add uCPE device | ||
371 | 2019-03-07 18:03:20,924 - DEBUG: Login successful on host 'localhost' | ||
372 | 2019-03-07 18:03:20,925 - DEBUG: Session token is: 876160c3-40f2-11e9-a81f525400d08e1d | ||
373 | 2019-03-07 18:03:20,949 - DEBUG: Add new device 'intelc3850-2' to uCPE Manager host | ||
374 | 2019-03-07 18:03:21,100 - INFO: Done | ||
375 | 2019-03-07 18:03:21,133 - DEBUG: Logging out and exiting... | ||
376 | ok | ||
377 | test 002: Wait VCPE Agent device be up (__main__.UnittestSuite) ... | ||
378 | 2019-03-07 18:03:21,133 - INFO: Wait uCPE device | ||
379 | 2019-03-07 18:03:21,149 - DEBUG: Login successful on host 'localhost' | ||
380 | 2019-03-07 18:03:21,149 - DEBUG: Session token is: 8785b1a0-40f2-11e9-a81f525400d08e1d | ||
381 | 2019-03-07 18:03:21,157 - DEBUG: Found device with name 'intelc3850-2' | ||
382 | 2019-03-07 18:03:21,157 - DEBUG: Wait for device 'intelc3850-2' to connect | ||
383 | 2019-03-07 18:03:29,356 - DEBUG: Status: Connected | ||
384 | 2019-03-07 18:03:29,356 - INFO: Done | ||
385 | 2019-03-07 18:03:29,365 - DEBUG: Logging out and exiting... | ||
386 | ok | ||
387 | test 003: Bind lan NIC to DPDK target (__main__.UnittestSuite) ... | ||
388 | 2019-03-07 18:03:29,366 - INFO: Bind NIC | ||
389 | 2019-03-07 18:03:29,406 - DEBUG: Login successful on host 'localhost' | ||
390 | 2019-03-07 18:03:29,406 - DEBUG: Session token is: 8c719cb0-40f2-11e9-a81f525400d08e1d | ||
391 | 2019-03-07 18:03:29,415 - DEBUG: Found device with name 'intelc3850-2' | ||
392 | 2019-03-07 18:03:29,415 - DEBUG: Bind NIC '0000:01:00.1' to dpdk target | ||
393 | 2019-03-07 18:03:30,030 - INFO: Done | ||
394 | 2019-03-07 18:03:30,067 - DEBUG: Logging out and exiting... | ||
395 | ok | ||
396 | test 004: Bind wan NIC to DPDK target (__main__.UnittestSuite) ... | ||
397 | 2019-03-07 18:03:30,068 - INFO: Bind NIC | ||
398 | 2019-03-07 18:03:30,086 - DEBUG: Login successful on host 'localhost' | ||
399 | 2019-03-07 18:03:30,087 - DEBUG: Session token is: 8cd95f32-40f2-11e9-a81f525400d08e1d | ||
400 | 2019-03-07 18:03:30,095 - DEBUG: Found device with name 'intelc3850-2' | ||
401 | 2019-03-07 18:03:30,096 - DEBUG: Bind NIC '0000:03:00.2' to dpdk target | ||
402 | 2019-03-07 18:03:30,729 - INFO: Done | ||
403 | 2019-03-07 18:03:30,767 - DEBUG: Logging out and exiting... | ||
404 | ok | ||
405 | test 005: Creating network bridge LAN (__main__.UnittestSuite) ... | ||
406 | 2019-03-07 18:03:30,768 - INFO: New OVS network bridge | ||
407 | 2019-03-07 18:03:30,801 - DEBUG: Login successful on host 'localhost' | ||
408 | 2019-03-07 18:03:30,801 - DEBUG: Session token is: 8d454061-40f2-11e9-a81f525400d08e1d | ||
409 | 2019-03-07 18:03:30,811 - DEBUG: Found device with name 'intelc3850-2' | ||
410 | 2019-03-07 18:03:30,812 - DEBUG: Create new OVS network bridge 'lan_br' | ||
411 | 2019-03-07 18:03:37,358 - INFO: Done | ||
412 | 2019-03-07 18:03:37,402 - DEBUG: Logging out and exiting... | ||
413 | ok | ||
414 | test 006: Creating network bridge WAN (__main__.UnittestSuite) ... | ||
415 | 2019-03-07 18:03:37,402 - INFO: New OVS network bridge | ||
416 | 2019-03-07 18:03:37,461 - DEBUG: Login successful on host 'localhost' | ||
417 | 2019-03-07 18:03:37,461 - DEBUG: Session token is: 913c4420-40f2-11e9-a81f525400d08e1d | ||
418 | 2019-03-07 18:03:37,485 - DEBUG: Found device with name 'intelc3850-2' | ||
419 | 2019-03-07 18:03:37,485 - DEBUG: Create new OVS network bridge 'wan_br' | ||
420 | 2019-03-07 18:03:37,755 - INFO: Done | ||
421 | 2019-03-07 18:03:37,792 - DEBUG: Logging out and exiting... | ||
422 | ok | ||
423 | test 007: Onboarding Fortigate VNF (wizard API) (__main__.UnittestSuite) ... | ||
424 | 2019-03-07 18:03:37,792 - INFO: Onboard wizard | ||
425 | 2019-03-07 18:03:37,859 - DEBUG: Login successful on host 'localhost' | ||
426 | 2019-03-07 18:03:37,859 - DEBUG: Session token is: 91770330-40f2-11e9-a81f525400d08e1d | ||
427 | 2019-03-07 18:03:37,860 - DEBUG: FTP file '../../vnf_bundles/fortios.qcow2' on host | ||
428 | 'localhost', port '2021' | ||
429 | 2019-03-07 18:03:38,027 - DEBUG: Onboard VNF raw: fortios.qcow2 | ||
430 | 2019-03-07 18:03:41,701 - INFO: Done | ||
431 | 2019-03-07 18:03:41,748 - DEBUG: Logging out and exiting... | ||
432 | ok | ||
433 | test 008: Instantiate Fortigate VNF (__main__.UnittestSuite) ... | ||
434 | 2019-03-07 18:03:41,778 - INFO: Instantiate VNF | ||
435 | 2019-03-07 18:03:41,813 - DEBUG: Login successful on host 'localhost' | ||
436 | 2019-03-07 18:03:41,815 - DEBUG: Session token is: 93d69e10-40f2-11e9-a81f525400d08e1d | ||
437 | 2019-03-07 18:03:41,834 - DEBUG: Found device with name 'intelc3850-2' | ||
438 | 2019-03-07 18:03:41,878 - DEBUG: Found VNF descriptor with name 'fortigateImage' | ||
439 | 2019-03-07 18:03:41,888 - DEBUG: Encrypt string content: | ||
440 | cloudInit("vnf_config/fortigateImage/fortigateFW.conf") | ||
441 | 2019-03-07 18:03:41,889 - DEBUG: Encrypt string content: | ||
442 | License("vnf_config/fortigateImage/fortigateLicense.lic") | ||
443 | 2019-03-07 18:03:41,889 - DEBUG: Instantiate fortigateImage VNF on 'intelc3850-2' | ||
444 | 2019-03-07 18:03:49,887 - INFO: Done | ||
445 | 2019-03-07 18:03:49,921 - DEBUG: Logging out and exiting... | ||
446 | ok | ||
447 | test 009: Pause Fortigate VNF instance (__main__.UnittestSuite) ... | ||
448 | 2019-03-07 18:03:49,923 - INFO: Control VNF | ||
449 | 2019-03-07 18:03:49,982 - DEBUG: Login successful on host 'localhost' | ||
450 | 2019-03-07 18:03:49,983 - DEBUG: Session token is: 98b17220-40f2-11e9-a81f525400d08e1d | ||
451 | 2019-03-07 18:03:49,991 - DEBUG: Found device with name 'intelc3850-2' | ||
452 | 2019-03-07 18:03:50,031 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
453 | 2019-03-07 18:03:50,031 - DEBUG: Control VNF instance 'intelc3850-2', command: | ||
454 | pause | ||
455 | 2019-03-07 18:03:50,914 - INFO: Done | ||
456 | 2019-03-07 18:03:50,933 - DEBUG: Logging out and exiting... | ||
457 | ok | ||
458 | test 010: Resume Fortigate VNF instance (__main__.UnittestSuite) ... | ||
459 | 2019-03-07 18:03:50,933 - INFO: Control VNF | ||
460 | 2019-03-07 18:03:50,992 - DEBUG: Login successful on host 'localhost' | ||
461 | 2019-03-07 18:03:50,992 - DEBUG: Session token is: 994c0473-40f2-11e9-a81f525400d08e1d | ||
462 | 2019-03-07 18:03:51,005 - DEBUG: Found device with name 'intelc3850-2' | ||
463 | 2019-03-07 18:03:51,023 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
464 | 2019-03-07 18:03:51,024 - DEBUG: Control VNF instance 'intelc3850-2', command: | ||
465 | resume | ||
466 | 2019-03-07 18:03:51,963 - INFO: Done | ||
467 | 2019-03-07 18:03:51,991 - DEBUG: Logging out and exiting... | ||
468 | ok | ||
469 | test 011: Stop Fortigate VNF instance (__main__.UnittestSuite) ... | ||
470 | 2019-03-07 18:03:51,992 - INFO: Control VNF | ||
471 | 2019-03-07 18:03:52,031 - DEBUG: Login successful on host 'localhost' | ||
472 | 2019-03-07 18:03:52,031 - DEBUG: Session token is: 99ed9ba3-40f2-11e9-a81f525400d08e1d | ||
473 | 2019-03-07 18:03:52,046 - DEBUG: Found device with name 'intelc3850-2' | ||
474 | 2019-03-07 18:03:52,073 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
475 | 2019-03-07 18:03:52,073 - DEBUG: Control VNF instance 'intelc3850-2', command: stop | ||
476 | 2019-03-07 18:03:53,011 - INFO: Done | ||
477 | 2019-03-07 18:03:53,047 - DEBUG: Logging out and exiting... | ||
478 | ok | ||
479 | test 012: Start Fortigate VNF instance (__main__.UnittestSuite) ... | ||
480 | 2019-03-07 18:03:53,048 - INFO: Control VNF | ||
481 | 2019-03-07 18:03:53,080 - DEBUG: Login successful on host 'localhost' | ||
482 | 2019-03-07 18:03:53,080 - DEBUG: Session token is: 9a8d8523-40f2-11e9-a81f525400d08e1d | ||
483 | 2019-03-07 18:03:53,109 - DEBUG: Found device with name 'intelc3850-2' | ||
484 | 2019-03-07 18:03:53,140 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
485 | 2019-03-07 18:03:53,141 - DEBUG: Control VNF instance 'intelc3850-2', command: | ||
486 | start | ||
487 | 2019-03-07 18:03:54,087 - INFO: Done | ||
488 | 2019-03-07 18:03:54,123 - DEBUG: Logging out and exiting... | ||
489 | ok | ||
490 | |||
491 | ---------------------------------------------------------------------- | ||
492 | Ran 12 tests in 33.328s | ||
493 | |||
494 | OK</programlisting></para> | ||
495 | |||
496 | <para>Sample unit-test command line options for running the Fortigate | ||
497 | cleanup scenario:<programlisting>$ python unittestSuite.py -u admin -p admin -H localhost -n intelc3850-2 -s | ||
498 | fortigateCleanup.json -d "Fortigate cleanup scenario"</programlisting></para> | ||
499 | |||
500 | <para>Setting console logging level to INFO: <programlisting>consoleLoggingLevel = logging.INFO</programlisting></para> | ||
501 | |||
502 | <para><emphasis role="bold">Expected | ||
503 | Output:</emphasis><programlisting>Running Fortigate cleanup scenario... | ||
504 | test 001: Destroying Fortigate VNF (__main__.UnittestSuite) ... | ||
505 | 2019-03-07 18:04:55,997 - INFO: Destroy VNF | ||
506 | 2019-03-07 18:04:56,668 - INFO: Done | ||
507 | ok | ||
508 | test 002: Deleting network bridge LAN (__main__.UnittestSuite) ... | ||
509 | 2019-03-07 18:04:56,739 - INFO: Delete OVS network bridge | ||
510 | 2019-03-07 18:04:57,908 - INFO: Done | ||
511 | ok | ||
512 | test 003: Deleting network bridge WAN (__main__.UnittestSuite) ... | ||
513 | 2019-03-07 18:04:57,931 - INFO: Delete OVS network bridge | ||
514 | 2019-03-07 18:04:59,464 - INFO: Done | ||
515 | ok | ||
516 | test 004: Unbind lan NIC from DPDK target (__main__.UnittestSuite) ... | ||
517 | 2019-03-07 18:04:59,477 - INFO: Unbind NIC | ||
518 | 2019-03-07 18:05:00,639 - INFO: Done | ||
519 | ok | ||
520 | test 005: Unbind wan NIC from DPDK target (__main__.UnittestSuite) ... | ||
521 | 2019-03-07 18:05:00,658 - INFO: Unbind NIC | ||
522 | 2019-03-07 18:05:01,533 - INFO: Done | ||
523 | ok | ||
524 | test 006: Offboarding Fortigate VNF (__main__.UnittestSuite) ... | ||
525 | 2019-03-07 18:05:01,566 - INFO: Offboard VNF | ||
526 | 2019-03-07 18:05:01,814 - INFO: Done | ||
527 | ok | ||
528 | test 007: Remove VCPE Agent device (__main__.UnittestSuite) ... | ||
529 | 2019-03-07 18:05:01,853 - INFO: Remove uCPE device | ||
530 | 2019-03-07 18:05:02,184 - INFO: Done | ||
531 | ok | ||
532 | |||
533 | ---------------------------------------------------------------------- | ||
534 | Ran 7 tests in 6.198s | ||
535 | |||
536 | OK</programlisting></para> | ||
537 | </section> | ||
538 | </section> | ||
539 | |||
540 | <section id="add_ucpe_device"> | ||
541 | <title>Adding a uCPE Device</title> | ||
542 | |||
543 | <para>Adds a uCPE device to the uCPE manager.</para> | ||
544 | |||
545 | <section id="opts_add_device"> | ||
546 | <title>Script Options</title> | ||
547 | |||
548 | <programlisting>$ python addDevice.py -h | ||
549 | Usage: addDevice.py [options] | ||
550 | |||
551 | Add a uCPE in Enea uCPE Manager. | ||
552 | |||
553 | Options: | ||
554 | --version show program's version number and exit | ||
555 | -h, --help show this help message and exit | ||
556 | -u USERNAME, --username=USERNAME | ||
557 | Enea uCPE Manager login username | ||
558 | -p PASSWORD, --password=PASSWORD | ||
559 | Enea uCPE Manager login password | ||
560 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
561 | -f DEVICEFILE, --file=DEVICEFILE | ||
562 | File containing uCPE Information in JSON format | ||
563 | |||
564 | Mandatory options: | ||
565 | -H/--host, -f/--file</programlisting> | ||
566 | </section> | ||
567 | |||
568 | <section id="config_json_adddev"> | ||
569 | <title>Configuring the JSON File</title> | ||
570 | |||
571 | <para>The add device suite JSON configuration file should contain a | ||
572 | list of dictionaries, each dictionary indicating the test case name | ||
573 | and the test case arguments passed to the addDevice Python | ||
574 | module.</para> | ||
575 | |||
576 | <para><emphasis role="bold">Sample configuration file in JSON | ||
577 | format:</emphasis></para> | ||
578 | |||
579 | <programlisting>[ | ||
580 | { | ||
581 | "name": "Add VCPE Agent device ", | ||
582 | "args": "-f ../../lab_config/intelc3850-2/intelc3850-2.json" | ||
583 | } | ||
584 | ]</programlisting> | ||
585 | |||
586 | <para><emphasis role="bold">Sample intelc3850-2.json configuration | ||
587 | file:</emphasis></para> | ||
588 | |||
589 | <programlisting>{ | ||
590 | "name": " intelc3850-2", | ||
591 | "description": "", | ||
592 | "address": "192.168.1.100", | ||
593 | "port": "22", | ||
594 | "username": "root", | ||
595 | "password": "root", | ||
596 | "certificate": null, | ||
597 | "passphrase": null, | ||
598 | "maintMode": "false" | ||
599 | }</programlisting> | ||
600 | </section> | ||
601 | |||
602 | <section id="run_py_mod"> | ||
603 | <title>Running the Python Module</title> | ||
604 | |||
605 | <para>The addDevice Python module can be executed individually by | ||
606 | running the following command line:</para> | ||
607 | |||
608 | <programlisting>$ python addDevice.py -u admin -p admin -H localhost -f config/device.json | ||
609 | 2019-03-07 17:33:10,755 - DEBUG: Started logging | ||
610 | 2019-03-07 17:33:10,756 - INFO: Add uCPE device | ||
611 | 2019-03-07 17:33:10,975 - DEBUG: Login successful on host 'localhost' | ||
612 | 2019-03-07 17:33:10,979 - DEBUG: Session token is: 508b6ea2-40ee-11e9-a81f525400d08e1d | ||
613 | 2019-03-07 17:33:11,049 - DEBUG: Add new device 'intelc3850-2' to uCPE Manager host | ||
614 | 2019-03-07 17:33:11,483 - INFO: Done | ||
615 | 2019-03-07 17:33:11,501 - DEBUG: Logging out and exiting....</programlisting> | ||
616 | </section> | ||
617 | </section> | ||
618 | |||
619 | <section id="remove_ucpe_device"> | ||
620 | <title>Removing a uCPE Device</title> | ||
621 | |||
622 | <para>Removes a uCPE device from uCPE manager.</para> | ||
623 | |||
624 | <section id="rem_script_opts"> | ||
625 | <title>Script Options</title> | ||
626 | |||
627 | <programlisting>$ python removeDevice.py -h | ||
628 | Usage: removeDevice.py [options] | ||
629 | |||
630 | Remove a uCPE from Enea uCPE Manager. | ||
631 | |||
632 | Options: | ||
633 | --version show program's version number and exit | ||
634 | -h, --help show this help message and exit | ||
635 | -u USERNAME, --username=USERNAME | ||
636 | Enea uCPE Manager login username | ||
637 | -p PASSWORD, --password=PASSWORD | ||
638 | Enea uCPE Manager login password | ||
639 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
640 | -f DEVICEFILE, --file=DEVICEFILE | ||
641 | File containing uCPE Information in JSON format | ||
642 | |||
643 | Mandatory options: | ||
644 | -H/--host, -f/--file</programlisting> | ||
645 | </section> | ||
646 | |||
647 | <section id="config_json_rem"> | ||
648 | <title>Configuring the JSON File</title> | ||
649 | |||
650 | <para>The remove device suite JSON configuration file should contain a | ||
651 | list of dictionaries, each dictionary indicating the test case name | ||
652 | and the test case arguments passed to the removeDevice Python | ||
653 | module.</para> | ||
654 | |||
655 | <para><emphasis role="bold">Sample unit-test JSON file | ||
656 | format:</emphasis></para> | ||
657 | |||
658 | <programlisting>[ | ||
659 | { | ||
660 | "name": "Remove VCPE Agent device ", | ||
661 | "args": "-f ../../lab_config/intelc3850-2/intelc3850-2.json" | ||
662 | } | ||
663 | ]</programlisting> | ||
664 | |||
665 | <para><emphasis role="bold">Sample intelc3850-2.json configuration | ||
666 | file:</emphasis></para> | ||
667 | |||
668 | <programlisting>{ | ||
669 | "name": "intelc3850-2" | ||
670 | }</programlisting> | ||
671 | </section> | ||
672 | |||
673 | <section id="Run_py_mod_rem"> | ||
674 | <title>Running the Python Module</title> | ||
675 | |||
676 | <para>The removeDevice Python module can be executed individually by | ||
677 | running the following command line:</para> | ||
678 | |||
679 | <programlisting>$ python removeDevice.py -u admin -p admin -H localhost -f | ||
680 | ../../lab_config/intelc3850-2/intelc3850-2.json | ||
681 | 2019-03-07 17:33:56,834 - DEBUG: Started logging | ||
682 | 2019-03-07 17:33:56,835 - INFO: Remove uCPE device | ||
683 | 2019-03-07 17:33:56,856 - DEBUG: Login successful on host 'localhost' | ||
684 | 2019-03-07 17:33:56,856 - DEBUG: Session token is: 6bebcb43-40ee-11e9-a81f525400d08e1d | ||
685 | 2019-03-07 17:33:56,856 - DEBUG: Delete device 'intelc3850-2' from uCPE Manager | ||
686 | host | ||
687 | 2019-03-07 17:33:56,875 - DEBUG: Found device with name 'intelc3850-2' | ||
688 | 2019-03-07 17:33:57,159 - INFO: Done | ||
689 | 2019-03-07 17:33:57,171 - DEBUG: Logging out and exiting...</programlisting> | ||
690 | </section> | ||
691 | </section> | ||
692 | |||
693 | <section id="wait_ucpe_device"> | ||
694 | <title>Waiting a uCPE Device</title> | ||
695 | |||
696 | <para>Wait for uCPE to connect to the Enea uCPE Manager after | ||
697 | installation.</para> | ||
698 | |||
699 | <section id="wait_script_opts"> | ||
700 | <title>Script Options</title> | ||
701 | |||
702 | <programlisting>$ python waitDeviceUp.py -h | ||
703 | Usage: waitDeviceUp.py [options] | ||
704 | |||
705 | Wait for uCPE to connect to the Enea uCPE Manager after installation. | ||
706 | |||
707 | Options: | ||
708 | --version show program's version number and exit | ||
709 | -h, --help show this help message and exit | ||
710 | -u USERNAME, --username=USERNAME | ||
711 | Enea uCPE Manager login username | ||
712 | -p PASSWORD, --password=PASSWORD | ||
713 | Enea uCPE Manager login password | ||
714 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
715 | -f DEVICEFILE, --file=DEVICEFILE | ||
716 | File containing uCPE Information in JSON format | ||
717 | -t TIMEOUT, --timeout=TIMEOUT | ||
718 | Time in seconds for maximum wait period, default = | ||
719 | instant | ||
720 | |||
721 | Mandatory options: | ||
722 | -H/--host, -f/--file</programlisting> | ||
723 | </section> | ||
724 | |||
725 | <section id="config_json_wait"> | ||
726 | <title>Configuring the JSON File</title> | ||
727 | |||
728 | <para>The wait device suite JSON configuration file should contain a | ||
729 | list of dictionaries, each dictionary indicating the test case name | ||
730 | and the test case arguments passed to the waitDeviceUp Python | ||
731 | module.</para> | ||
732 | |||
733 | <para><emphasis role="bold">Sample unit-test JSON file | ||
734 | format:</emphasis></para> | ||
735 | |||
736 | <programlisting>[ | ||
737 | { | ||
738 | "name": "Wait VCPE Agent device be up", | ||
739 | "args": "-f ../../lab_config/intelc3850-2/intelc3850-2.json -t 60" | ||
740 | } | ||
741 | ]</programlisting> | ||
742 | |||
743 | <para><emphasis role="bold">Sample intelc3850-2.json configuration | ||
744 | file:</emphasis></para> | ||
745 | |||
746 | <programlisting>{ | ||
747 | "name": "intelc3850-2" | ||
748 | }</programlisting> | ||
749 | </section> | ||
750 | |||
751 | <section id="runpy_mod_wait"> | ||
752 | <title>Running the Python Module</title> | ||
753 | |||
754 | <para>The waitDeviceUp Python module can be executed individually by | ||
755 | running the following command line:<programlisting>$ python waitDeviceUp.py -u admin -p admin -H localhost -t 60 -f | ||
756 | ../../lab_config/intelc3850-2/intelc3850-2.json | ||
757 | 2019-03-07 18:03:21,132 - DEBUG: Started logging | ||
758 | 2019-03-07 18:03:21,133 - INFO: Wait uCPE device | ||
759 | 2019-03-07 18:03:21,149 - DEBUG: Login successful on host 'localhost' | ||
760 | 2019-03-07 18:03:21,149 - DEBUG: Session token is: 8785b1a0-40f2-11e9-a81f525400d08e1d | ||
761 | 2019-03-07 18:03:21,157 - DEBUG: Found device with name 'intelc3850-2' | ||
762 | 2019-03-07 18:03:21,157 - DEBUG: Wait for device 'intelc3850-2' to connect | ||
763 | 2019-03-07 18:03:29,356 - DEBUG: Status: Connected | ||
764 | 2019-03-07 18:03:29,356 - INFO: Done | ||
765 | 2019-03-07 18:03:29,365 - DEBUG: Logging out and exiting...</programlisting></para> | ||
766 | </section> | ||
767 | </section> | ||
768 | |||
769 | <section id="bind_ucpe_device"> | ||
770 | <title>Bind a uCPE Device</title> | ||
771 | |||
772 | <para>Binds a physical network interface to a DPDK or SR-IOV | ||
773 | target.</para> | ||
774 | |||
775 | <section id="script_opts_bind"> | ||
776 | <title>Script Options</title> | ||
777 | |||
778 | <programlisting>$ python bindNetworkInterface.py -h | ||
779 | Usage: bindNetworkInterface.py [options] | ||
780 | |||
781 | Binds a physical network interface to a DPDK or SR-IOV target. | ||
782 | |||
783 | Options: | ||
784 | --version show program's version number and exit | ||
785 | -h, --help show this help message and exit | ||
786 | -u USERNAME, --username=USERNAME | ||
787 | Enea uCPE Manager login username | ||
788 | -p PASSWORD, --password=PASSWORD | ||
789 | Enea uCPE Manager login password | ||
790 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
791 | -f NICFILE, --file=NICFILE | ||
792 | File containing network interface Information in JSON | ||
793 | format | ||
794 | -n DEVICENAME, --device-name=DEVICENAME | ||
795 | Name of the device | ||
796 | |||
797 | Mandatory options: | ||
798 | -H/--host, -f/--file, -n/--device-name</programlisting> | ||
799 | </section> | ||
800 | |||
801 | <section id="bind_config"> | ||
802 | <title>Configuring the JSON File</title> | ||
803 | |||
804 | <para>The bind network interface suite JSON configuration file should | ||
805 | contain a list of dictionaries, each dictionary indicating the test | ||
806 | case name and the test case arguments passed to the | ||
807 | bindNetworkInterface Python module.</para> | ||
808 | |||
809 | <para><emphasis role="bold">Sample unit-test JSON file | ||
810 | format:</emphasis><programlisting>[ | ||
811 | { | ||
812 | "name": "Bind lan NIC to DPDK target ", | ||
813 | "args": "-f ../../lab_config/intelc3850-2/lan_nic.json" | ||
814 | }, | ||
815 | { | ||
816 | "name": "Bind wan NIC to DPDK target ", | ||
817 | "args": "-f ../../lab_config/intelc3850-2/wan_nic.json" | ||
818 | } | ||
819 | ]</programlisting><emphasis role="bold">Sample lan_nic.json configuration | ||
820 | file:</emphasis><programlisting>{ | ||
821 | "name": "0000:01:00.1", | ||
822 | "type": "dpdk", | ||
823 | "subType": "igb_uio" | ||
824 | }</programlisting><emphasis role="bold">Sample wan_nic.json configuration | ||
825 | file:</emphasis><programlisting>{ | ||
826 | "name": "0000:03:00.2", | ||
827 | "type": "dpdk", | ||
828 | "subType": "igb_uio" | ||
829 | }</programlisting></para> | ||
830 | </section> | ||
831 | |||
832 | <section id="runpy_bind"> | ||
833 | <title>Running the Python Module</title> | ||
834 | |||
835 | <para>The bindNetworkInterface Python module can be executed | ||
836 | individually by running the following command line:</para> | ||
837 | |||
838 | <programlisting>$ python bindNetworkInterface.py -u admin -p admin -H localhost -f | ||
839 | ../../lab_config/intelc3850-2/lan_nic.json -n intelc3850-2 | ||
840 | 2019-03-07 18:03:29,365 - DEBUG: Started logging | ||
841 | 2019-03-07 18:03:29,366 - INFO: Bind NIC | ||
842 | 2019-03-07 18:03:29,406 - DEBUG: Login successful on host 'localhost' | ||
843 | 2019-03-07 18:03:29,406 - DEBUG: Session token is: 8c719cb0-40f2-11e9-a81f525400d08e1d | ||
844 | 2019-03-07 18:03:29,415 - DEBUG: Found device with name 'intelc3850-2' | ||
845 | 2019-03-07 18:03:29,415 - DEBUG: Bind NIC '0000:01:00.1' to dpdk target | ||
846 | 2019-03-07 18:03:30,030 - INFO: Done | ||
847 | 2019-03-07 18:03:30,067 - DEBUG: Logging out and exiting...</programlisting> | ||
848 | </section> | ||
849 | </section> | ||
850 | |||
851 | <section id="unbind_ucpe_device"> | ||
852 | <title>Unbind a uCPE Device</title> | ||
853 | |||
854 | <para>Unbinds a physical network interface from a DPDK or SR-IOV | ||
855 | target.</para> | ||
856 | |||
857 | <section id="script_opts_unbind"> | ||
858 | <title>Script Options</title> | ||
859 | |||
860 | <programlisting>$ python unbindNetworkInterface.py -h | ||
861 | Usage: unbindNetworkInterface.py [options] | ||
862 | |||
863 | Unbinds a physical network interface from a DPDK or SR-IOV target. | ||
864 | |||
865 | Options: | ||
866 | --version show program's version number and exit | ||
867 | -h, --help show this help message and exit | ||
868 | -u USERNAME, --username=USERNAME | ||
869 | Enea uCPE Manager login username | ||
870 | -p PASSWORD, --password=PASSWORD | ||
871 | Enea uCPE Manager login password | ||
872 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
873 | -f NICFILE, --file=NICFILE | ||
874 | File containing network interface Information in JSON | ||
875 | format | ||
876 | -n DEVICENAME, --device-name=DEVICENAME | ||
877 | Name of the device | ||
878 | |||
879 | Mandatory options: | ||
880 | -H/--host, -f/--file, -n/--device-name</programlisting> | ||
881 | </section> | ||
882 | |||
883 | <section id="json_unbind"> | ||
884 | <title>Configuring the JSON File</title> | ||
885 | |||
886 | <para>The unbind network interface suite JSON configuration file | ||
887 | should contain a list of dictionaries, each dictionary indicating the | ||
888 | test case name and the test case arguments passed to the | ||
889 | unbindNetworkInterface Python module.</para> | ||
890 | |||
891 | <para><emphasis role="bold">Sample unit-test JSON file | ||
892 | format:</emphasis><programlisting>[ | ||
893 | { | ||
894 | "name": "Unbind lan NIC from DPDK target", | ||
895 | "args": "-f ../../lab_config/intelc3850-2/lan_nic.json" | ||
896 | }, | ||
897 | { | ||
898 | "name": "Unbind wan NIC from DPDK target", | ||
899 | "args": "-f ../../lab_config/intelc3850-2/wan_nic.json" | ||
900 | } | ||
901 | ]</programlisting></para> | ||
902 | |||
903 | <para><emphasis role="bold">Sample lan_nic.json configuration | ||
904 | file:</emphasis></para> | ||
905 | |||
906 | <programlisting>{ | ||
907 | "name": "0000:01:00.1", | ||
908 | "type": "dpdk" | ||
909 | }</programlisting> | ||
910 | |||
911 | <para><emphasis role="bold">Sample wan_nic.json configuration | ||
912 | file:</emphasis></para> | ||
913 | |||
914 | <programlisting>{ | ||
915 | "name": "0000:03:00.2", | ||
916 | "type": "dpdk", | ||
917 | } | ||
918 | </programlisting> | ||
919 | </section> | ||
920 | |||
921 | <section id="pymod_unbind"> | ||
922 | <title>Running the Python Module</title> | ||
923 | |||
924 | <para>The unbindNetworkInterface Python module can be executed | ||
925 | individually by running the following command line:</para> | ||
926 | |||
927 | <programlisting>$ python unbindNetworkInterface.py -u admin -p admin -H localhost -f | ||
928 | ../../lab_config/intelc3850-2/lan_nic.json -n intelc3850-2 | ||
929 | 2019-03-07 17:33:54,377 - DEBUG: Started logging | ||
930 | 2019-03-07 17:33:54,378 - INFO: Unbind NIC | ||
931 | 2019-03-07 17:33:54,431 - DEBUG: Login successful on host 'localhost' | ||
932 | 2019-03-07 17:33:54,432 - DEBUG: Session token is: 6a77a1d1-40ee-11e9-a81f525400d08e1d | ||
933 | 2019-03-07 17:33:54,467 - DEBUG: Found device with name 'intelc3850-2' | ||
934 | 2019-03-07 17:33:54,468 - DEBUG: Unbind NIC '0000:01:00.1' from dpdk target | ||
935 | 2019-03-07 17:33:55,616 - INFO: Done | ||
936 | 2019-03-07 17:33:55,659 - DEBUG: Logging out and exiting...</programlisting> | ||
937 | </section> | ||
938 | </section> | ||
939 | |||
940 | <section id="create_ovs_net_bridge"> | ||
941 | <title>Create an OVS Network Bridge</title> | ||
942 | |||
943 | <para>Create an OVS Bridge on a device.</para> | ||
944 | |||
945 | <section id="script_opts_creovs"> | ||
946 | <title>Script Options</title> | ||
947 | |||
948 | <programlisting>$ python newNetworkBridge.py -h | ||
949 | Usage: newNetworkBridge.py [options] | ||
950 | |||
951 | Create an OVS Bridge on a device. | ||
952 | |||
953 | Options: | ||
954 | --version show program's version number and exit | ||
955 | -h, --help show this help message and exit | ||
956 | -u USERNAME, --username=USERNAME | ||
957 | Enea uCPE Manager login username | ||
958 | -p PASSWORD, --password=PASSWORD | ||
959 | Enea uCPE Manager login password | ||
960 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
961 | -f OVSFILE, --file=OVSFILE | ||
962 | File containing OVS bridge Information in JSON format | ||
963 | -n DEVICENAME, --device-name=DEVICENAME | ||
964 | Name of the device | ||
965 | |||
966 | Mandatory options: | ||
967 | -H/--host, -f/--file, -n/--device-name</programlisting> | ||
968 | </section> | ||
969 | |||
970 | <section id="json_creovs"> | ||
971 | <title>Configuring the JSON File</title> | ||
972 | |||
973 | <para>The new network bridge suite JSON configuration file should | ||
974 | contain a list of dictionaries, each dictionary indicating the test | ||
975 | case name and the test case arguments passed to the newNetworkBridge | ||
976 | Python module.</para> | ||
977 | |||
978 | <para><emphasis role="bold">Sample unit-test JSON file | ||
979 | format:</emphasis></para> | ||
980 | |||
981 | <programlisting>[ | ||
982 | { | ||
983 | "name": "Creating network bridge LAN ", | ||
984 | "args": "-f ../../lab_config/intelc3850-2/lan_br.json" | ||
985 | }, | ||
986 | { | ||
987 | "name": "Creating network bridge WAN ", | ||
988 | "args": "-f ../../lab_config/intelc3850-2/wan_br.json" | ||
989 | } | ||
990 | ]</programlisting> | ||
991 | |||
992 | <para><emphasis role="bold">Sample lan_br.json configuration | ||
993 | file:</emphasis></para> | ||
994 | |||
995 | <programlisting>{ | ||
996 | "name": "lan_br", | ||
997 | "interfaces": ["0000:01:00.1"] | ||
998 | }</programlisting> | ||
999 | |||
1000 | <para><emphasis role="bold">Sample wan_br.json configuration | ||
1001 | file:</emphasis></para> | ||
1002 | |||
1003 | <programlisting>{ | ||
1004 | "name": "wan_br", | ||
1005 | "interfaces": ["0000:03:00.2"] | ||
1006 | }</programlisting> | ||
1007 | </section> | ||
1008 | |||
1009 | <section id="pymod_creovs"> | ||
1010 | <title>Running the Python Module</title> | ||
1011 | |||
1012 | <para>The newNetworkBridge Python module can be executed individually | ||
1013 | by running the following command line:</para> | ||
1014 | |||
1015 | <programlisting>$ python newNetworkBridge.py -u admin -p admin -H localhost -f | ||
1016 | ../../lab_config/intelc3850-2/lan_br.json -n intelc3850-2 | ||
1017 | 2019-03-07 18:03:30,767 - DEBUG: Started logging | ||
1018 | 2019-03-07 18:03:30,768 - INFO: New OVS network bridge | ||
1019 | 2019-03-07 18:03:30,801 - DEBUG: Login successful on host 'localhost' | ||
1020 | 2019-03-07 18:03:30,801 - DEBUG: Session token is: 8d454061-40f2-11e9-a81f525400d08e1d | ||
1021 | 2019-03-07 18:03:30,811 - DEBUG: Found device with name 'intelc3850-2' | ||
1022 | 2019-03-07 18:03:30,812 - DEBUG: Create new OVS network bridge 'lan_br' | ||
1023 | 2019-03-07 18:03:37,358 - INFO: Done | ||
1024 | 2019-03-07 18:03:37,402 - DEBUG: Logging out and exiting...</programlisting> | ||
1025 | </section> | ||
1026 | </section> | ||
1027 | |||
1028 | <section id="delete_ovs_net_bridge"> | ||
1029 | <title>Delete an OVS Network Bridge</title> | ||
1030 | |||
1031 | <para>Delete an OVS Bridge from a device.</para> | ||
1032 | |||
1033 | <section id="script_opts_delovs"> | ||
1034 | <title>Script Options</title> | ||
1035 | |||
1036 | <programlisting>$ python delNetworkBridge.py -h | ||
1037 | Usage: delNetworkBridge.py [options] | ||
1038 | |||
1039 | Delete an OVS Bridge from a device. | ||
1040 | |||
1041 | Options: | ||
1042 | --version show program's version number and exit | ||
1043 | -h, --help show this help message and exit | ||
1044 | -u USERNAME, --username=USERNAME | ||
1045 | Enea uCPE Manager login username | ||
1046 | -p PASSWORD, --password=PASSWORD | ||
1047 | Enea uCPE Manager login password | ||
1048 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1049 | -f OVSFILE, --file=OVSFILE | ||
1050 | File containing OVS bridge Information in JSON format | ||
1051 | -n DEVICENAME, --device-name=DEVICENAME | ||
1052 | Name of the device | ||
1053 | |||
1054 | Mandatory options: | ||
1055 | -H/--host, -f/--file, -n/--device-name</programlisting> | ||
1056 | </section> | ||
1057 | |||
1058 | <section id="json_delovs"> | ||
1059 | <title>Configuring the JSON File</title> | ||
1060 | |||
1061 | <para>The delete network bridge suite JSON configuration file should | ||
1062 | contain a list of dictionaries, each dictionary indicating the test | ||
1063 | case name and the test case arguments passed to the delNetworkBridge | ||
1064 | Python module.</para> | ||
1065 | |||
1066 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1067 | format:</emphasis></para> | ||
1068 | |||
1069 | <programlisting>[ | ||
1070 | { | ||
1071 | "name": "Deleting network bridge LAN ", | ||
1072 | "args": "-f ../../lab_config/intelc3850-2/lan_br.json" | ||
1073 | }, | ||
1074 | { | ||
1075 | "name": "Deleting network bridge WAN ", | ||
1076 | "args": "-f ../../lab_config/intelc3850-2/wan_br.json" | ||
1077 | } | ||
1078 | ]</programlisting> | ||
1079 | |||
1080 | <para><emphasis role="bold">Sample lan_br.json configuration | ||
1081 | file:</emphasis></para> | ||
1082 | |||
1083 | <programlisting>{ | ||
1084 | "name" : "lan_br" | ||
1085 | }</programlisting> | ||
1086 | |||
1087 | <para><emphasis role="bold">Sample wan_br.json configuration | ||
1088 | file:</emphasis></para> | ||
1089 | |||
1090 | <programlisting>{ | ||
1091 | "name" : "wan_br" | ||
1092 | }</programlisting> | ||
1093 | </section> | ||
1094 | |||
1095 | <section id="pymod_delovs"> | ||
1096 | <title>Running the Python Module</title> | ||
1097 | |||
1098 | <para>The delNetworkBridge Python module can be executed individually | ||
1099 | by running the following command line:</para> | ||
1100 | |||
1101 | <programlisting>$ python delNetworkBridge.py -u admin -p admin -H localhost -f | ||
1102 | ../../lab_config/intelc3850-2/lan_br.json -n intelc3850-2 | ||
1103 | 2019-03-07 17:33:51,712 - DEBUG: Started logging | ||
1104 | 2019-03-07 17:33:51,713 - INFO: Delete OVS network bridge | ||
1105 | 2019-03-07 17:33:51,751 - DEBUG: Login successful on host 'localhost' | ||
1106 | 2019-03-07 17:33:51,752 - DEBUG: Session token is: 68e08711-40ee-11e9-a81f525400d08e1d | ||
1107 | 2019-03-07 17:33:51,768 - DEBUG: Found device with name 'intelc3850-2' | ||
1108 | 2019-03-07 17:33:51,768 - DEBUG: Delete OVS network bridge 'lan_br' | ||
1109 | 2019-03-07 17:33:52,839 - INFO: Done | ||
1110 | 2019-03-07 17:33:52,872 - DEBUG: Logging out and exiting...</programlisting> | ||
1111 | </section> | ||
1112 | </section> | ||
1113 | |||
1114 | <section id="onboard_vnf_bundle"> | ||
1115 | <title>Onboard a VNF Bundle</title> | ||
1116 | |||
1117 | <para>Onboard a VNF to Enea uCPE Manager.</para> | ||
1118 | |||
1119 | <section id="script_opts_onbvnf"> | ||
1120 | <title>Script Options</title> | ||
1121 | |||
1122 | <programlisting>$ python onboardVNF.py -h | ||
1123 | Usage: onboardVNF.py [options] | ||
1124 | |||
1125 | Onboard a VNF to Enea uCPE Manager. | ||
1126 | |||
1127 | Options: | ||
1128 | --version show program's version number and exit | ||
1129 | -h, --help show this help message and exit | ||
1130 | -u USERNAME, --username=USERNAME | ||
1131 | Enea uCPE Manager login username | ||
1132 | -p PASSWORD, --password=PASSWORD | ||
1133 | Enea uCPE Manager login password | ||
1134 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1135 | -f FTPUSERNAME, --ftpUsername=FTPUSERNAME | ||
1136 | Username for FTP | ||
1137 | -w FTPPASSWORD, --ftpPassword=FTPPASSWORD | ||
1138 | FTP password | ||
1139 | -P FTPPORT, --ftpPort=FTPPORT | ||
1140 | FTP port | ||
1141 | -b VNFBUNDLE, --bundle=VNFBUNDLE | ||
1142 | File name of VNF bundle in ZIP format | ||
1143 | |||
1144 | Mandatory options: | ||
1145 | -H/--host, -b/--bundle</programlisting> | ||
1146 | </section> | ||
1147 | |||
1148 | <section id="json_onbvnf"> | ||
1149 | <title>Configuring the JSON File</title> | ||
1150 | |||
1151 | <para>The onboard VNF suite JSON configuration file should contain a | ||
1152 | list of dictionaries, each dictionary indicating the test case name | ||
1153 | and the test case arguments passed to the onboardVNF Python | ||
1154 | module.</para> | ||
1155 | |||
1156 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1157 | format:</emphasis><programlisting>[ | ||
1158 | { | ||
1159 | "name": "Onboarding Fortigate VNF ", | ||
1160 | "args": "-b ../../vnf_images/Fortigate.zip" | ||
1161 | } | ||
1162 | ]</programlisting></para> | ||
1163 | </section> | ||
1164 | |||
1165 | <section id="pymod_onbvnf"> | ||
1166 | <title>Running the Python Module</title> | ||
1167 | |||
1168 | <para>The onboardVNF Python module can be executed individually by | ||
1169 | running the following command line:</para> | ||
1170 | |||
1171 | <programlisting>$ python onboardVNF.py -u admin -p admin -f ftp -w ftp -H localhost -b | ||
1172 | ../../vnf_images/Fortigate.zip | ||
1173 | 2019-02-25 16:00:53,890 - DEBUG: Started logging | ||
1174 | 2019-02-25 16:00:53,890 - INFO: Onboard VNF | ||
1175 | 2019-02-25 16:00:53,985 - DEBUG: Login successful on host 'localhost' | ||
1176 | 2019-02-25 16:00:53,985 - DEBUG: Session token is: c421cd03-3905-11e9-a81f525400d08e1d | ||
1177 | 2019-02-25 16:00:53,994 - DEBUG: FTP file '../../vnf_images/Fortigate.zip' on host | ||
1178 | 'localhost', port '2021' | ||
1179 | 2019-02-25 16:00:54,229 - DEBUG: Onboard VNF: Fortigate | ||
1180 | 2019-02-25 16:00:56,836 - INFO: Done | ||
1181 | 2019-02-25 16:00:56,861 - DEBUG: Logging out and exiting...</programlisting> | ||
1182 | </section> | ||
1183 | </section> | ||
1184 | |||
1185 | <section id="onboard_vnf_image"> | ||
1186 | <title>Onboard a VNF Image</title> | ||
1187 | |||
1188 | <para>Onboard a VNF image in Enea uCPE Manager based upon its raw | ||
1189 | constituents.</para> | ||
1190 | |||
1191 | <section id="script_opts_image"> | ||
1192 | <title>Script Options</title> | ||
1193 | |||
1194 | <programlisting>$ python onboardVNFRaw.py -h | ||
1195 | Usage: onboardVNFRaw.py [options] | ||
1196 | |||
1197 | Onboard a VNF in Enea uCPE Manager based upon its raw constituents. | ||
1198 | |||
1199 | Options: | ||
1200 | --version show program's version number and exit | ||
1201 | -h, --help show this help message and exit | ||
1202 | -u USERNAME, --username=USERNAME | ||
1203 | Enea uCPE Manager login username | ||
1204 | -p PASSWORD, --password=PASSWORD | ||
1205 | Enea uCPE Manager login password | ||
1206 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1207 | -f FTPUSERNAME, --ftpUsername=FTPUSERNAME | ||
1208 | Username for FTP | ||
1209 | -w FTPPASSWORD, --ftpPassword=FTPPASSWORD | ||
1210 | FTP password | ||
1211 | -P FTPPORT, --ftpPort=FTPPORT | ||
1212 | FTP port | ||
1213 | -i IMAGEPATH, --imagePath=IMAGEPATH | ||
1214 | VNF bundle image path | ||
1215 | -b BUNDLEINFO, --bundleInfo=BUNDLEINFO | ||
1216 | File name of VNF bundle information in JSON format | ||
1217 | |||
1218 | Mandatory options: | ||
1219 | -H/--host, -b/--bundleInfo, -i/--imagePath</programlisting> | ||
1220 | </section> | ||
1221 | |||
1222 | <section id="json_image"> | ||
1223 | <title>Configuring the JSON File</title> | ||
1224 | |||
1225 | <para>The onboard VNF image suite JSON configuration file should | ||
1226 | contain a list of dictionaries, each dictionary indicating the test | ||
1227 | case name and the test case arguments passed to the onboardVNFRaw | ||
1228 | Python module.</para> | ||
1229 | |||
1230 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1231 | format:</emphasis></para> | ||
1232 | |||
1233 | <programlisting>[ | ||
1234 | { | ||
1235 | "name": "Onboarding Fortigate VNF (wizard API)", | ||
1236 | "args": "-b ../../vnf_config/fortigateImage/fortigateImage.json -i | ||
1237 | ../../vnf_images/fortios.qcow2" | ||
1238 | } | ||
1239 | ]</programlisting> | ||
1240 | |||
1241 | <para><emphasis role="bold">Sample fortigateImage.json configuration | ||
1242 | file:</emphasis><programlisting>{ | ||
1243 | "name" : "fortigateImage", | ||
1244 | "version" : "1.0", | ||
1245 | "description" : "Fortigate VNF Image", | ||
1246 | "provider" : "Fortinet, Inc", | ||
1247 | "numVcpus" : 1, | ||
1248 | "imageFormat" : "QCOW2", | ||
1249 | "memoryInMb" : 1024, | ||
1250 | "storageInGb" : 20, | ||
1251 | "image" : "fortios.qcow2", | ||
1252 | "interfaces" : [ | ||
1253 | { | ||
1254 | "name" : "external", | ||
1255 | "type" : "PhysicalPort", | ||
1256 | "description" : "External interface" | ||
1257 | }, | ||
1258 | { | ||
1259 | "name" : "in", | ||
1260 | "type" : "PhysicalPort", | ||
1261 | "description" : "Incoming interface" | ||
1262 | }, | ||
1263 | { | ||
1264 | "name" : "out", | ||
1265 | "type" : "PhysicalPort", | ||
1266 | "description" : "Outgoing interface" | ||
1267 | } | ||
1268 | ], | ||
1269 | "cloudInitDataSource" : "ConfigDrive", | ||
1270 | "cloudInitDriveType" : "cdrom", | ||
1271 | "cloudInitContentParams" : [ | ||
1272 | { | ||
1273 | "path" : "License", | ||
1274 | "description" : "Operational license" | ||
1275 | } | ||
1276 | ] | ||
1277 | }</programlisting></para> | ||
1278 | </section> | ||
1279 | |||
1280 | <section id="pymod_image"> | ||
1281 | <title>Running the Python Module</title> | ||
1282 | |||
1283 | <para>The onboardVNFRaw Python module can be executed individually by | ||
1284 | running the following command line:</para> | ||
1285 | |||
1286 | <programlisting>$ python onboardVNFRaw.py -u admin -p admin -f ftp -w ftp -H localhost -b b | ||
1287 | ../../vnf_config/fortigateImage/fortigateImage.json -i | ||
1288 | ../../vnf_images/fortios.qcow2 | ||
1289 | 2019-03-07 18:03:37,791 - DEBUG: Started logging | ||
1290 | 2019-03-07 18:03:37,792 - INFO: Onboard wizard | ||
1291 | 2019-03-07 18:03:37,859 - DEBUG: Login successful on host 'localhost' | ||
1292 | 2019-03-07 18:03:37,859 - DEBUG: Session token is: 91770330-40f2-11e9-a81f525400d08e1d | ||
1293 | 2019-03-07 18:03:37,860 - DEBUG: FTP file '../../vnf_images/fortios.qcow2' on host | ||
1294 | 'localhost', port '2021' | ||
1295 | 2019-03-07 18:03:38,027 - DEBUG: Onboard VNF raw: fortios.qcow2 | ||
1296 | 2019-03-07 18:03:41,701 - INFO: Done | ||
1297 | 2019-03-07 18:03:41,748 - DEBUG: Logging out and exiting...</programlisting> | ||
1298 | </section> | ||
1299 | </section> | ||
1300 | |||
1301 | <section id="offboard_vnf"> | ||
1302 | <title>Offboard a VNF</title> | ||
1303 | |||
1304 | <para>Offboard a VNF from Enea uCPE Manager.</para> | ||
1305 | |||
1306 | <section id="script_opts_offimage"> | ||
1307 | <title>Script Options</title> | ||
1308 | |||
1309 | <programlisting>$ python offboardVNF.py -h | ||
1310 | Usage: offboardVNF.py [options] | ||
1311 | |||
1312 | Offboard a VNF from Enea uCPE Manager. | ||
1313 | |||
1314 | Options: | ||
1315 | --version show program's version number and exit | ||
1316 | -h, --help show this help message and exit | ||
1317 | -u USERNAME, --username=USERNAME | ||
1318 | Enea uCPE Manager login username | ||
1319 | -p PASSWORD, --password=PASSWORD | ||
1320 | Enea uCPE Manager login password | ||
1321 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1322 | -n VNFDNAME, --vnfdName=VNFDNAME | ||
1323 | Name of VNF descriptor to offboard | ||
1324 | |||
1325 | Mandatory options: | ||
1326 | -H/--host, -n/--vnfdName</programlisting> | ||
1327 | </section> | ||
1328 | |||
1329 | <section id="json_offimage"> | ||
1330 | <title>Configuring the JSON File</title> | ||
1331 | |||
1332 | <para>The offboard VNF suite JSON configuration file should contain a | ||
1333 | list of dictionaries, each dictionary indicating the test case name | ||
1334 | and the test case arguments passed to the offboardVNF Python | ||
1335 | module.</para> | ||
1336 | |||
1337 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1338 | format:</emphasis></para> | ||
1339 | |||
1340 | <programlisting>[ | ||
1341 | { | ||
1342 | "name": "Offboarding Fortigate VNF ", | ||
1343 | "args": "-n fortigateImage" | ||
1344 | } | ||
1345 | ]</programlisting> | ||
1346 | </section> | ||
1347 | |||
1348 | <section id="pymod_offimage"> | ||
1349 | <title>Running the Python Module</title> | ||
1350 | |||
1351 | <para>The offboardVNF Python module can be executed individually by | ||
1352 | running the following command line:</para> | ||
1353 | |||
1354 | <programlisting>$ python offboardVNF.py -u admin -p admin -H localhost -n fortigateImage | ||
1355 | 2019-03-07 17:33:56,523 - DEBUG: Started logging | ||
1356 | 2019-03-07 17:33:56,524 - INFO: Offboard VNF | ||
1357 | 2019-03-07 17:33:56,557 - DEBUG: Login successful on host 'localhost' | ||
1358 | 2019-03-07 17:33:56,557 - DEBUG: Session token is: 6bbe2b90-40ee-11e9-a81f525400d08e1d | ||
1359 | 2019-03-07 17:33:56,682 - DEBUG: Found VNF descriptor with name 'fortigateImage' | ||
1360 | 2019-03-07 17:33:56,683 - DEBUG: Offboard VNF: fortigateImage | ||
1361 | 2019-03-07 17:33:56,811 - INFO: Done | ||
1362 | 2019-03-07 17:33:56,834 - DEBUG: Logging out and exiting...</programlisting> | ||
1363 | </section> | ||
1364 | </section> | ||
1365 | |||
1366 | <section id="instantiate_vnf"> | ||
1367 | <title>Instantiate a VNF</title> | ||
1368 | |||
1369 | <para>Instantiate a VNF via Enea uCPE Manager.</para> | ||
1370 | |||
1371 | <section id="script_opts_inst"> | ||
1372 | <title>Script Options</title> | ||
1373 | |||
1374 | <programlisting>$ python instantiateVNFI.py -h | ||
1375 | Usage: instantiateVNFI.py [options] | ||
1376 | |||
1377 | Instantiate a VNF via Enea uCPE Manager. | ||
1378 | |||
1379 | Options: | ||
1380 | --version show program's version number and exit | ||
1381 | -h, --help show this help message and exit | ||
1382 | -u USERNAME, --username=USERNAME | ||
1383 | Enea uCPE Manager login username | ||
1384 | -p PASSWORD, --password=PASSWORD | ||
1385 | Enea uCPE Manager login password | ||
1386 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1387 | -t VNFTYPE, --vnfType=VNFTYPE | ||
1388 | VNF Type (Name of VNF descriptor) | ||
1389 | -n VIMDEVICENAME, --device-name=VIMDEVICENAME | ||
1390 | Name of the device | ||
1391 | -f PROPSFILE, --file=PROPSFILE | ||
1392 | File containing VNF instance properties in JSON format | ||
1393 | |||
1394 | Mandatory options: | ||
1395 | -H/--host, -t/--vnfType, -n/--device-name, -f/--file</programlisting> | ||
1396 | </section> | ||
1397 | |||
1398 | <section id="json_inst"> | ||
1399 | <title>Configuring the JSON File</title> | ||
1400 | |||
1401 | <para>The instantiate VNF suite JSON configuration file should contain | ||
1402 | a list of dictionaries, each dictionary indicating the test case name | ||
1403 | and the test case arguments passed to the instantiateVNFI Python | ||
1404 | module.</para> | ||
1405 | |||
1406 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1407 | format:</emphasis></para> | ||
1408 | |||
1409 | <programlisting>[ | ||
1410 | { | ||
1411 | "name": "Instantiate Fortigate VNF ", | ||
1412 | "args": "-t fortigateImage -f | ||
1413 | ../../vnf_config/fortigateImage/fortigateFWInstance.json" | ||
1414 | } | ||
1415 | ]</programlisting> | ||
1416 | |||
1417 | <para>The VNF instance JSON configuration file is specific to each | ||
1418 | VNF.</para> | ||
1419 | </section> | ||
1420 | |||
1421 | <section id="pymod_inst"> | ||
1422 | <title>Running the Python Module</title> | ||
1423 | |||
1424 | <para>The instantiateVNFI Python module can be executed individually | ||
1425 | by running the following command line:</para> | ||
1426 | |||
1427 | <programlisting>$ python instantiateVNFI.py -u admin -p admin -H localhost -n intelc3850-2 -t | ||
1428 | fortigateImage -f ../../vnf_config/fortigateImage/fortigateFWInstance.json | ||
1429 | 2019-03-07 18:03:41,777 - DEBUG: Started logging | ||
1430 | 2019-03-07 18:03:41,778 - INFO: Instantiate VNF | ||
1431 | 2019-03-07 18:03:41,813 - DEBUG: Login successful on host 'localhost' | ||
1432 | 2019-03-07 18:03:41,815 - DEBUG: Session token is: 93d69e10-40f2-11e9-a81f525400d08e1d | ||
1433 | 2019-03-07 18:03:41,834 - DEBUG: Found device with name 'intelc3850-2' | ||
1434 | 2019-03-07 18:03:41,878 - DEBUG: Found VNF descriptor with name 'fortigateImage' | ||
1435 | 2019-03-07 18:03:41,888 - DEBUG: Encrypt string content: | ||
1436 | cloudInit("vnf_config/fortigateImage/fortigateFW.conf") | ||
1437 | 2019-03-07 18:03:41,889 - DEBUG: Encrypt string content: | ||
1438 | License("vnf_config/fortigateImage/fortigateLicense.lic") | ||
1439 | 2019-03-07 18:03:41,889 - DEBUG: Instantiate fortigateImage VNF on 'intelc3850-2' | ||
1440 | 2019-03-07 18:03:49,887 - INFO: Done | ||
1441 | 2019-03-07 18:03:49,921 - DEBUG: Logging out and exiting...</programlisting> | ||
1442 | </section> | ||
1443 | </section> | ||
1444 | |||
1445 | <section id="control_vnf_inst"> | ||
1446 | <title>Control a VNF Instance</title> | ||
1447 | |||
1448 | <para>Controls a VNF instance from Enea uCPE Manager.</para> | ||
1449 | |||
1450 | <section id="script_opts_control"> | ||
1451 | <title>Script Options</title> | ||
1452 | |||
1453 | <programlisting>$ python controlVNFI.py -h | ||
1454 | Usage: controlVNFI.py [options] | ||
1455 | |||
1456 | Controls a VNF instance from Enea uCPE Manager. | ||
1457 | |||
1458 | Options: | ||
1459 | --version show program's version number and exit | ||
1460 | -h, --help show this help message and exit | ||
1461 | -u USERNAME, --username=USERNAME | ||
1462 | Enea uCPE Manager login username | ||
1463 | -p PASSWORD, --password=PASSWORD | ||
1464 | Enea uCPE Manager login password | ||
1465 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1466 | -i VNFINSTANCENAME, --vnfInstanceName=VNFINSTANCENAME | ||
1467 | Name of VNF instance | ||
1468 | -n VIMDEVICENAME, --device-name=VIMDEVICENAME | ||
1469 | Name of the device | ||
1470 | -c COMMAND, --command=COMMAND | ||
1471 | Control command (stop, start, pause or resume) | ||
1472 | |||
1473 | Mandatory options: | ||
1474 | -H/--host, -i/--vnfInstanceName, -n/--device-name, -c/--command</programlisting> | ||
1475 | </section> | ||
1476 | |||
1477 | <section id="json_control"> | ||
1478 | <title>Configuring the JSON File</title> | ||
1479 | |||
1480 | <para>The control VNF instance suite JSON configuration file should | ||
1481 | contain a list of dictionaries, each dictionary indicating the test | ||
1482 | case name and the test case arguments passed to the controlVNFI Python | ||
1483 | module.</para> | ||
1484 | |||
1485 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1486 | format:</emphasis></para> | ||
1487 | |||
1488 | <programlisting>[ | ||
1489 | { | ||
1490 | "name": "Pause Fortigate VNF instance", | ||
1491 | "args": "-i fortigateFWInstance -c pause" | ||
1492 | }, | ||
1493 | { | ||
1494 | "name": "Resume Fortigate VNF instance", | ||
1495 | "args": "-i fortigateFWInstance -c resume" | ||
1496 | }, | ||
1497 | { | ||
1498 | "name": "Stop Fortigate VNF instance ", | ||
1499 | "args": "-i fortigateFWInstance -c stop" | ||
1500 | }, | ||
1501 | { | ||
1502 | "name": "Start Fortigate VNF instance", | ||
1503 | "args": "-i fortigateFWInstance -c start" | ||
1504 | } | ||
1505 | ]</programlisting> | ||
1506 | </section> | ||
1507 | |||
1508 | <section id="pymod_control"> | ||
1509 | <title>Running the Python Module</title> | ||
1510 | |||
1511 | <para>The controlVNFI Python module can be executed individually by | ||
1512 | running the following command line:</para> | ||
1513 | |||
1514 | <programlisting>$ python controlVNFI.py -u admin -p admin -H localhost -n intelc3850-2 -i | ||
1515 | fortigateFWInstance -c stop | ||
1516 | 2019-03-07 18:03:51,991 - DEBUG: Started logging | ||
1517 | 2019-03-07 18:03:51,992 - INFO: Control VNF | ||
1518 | 2019-03-07 18:03:52,031 - DEBUG: Login successful on host 'localhost' | ||
1519 | 2019-03-07 18:03:52,031 - DEBUG: Session token is: 99ed9ba3-40f2-11e9-a81f525400d08e1d | ||
1520 | 2019-03-07 18:03:52,046 - DEBUG: Found device with name 'intelc3850-2' | ||
1521 | 2019-03-07 18:03:52,073 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
1522 | 2019-03-07 18:03:52,073 - DEBUG: Control VNF instance 'intelc3850-2', command: stop | ||
1523 | 2019-03-07 18:03:53,011 - INFO: Done | ||
1524 | 2019-03-07 18:03:53,047 - DEBUG: Logging out and exiting...</programlisting> | ||
1525 | </section> | ||
1526 | </section> | ||
1527 | |||
1528 | <section id="destroy_vnf_inst"> | ||
1529 | <title>Destroy a VNF Instance</title> | ||
1530 | |||
1531 | <para>Destroys a VNF instance from Enea uCPE Manager.</para> | ||
1532 | |||
1533 | <section id="script_opts_destroy"> | ||
1534 | <title>Script Options</title> | ||
1535 | |||
1536 | <programlisting>$ python destroyVNFI.py -h | ||
1537 | Usage: destroyVNFI.py [options] | ||
1538 | |||
1539 | Destroys a VNF instance from Enea uCPE Manager. | ||
1540 | |||
1541 | Options: | ||
1542 | --version show program's version number and exit | ||
1543 | -h, --help show this help message and exit | ||
1544 | -u USERNAME, --username=USERNAME | ||
1545 | Enea uCPE Manager login username | ||
1546 | -p PASSWORD, --password=PASSWORD | ||
1547 | Enea uCPE Manager login password | ||
1548 | -H HOST, --host=HOST Enea uCPE Manager host name or IP address | ||
1549 | -i VNFINSTANCENAME, --vnfInstanceName=VNFINSTANCENAME | ||
1550 | Name of VNF instance | ||
1551 | -n VIMDEVICENAME, --device-name=VIMDEVICENAME | ||
1552 | Name of the device | ||
1553 | |||
1554 | Mandatory options: | ||
1555 | -H/--host, -i/--vnfInstanceName, -n/--device-name</programlisting> | ||
1556 | </section> | ||
1557 | |||
1558 | <section id="json_destroy"> | ||
1559 | <title>Configuring the JSON File</title> | ||
1560 | |||
1561 | <para>The destroy VNF instance suite JSON configuration file should | ||
1562 | contain a list of dictionaries, each dictionary indicating the test | ||
1563 | case name and the test case arguments passed to the destroyVNFI Python | ||
1564 | module.</para> | ||
1565 | |||
1566 | <para><emphasis role="bold">Sample unit-test JSON file | ||
1567 | format:</emphasis><programlisting>[ | ||
1568 | { | ||
1569 | "name": "Destroying Fortigate VNF ", | ||
1570 | "args": "-i fortigateFWInstance" | ||
1571 | } | ||
1572 | ]</programlisting></para> | ||
1573 | </section> | ||
1574 | |||
1575 | <section id="pymod_destory"> | ||
1576 | <title>Running the Python Module</title> | ||
1577 | |||
1578 | <para>The destroyVNFI Python module can be executed individually by | ||
1579 | running the following command line:</para> | ||
1580 | |||
1581 | <programlisting>$ python destroyVNFI.py -u admin -p admin -H localhost -n intelc3850-2 -i | ||
1582 | fortigateFWInstance | ||
1583 | 2019-03-07 17:33:51,025 - DEBUG: Started logging | ||
1584 | 2019-03-07 17:33:51,026 - INFO: Destroy VNF | ||
1585 | 2019-03-07 17:33:51,119 - DEBUG: Login successful on host 'localhost' | ||
1586 | 2019-03-07 17:33:51,119 - DEBUG: Session token is: 68803ea5-40ee-11e9-a81f525400d08e1d | ||
1587 | 2019-03-07 17:33:51,128 - DEBUG: Found device with name 'intelc3850-2' | ||
1588 | 2019-03-07 17:33:51,148 - DEBUG: Found VNF instance with name 'fortigateFWInstance' | ||
1589 | 2019-03-07 17:33:51,149 - DEBUG: Destroy VNF: fortigateFWInstance | ||
1590 | 2019-03-07 17:33:51,655 - INFO: Done | ||
1591 | 2019-03-07 17:33:51,712 - DEBUG: Logging out and exiting...</programlisting> | ||
1592 | </section> | ||
1593 | </section> | ||
93 | </section> | 1594 | </section> |
94 | 1595 | ||
95 | <section id="test_harness"> | 1596 | <section id="test_harness"> |
96 | <title>Test Harness</title> | 1597 | <title>Test Harness</title> |
97 | 1598 | ||
98 | <para></para> | 1599 | <para>All Test Harness sources are under <AF-TH-install-dir> |
99 | 1600 | directory, except under the automation_framework sub-directory. See | |
100 | <section id="test_suites"> | 1601 | chapter 4 for a complete tree listing.</para> |
101 | <title>Extending functionality - Test Suites</title> | ||
102 | 1602 | ||
103 | <para></para> | 1603 | <para>The Ansible based Test Harness represents an example of how to |
104 | </section> | 1604 | structure all the files needed for creating automated test cases using the |
105 | 1605 | AF and provides a way to implement them. The ansible.cfg file contains an | |
1606 | example of the Ansible default configuration. It offers the possibility to | ||
1607 | display the Ansible console output in different ways, by setting the | ||
1608 | stdout_callback to selective or debug. Default is set to selective to | ||
1609 | print only certain tasks. It is recommended to switch on debug when a test | ||
1610 | fails. By setting any_errors_fatal to True, task failures will be | ||
1611 | considered fatal errors (the play execution will stop). The hosts file is | ||
1612 | the Ansible inventory file.</para> | ||
1613 | |||
1614 | <para>All the Playbooks that are executing AF python modules are run on | ||
1615 | localhost. New entries have to be created for direct communication over | ||
1616 | SSH with the boards, like [fortigateFW] example. The setup_env.sh script | ||
1617 | sets up the "testHarness" test environment by creating testHarness-venv | ||
1618 | python virtualenv, installing requests needed by Automation Framework | ||
1619 | python modules and installing Ansible. The playbooks directory contains | ||
1620 | all the implemented Ansible Playbooks. For details please refer to chapter | ||
1621 | "Sample Test Cases" from the Enea NFV Access System Test Specification | ||
1622 | document.</para> | ||
1623 | |||
1624 | <para>The uCPEM_config directory stores JSON configuration files needed | ||
1625 | for the setup of the uCPE Manager used by TH. One configuration file is | ||
1626 | needed per uCPE Manager installation to be used in the TH. The vnf_image | ||
1627 | directory stores the VNF Images needed by the Ansible Playbooks (i.e. the | ||
1628 | sample test cases).</para> | ||
1629 | |||
1630 | <para>The lab_config directory stores the JSON configuration files related | ||
1631 | to a device (devices, NICs and bridges). Each subfolder should be named | ||
1632 | exactly like the device name and should contain all the related | ||
1633 | configuration files needed for the test cases to be run on it.</para> | ||
1634 | |||
1635 | <para>The vnf_config directory stores the configuration files related to a | ||
1636 | VNF Descriptor. Typically these include a VNF Image JSON, VNF Instance | ||
1637 | JSON, VNF license and any other files required by the type of the VNF. | ||
1638 | Each subfolder should be named exactly like the name of the VNF Descriptor | ||
1639 | and should contain all the related configuration files needed for test | ||
1640 | cases to be run using this VNF.</para> | ||
1641 | |||
1642 | <para>The log directory is created when the setup_env.sh is run. When test | ||
1643 | cases are ran, the Ansible and the Python logs are stored in ansible.log | ||
1644 | and debug.log files, respectively.</para> | ||
1645 | |||
1646 | <section id="test_suites"> | ||
1647 | <title>Extending functionality - Test Suites</title> | ||
1648 | |||
1649 | <para>To extend the functionality of the Test Harness it is typically | ||
1650 | needed that the functionlity of the Automation Framework be also | ||
1651 | extended to cover additional uCPE Manager REST Northbound APIs. The | ||
1652 | extension of the Automation Framework will result in new Python modules | ||
1653 | that have to be created.</para> | ||
1654 | |||
1655 | <para>Additional Python modules, that are not related to the | ||
1656 | functionality of the Automation Framework, could be easily integrated | ||
1657 | into Test Harness to aid in the creation of more complex test cases. | ||
1658 | Using the TH one can implement test cases that are run directly on the | ||
1659 | boards with Enea NFV Access, over SSH.</para> | ||
1660 | |||
1661 | <para>For a better understanding of the Test Harness functionality and | ||
1662 | how to extend the test suites, please refer to the chapter "Sample Test | ||
1663 | Cases" from the Enea NFV Access System Test Specification document and | ||
1664 | the TH code source.</para> | ||
1665 | </section> | ||
106 | </section> | 1666 | </section> |
107 | </chapter> \ No newline at end of file | 1667 | </chapter> \ No newline at end of file |
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml index 0f72709..8b98ca2 100644 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml +++ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/components.xml | |||
@@ -2,33 +2,117 @@ | |||
2 | <chapter id="components"> | 2 | <chapter id="components"> |
3 | <title>Components</title> | 3 | <title>Components</title> |
4 | 4 | ||
5 | <para>An overview of the Enea NFV Access solution and the uCPE Manager in | ||
6 | cooperation with the Automation Framework and Test Harness, will be | ||
7 | presented in detail.</para> | ||
8 | |||
9 | <figure> | ||
10 | <title>Component Overview</title> | ||
11 | |||
12 | <mediaobject> | ||
13 | <imageobject> | ||
14 | <imagedata align="center" fileref="images/autofw_testh_overview.png" | ||
15 | scale="40" /> | ||
16 | </imageobject> | ||
17 | </mediaobject> | ||
18 | </figure> | ||
19 | |||
5 | <section id="enfva_solution"> | 20 | <section id="enfva_solution"> |
6 | <title>Enea NFV Access Solution</title> | 21 | <title>Enea NFV Access Solution</title> |
7 | 22 | ||
8 | <para></para> | 23 | <para>The Enea NFV Access Solution is comprised of the Enea NFV Access |
9 | 24 | Runtime Platform and the Enea uCPE Manager.</para> | |
10 | <section id="eucpe_manager"> | 25 | |
11 | <title>Enea uCPE Manager</title> | 26 | <section id="eucpe_manager"> |
27 | <title>Enea uCPE Manager</title> | ||
28 | |||
29 | <para>The Enea uCPE Manager application needs to be installed on a | ||
30 | supported platform. Upon installation, the system will be set up to | ||
31 | manage Enea NFV Access "devices", these are the virtualized CPE devices | ||
32 | used in testing.</para> | ||
33 | |||
34 | <para>For more on Enea uCPE Manager installation instructions, please | ||
35 | refer to chapter "Getting Started with Enea uCPE Manager" from the Enea | ||
36 | NFV Access Getting Started manual.</para> | ||
37 | </section> | ||
38 | |||
39 | <section id="ena_plat"> | ||
40 | <title>Enea NFV Access</title> | ||
41 | |||
42 | <para>One or more NFV Access devices are required as target hosts | ||
43 | running the VNF(s). The NFV Access device is known to the uCPE Manager | ||
44 | as the "VcpeAgent" device module.</para> | ||
45 | |||
46 | <para>Adding a VcpeAgent device can be done via one of two | ||
47 | methods:</para> | ||
12 | 48 | ||
13 | <para></para> | 49 | <itemizedlist> |
14 | </section> | 50 | <listitem> |
15 | 51 | <para>Through the uCPE Manager GUI. Add the device using the | |
16 | <section id="ena_plat"> | 52 | appropriate parameters by launching the UI under Devices -> |
17 | <title>Enea NFV Access</title> | 53 | Manage in the main screen.</para> |
54 | </listitem> | ||
18 | 55 | ||
19 | <para></para> | 56 | <listitem> |
20 | </section> | 57 | <para>REST API. Invoke the uCPE Manager REST API to add a |
58 | device.</para> | ||
59 | </listitem> | ||
60 | </itemizedlist> | ||
61 | |||
62 | <para>For more on Enea NFV Access installation instructions, please | ||
63 | refer to chapter "Getting Started with Enea NFV Access" from the Enea | ||
64 | NFV Access Getting Started manual.</para> | ||
65 | </section> | ||
21 | </section> | 66 | </section> |
22 | 67 | ||
23 | <section id="automation"> | 68 | <section id="automation"> |
24 | <title>Automation Framework</title> | 69 | <title>Automation Framework</title> |
25 | 70 | ||
26 | <para></para> | 71 | <para>Testing can be performed by running the available Python scripts |
72 | against the uCPE Manager REST API (Python samples supplied). This can be | ||
73 | done by using the Python scripts individually or by using the Python | ||
74 | unit-test suite that is able to automatically run test-cases defined for | ||
75 | each available Python script.</para> | ||
76 | |||
77 | <para>In either case, it is desirable to use a third system (instead of | ||
78 | running the tests on the same system as the uCPE Manager) in order to | ||
79 | ensure that uCPE Manager is setup and installed correctly in terms of | ||
80 | allowing external users to access it and use it effectively.</para> | ||
27 | </section> | 81 | </section> |
28 | 82 | ||
29 | <section id="harness"> | 83 | <section id="harness"> |
30 | <title>Test Harness</title> | 84 | <title>Test Harness</title> |
31 | 85 | ||
32 | <para></para> | 86 | <para>The Test Harness (TH) provides a way for driving configuration with |
87 | Ansible Playbooks, by running the python modules from the Automation | ||
88 | Framework (AF) and by direct connection over SSH to the boards that run | ||
89 | the Enea NFV Access solution.</para> | ||
90 | |||
91 | <para>The Test Harness includes an automated test suite that | ||
92 | contains:</para> | ||
93 | |||
94 | <itemizedlist> | ||
95 | <listitem> | ||
96 | <para>VNF, Device and Network Smoke Test Cases. A sample test suite | ||
97 | that acts as basic smoke tests for the Enea NFV Access Solution and | ||
98 | also as a sanity-check test suite for the AF and TH.</para> | ||
99 | </listitem> | ||
100 | |||
101 | <listitem> | ||
102 | <para>VNF Deployment and Lifecycle. A sample test suite that verifies | ||
103 | the instantiation, lifecycle control and destruction of a VNF for the | ||
104 | Enea NFV Access Solution.</para> | ||
105 | </listitem> | ||
106 | |||
107 | <listitem> | ||
108 | <para>Service Creation and Lifecycle: A sample test suite that | ||
109 | contains complex test cases showcasing service creation and lifecycle | ||
110 | management.</para> | ||
111 | </listitem> | ||
112 | </itemizedlist> | ||
113 | |||
114 | <para>For details about the test suites or test cases please refer to the | ||
115 | chapter "Sample Test Cases" from the Enea NFV Access System Test | ||
116 | Specification document.</para> | ||
33 | </section> | 117 | </section> |
34 | </chapter> \ No newline at end of file | 118 | </chapter> \ No newline at end of file |
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/getting_started.xml~ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/getting_started.xml~ deleted file mode 100755 index a52f99b..0000000 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/getting_started.xml~ +++ /dev/null | |||
@@ -1,223 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="ISO-8859-1"?> | ||
2 | <chapter id="getting_started"> | ||
3 | <title>Getting Started with the Automation Framework and Test | ||
4 | Harness</title> | ||
5 | |||
6 | <section id="prerequisites"> | ||
7 | <title>Prerequisites</title> | ||
8 | |||
9 | <para>For installation of the Automation Framework and Test Harness a | ||
10 | CentOS 7 host machine is needed with support for:</para> | ||
11 | |||
12 | <itemizedlist> | ||
13 | <listitem> | ||
14 | <para>Python 2.7</para> | ||
15 | </listitem> | ||
16 | |||
17 | <listitem> | ||
18 | <para>EPEL Repository installed:<programlisting>sudo yum install epel-release</programlisting></para> | ||
19 | </listitem> | ||
20 | |||
21 | <listitem> | ||
22 | <para>PIP package manager installed: <programlisting>sudo yum -y install python-pip</programlisting></para> | ||
23 | </listitem> | ||
24 | |||
25 | <listitem> | ||
26 | <para>Virtualenv tool installed: <programlisting>sudo pip install virtualenv</programlisting></para> | ||
27 | </listitem> | ||
28 | </itemizedlist> | ||
29 | |||
30 | <note> | ||
31 | <para>The Automation Framework and Test Harness installation may be done | ||
32 | on the same machine used for uCPE Manager installation, although this is | ||
33 | not encouraged. For more details see <link linkend="automation">chapter | ||
34 | 3.2</link>.</para> | ||
35 | </note> | ||
36 | </section> | ||
37 | |||
38 | <section id="envrion"> | ||
39 | <title>Environment</title> | ||
40 | |||
41 | <para><figure> | ||
42 | <title>Lab setup overview for Basic Setup</title> | ||
43 | |||
44 | <mediaobject> | ||
45 | <imageobject> | ||
46 | <imagedata align="center" | ||
47 | fileref="images/environment_basicsetup.png" scale="35" /> | ||
48 | </imageobject> | ||
49 | </mediaobject> | ||
50 | </figure>The following enviroment setup is needed for running all the | ||
51 | tests defined in the Enea NFV Access System Test Specification | ||
52 | document:</para> | ||
53 | |||
54 | <para><emphasis role="bold">Lab Network</emphasis><itemizedlist> | ||
55 | <listitem> | ||
56 | <para>DHCP enabled.</para> | ||
57 | </listitem> | ||
58 | |||
59 | <listitem> | ||
60 | <para>Internet Connectivity.</para> | ||
61 | </listitem> | ||
62 | </itemizedlist></para> | ||
63 | |||
64 | <para><emphasis role="bold">uCPE Manager host</emphasis></para> | ||
65 | |||
66 | <itemizedlist> | ||
67 | <listitem> | ||
68 | <para>Running CentOS 7.</para> | ||
69 | </listitem> | ||
70 | |||
71 | <listitem> | ||
72 | <para>Connected to Lab Network.</para> | ||
73 | </listitem> | ||
74 | |||
75 | <listitem> | ||
76 | <para>uCPE Manager installed.</para> | ||
77 | |||
78 | <note> | ||
79 | <para>For details on how to install the uCPE Manager, see "Getting | ||
80 | Started with Enea uCPE Manager" from the Enea NFV Access Getting | ||
81 | Started manual.</para> | ||
82 | </note> | ||
83 | </listitem> | ||
84 | </itemizedlist> | ||
85 | |||
86 | <para><emphasis role="bold">1<superscript>st</superscript> Intel Whitebox | ||
87 | target device</emphasis><itemizedlist> | ||
88 | <listitem> | ||
89 | <para>Minimum 4 Physical Network Devices.</para> | ||
90 | </listitem> | ||
91 | |||
92 | <listitem> | ||
93 | <para>4GB RAM and 4 cores (Intel C3000 or Xeon D).</para> | ||
94 | </listitem> | ||
95 | |||
96 | <listitem> | ||
97 | <para>2 Physical connections to Lab Network.</para> | ||
98 | </listitem> | ||
99 | |||
100 | <listitem> | ||
101 | <para>Enea NFV Access installed.</para> | ||
102 | |||
103 | <note> | ||
104 | <para>For information on how to install Enea NFV Access<remark>the | ||
105 | solution or the platform?</remark>, refer to "Getting Started with | ||
106 | Enea NFV Access" from the Enea NFV Access Getting Started | ||
107 | manual.</para> | ||
108 | </note> | ||
109 | </listitem> | ||
110 | </itemizedlist><figure> | ||
111 | <title>Lab setup overview for ChainedVNFsService Setup</title> | ||
112 | |||
113 | <mediaobject> | ||
114 | <imageobject> | ||
115 | <imagedata align="center" | ||
116 | fileref="images/ChainedVNFsService_setup.png" | ||
117 | scale="40" /> | ||
118 | </imageobject> | ||
119 | </mediaobject> | ||
120 | </figure></para> | ||
121 | |||
122 | <para><emphasis role="bold">Changes to 1st Intel Whitebox target | ||
123 | device</emphasis></para> | ||
124 | |||
125 | <itemizedlist> | ||
126 | <listitem> | ||
127 | <para>16GB RAM and 8 cores (Intel C3000 or Xeon D).</para> | ||
128 | </listitem> | ||
129 | |||
130 | <listitem> | ||
131 | <para>1 Physical connection back to back with the 2nd Intel Whitebox | ||
132 | target device.</para> | ||
133 | </listitem> | ||
134 | </itemizedlist> | ||
135 | |||
136 | <para><emphasis role="bold">2<superscript>nd</superscript> Intel Whitebox | ||
137 | target device</emphasis><itemizedlist> | ||
138 | <listitem> | ||
139 | <para>Minimum 4 Physical Network Devices.</para> | ||
140 | </listitem> | ||
141 | |||
142 | <listitem> | ||
143 | <para>16GB RAM and 8 cores (Intel C3000 or Xeon D).</para> | ||
144 | </listitem> | ||
145 | |||
146 | <listitem> | ||
147 | <para>2 Physical connections to Lab Network.</para> | ||
148 | </listitem> | ||
149 | |||
150 | <listitem> | ||
151 | <para>1 Physical connection back to back with the | ||
152 | 1<superscript>st</superscript> Intel Whitebox target device.</para> | ||
153 | </listitem> | ||
154 | |||
155 | <listitem> | ||
156 | <para>Enea NFV Access installed.</para> | ||
157 | |||
158 | <note> | ||
159 | <para>For information on how to install Enea NFV Access<remark>the | ||
160 | solution or the platform?</remark>, refer to "Getting Started with | ||
161 | Enea NFV Access" from the Enea NFV Access Getting Started | ||
162 | manual.</para> | ||
163 | </note> | ||
164 | </listitem> | ||
165 | </itemizedlist></para> | ||
166 | </section> | ||
167 | |||
168 | <section id="initial_setup"> | ||
169 | <title>Installation and Initial Setup</title> | ||
170 | |||
171 | <para>Download <filename>nfvaccess22_af-th.zip</filename> from the Enea | ||
172 | Portal and unzip it on the a supported host machine. Henceforth, the | ||
173 | directory in which the ZIP archive has been unpacked will be denoted as | ||
174 | <literal><AF-TH-installdir></literal>.</para> | ||
175 | |||
176 | <para>Enter the <literal><AF-TH-install-dir></literal> directory and | ||
177 | run the <filename>setup_env.sh</filename> script to do the initial setup | ||
178 | of the Test Harness environment: <filename>source | ||
179 | setup_env.sh</filename>.</para> | ||
180 | |||
181 | <para>Setup the uCPE Manager which will be used by the TH:</para> | ||
182 | |||
183 | <orderedlist> | ||
184 | <listitem> | ||
185 | <para>Create the uCPE Manager JSON config file in the | ||
186 | <literal><AF-TH-install-dir>/uCPEM_config/</literal> | ||
187 | directory:<programlisting>{ | ||
188 | "ucpe_usr":"uCPE Manager Username", | ||
189 | "ucpe_pass":"uCPE Manager Password", | ||
190 | "ucpe_host":"uCPE Manager IP/Hostname", | ||
191 | "ftp_usr":"FTP Username", | ||
192 | "ftp_pass":"FTP Password", | ||
193 | "ftp_port":"FTP Port" | ||
194 | }</programlisting>See the | ||
195 | <filename><AF-TH-install-dir>/uCPEM_config/ucpem01.json</filename> | ||
196 | file as an example.</para> | ||
197 | </listitem> | ||
198 | |||
199 | <listitem> | ||
200 | <para>Run the <filename>setupuCPEManager.yml</filename> Ansible | ||
201 | Playbook with the JSON config path as parameter: <programlisting>ansible-playbook playbooks/setupuCPEManager.yml –e\ | ||
202 | "@uCPEM_config/<config_name>.json"</programlisting></para> | ||
203 | |||
204 | <para><emphasis role="bold">Example</emphasis> <programlisting>ansible-playbook playbooks/setupuCPEManager.yml –e\ | ||
205 | "@uCPEM_config/ucpem01.json"</programlisting></para> | ||
206 | </listitem> | ||
207 | </orderedlist> | ||
208 | |||
209 | <para>Note that the steps presented in this sub-chapter are to be executed | ||
210 | only once, for the initial setup of the TH environment. Afterwards, each | ||
211 | session ends by closing the Python virtual environment (<literal>source | ||
212 | <AF-THinstall-dir>/testHarness/bin/deactivate</literal>) and | ||
213 | subsequent use of the installation requires activating the Python virtual | ||
214 | enviroment before using the Automation Framework and Test Harness | ||
215 | (<literal>source | ||
216 | <AF-THinstall-dir>/testHarness/bin/activate</literal>). </para> | ||
217 | |||
218 | <para>Furthermore, if a user wants to use a new uCPE Manager instance for | ||
219 | a new session, the user also has to re-run the | ||
220 | <filename>setupuCPEManager.yml</filename> playbook with the corresponding | ||
221 | JSON config for the new uCPE Manager instance.</para> | ||
222 | </section> | ||
223 | </chapter> \ No newline at end of file | ||
diff --git a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/troubleshooting_guide.xml b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/troubleshooting_guide.xml index f9d4381..2f0509b 100644 --- a/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/troubleshooting_guide.xml +++ b/doc/book-enea-nfv-access-auto-fw-th-user-guide/doc/troubleshooting_guide.xml | |||
@@ -2,5 +2,36 @@ | |||
2 | <chapter id="troubleshooting_guide"> | 2 | <chapter id="troubleshooting_guide"> |
3 | <title>Troubleshooting Guide</title> | 3 | <title>Troubleshooting Guide</title> |
4 | 4 | ||
5 | <para></para> | 5 | <para>The following are best practices and possible solutions to problems |
6 | that may occur during operation.</para> | ||
7 | |||
8 | <itemizedlist> | ||
9 | <listitem> | ||
10 | <para>All the Playbooks have to be run from the root directory of the | ||
11 | Test Harness to avoid failures such as "File not found!", because the | ||
12 | paths to the needed configuration files are hardcoded into the | ||
13 | Playbooks.</para> | ||
14 | </listitem> | ||
15 | |||
16 | <listitem> | ||
17 | <para>If the setup_env.sh fails, for debugging, remove &> | ||
18 | /dev/null from the failed command. Then the output of the command will | ||
19 | be printed, and will not be redirected to /dev/null anymore.</para> | ||
20 | </listitem> | ||
21 | |||
22 | <listitem> | ||
23 | <para>When setup the uCPE Manager to be used by the TH using | ||
24 | setupuCPEManager.yml Playbook, if the uCPE username/password/host are | ||
25 | wrong or are missing, all the Sample test cases will fail. If the FTP | ||
26 | username/password/port are wrong or are missing, the tests that requires | ||
27 | file transfer to uCPE Manager will fail.</para> | ||
28 | </listitem> | ||
29 | |||
30 | <listitem> | ||
31 | <para>Ansible logs are not written into the log/ansible.log file when | ||
32 | the stdout_callback is set to selective in the ansible.cfg. For | ||
33 | debugging, check the python logs from log/debug.log file or change the | ||
34 | stdout_callback to debug and rerun the test.</para> | ||
35 | </listitem> | ||
36 | </itemizedlist> | ||
6 | </chapter> \ No newline at end of file | 37 | </chapter> \ No newline at end of file |