summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormrpa <miruna.paun@enea.com>2021-04-08 05:27:36 +0200
committerMiruna Paun <mrpa@enea.se>2021-04-08 09:22:42 +0100
commit8386d1aa527749f38ad761978403770a26fe33d4 (patch)
treec22d9e4ceed96661f9e0f8e37c9c259f774f5b89
parent1de86c1fd37576a0d9fb8c55a1acbefd99129c32 (diff)
downloadnfv-access-documentation-feature_CPDX-3353.tar.gz
Cleaning up the code, adding in new section ids,feature_CPDX-3353
syncing formating across the books. Change-Id: I1c0b70d498b744c0c9997538c7ce4a5402749792 Signed-off-by: mrpa <miruna.paun@enea.com>
-rw-r--r--doc/book-enea-edge-automation-user-guide/doc/automation_framework_test_harness.xml918
-rw-r--r--doc/book-enea-edge-automation-user-guide/doc/components.xml11
-rw-r--r--doc/book-enea-edge-automation-user-guide/doc/getting_started.xml111
-rw-r--r--doc/book-enea-edge-automation-user-guide/doc/overview.xml2
4 files changed, 578 insertions, 464 deletions
diff --git a/doc/book-enea-edge-automation-user-guide/doc/automation_framework_test_harness.xml b/doc/book-enea-edge-automation-user-guide/doc/automation_framework_test_harness.xml
index 7722715..bc974cc 100644
--- a/doc/book-enea-edge-automation-user-guide/doc/automation_framework_test_harness.xml
+++ b/doc/book-enea-edge-automation-user-guide/doc/automation_framework_test_harness.xml
@@ -6,7 +6,9 @@
6 <title>File Structure</title> 6 <title>File Structure</title>
7 7
8 <para>Enea Edge Automation is an open-source product, 8 <para>Enea Edge Automation is an open-source product,
9 with the following directory structure:<itemizedlist spacing="compact"> 9 with the following directory structure:</para>
10
11 <itemizedlist spacing="compact">
10 <listitem> 12 <listitem>
11 <para>ansible.cfg</para> 13 <para>ansible.cfg</para>
12 </listitem> 14 </listitem>
@@ -46,22 +48,23 @@
46 <listitem> 48 <listitem>
47 <para>VERSION</para> 49 <para>VERSION</para>
48 </listitem> 50 </listitem>
49 </itemizedlist></para> 51 </itemizedlist>
50 52
51 <para>Each file/directory is described in more details in the following 53 <para>Each file/directory is described in more details in the following
52 sections.</para> 54 sections.</para>
53 55
54 <section> 56 <section id="create_virt_test_env">
55 <title>setup_env.sh, setup_env_requirements.txt and 57 <title>Creating the Virtual Environment for Testing</title>
56 environment_variables.sh</title>
57 58
58 <para>The <literal>setup_env.sh</literal>, 59 <para>The <filename>setup_env.sh</filename>,
59 <literal>setup_env_requirements.txt</literal> and 60 <filename>setup_env_requirements.txt</filename> and
60 <literal>environment_variables.sh</literal> files are used to create the 61 <filename>environment_variables.sh</filename> files are used to create the
61 testing virtual environment with the folowing 62 testing virtual environment, using the following
62 prerequisites:<itemizedlist security="" spacing="compact"> 63 prerequisites:</para>
64
65 <itemizedlist spacing="compact">
63 <listitem> 66 <listitem>
64 <para>environment variable</para> 67 <para>The environment variable</para>
65 </listitem> 68 </listitem>
66 69
67 <listitem> 70 <listitem>
@@ -69,65 +72,65 @@
69 </listitem> 72 </listitem>
70 73
71 <listitem> 74 <listitem>
72 <para>Ansible package</para> 75 <para>Ansible package(s)</para>
73 </listitem> 76 </listitem>
74 </itemizedlist></para> 77 </itemizedlist>
75
76 <para>The <literal>environment_variables.sh</literal> script sets the
77 environment variables.</para>
78
79 <para>The <literal>setup_env_requirements.txt</literal> contains the
80 mapping between the package name and its version.</para>
81 78
82 <para>The <literal>setup_env.sh</literal> script creates a testing 79 <para>Where the <filename>environment_variables.sh</filename> script sets the
83 virtual environment.</para> 80 environment variables. The <filename>setup_env_requirements.txt</filename> contains the
81 mapping between the package name and its version, and the <filename>setup_env.sh</filename>
82 script creates a testing virtual environment.</para>
84 83
85 <para>The <literal>setup_env.sh</literal> does the 84 <para>The <filename>setup_env.sh</filename> does the
86 following:<itemizedlist spacing="compact"> 85 following:</para>
86
87 <itemizedlist spacing="compact">
87 <listitem> 88 <listitem>
88 <para>checks if the <literal>Python 3</literal> and 89 <para>Checks if the <literal>Python 3</literal> and
89 <literal>pip</literal> packages are installed on the host. If at 90 <literal>pip</literal> packages are installed on the host. If at
90 least one package is not installed on the host, then an error is 91 least one package is not installed on the host, then an error is
91 displayed and the scripts stops.</para> 92 displayed and the script stops.</para>
92 </listitem> 93 </listitem>
93 94
94 <listitem> 95 <listitem>
95 <para>creates and activates <literal>testHarness-venv</literal> 96 <para>Creates and activates the <literal>testHarness-venv</literal>
96 virtual environment</para> 97 virtual environment.</para>
97 </listitem> 98 </listitem>
98 99
99 <listitem> 100 <listitem>
100 <para>upgrades <literal>pip</literal> package to the newest 101 <para>Upgrades the <literal>pip</literal> package to the newest
101 version</para> 102 version.</para>
102 </listitem> 103 </listitem>
103 104
104 <listitem> 105 <listitem>
105 <para>installs the packages defined in 106 <para>Installs the packages defined in
106 <literal>setup_env_requirements.txt</literal> on the virtual 107 <filename>setup_env_requirements.txt</filename> on the virtual
107 environment</para> 108 environment.</para>
108 </listitem> 109 </listitem>
109 110
110 <listitem> 111 <listitem>
111 <para>sets the environment variables defined in 112 <para>Sets the environment variables defined in
112 <literal>environment_variables.sh</literal> on the virtual 113 <filename>environment_variables.sh</filename> on the virtual
113 environment</para> 114 environment.</para>
114 </listitem> 115 </listitem>
115 </itemizedlist></para> 116 </itemizedlist>
116 </section> 117 </section>
117 118
118 <section> 119 <section id ="version_changelog">
119 <title>VERSION and CHANGELOG</title> 120 <title>VERSION and CHANGELOG</title>
120 121
121 <para><literal>VERSION</literal> and <literal>CHANGELOG</literal> files 122 <para>The <filename>VERSION</filename> and <filename>CHANGELOG</filename> files
122 contain information about the version, build number, and all the notable 123 contain information about the version, build number, and all the notable
123 changes added in the Enea Edge Automation.</para> 124 changes added in the Enea Edge Automation.</para>
124 </section> 125 </section>
125 126
126 <section> 127 <section id="module_enea_dir">
127 <title>modules/enea</title> 128 <title>The modules/enea directory</title>
128 129
129 <para>The <literal>modules/enea</literal> directory contains the 130 <para>The <literal>modules/enea</literal> directory contains the
130 following:<itemizedlist spacing="compact"> 131 following:</para>
132
133 <itemizedlist spacing="compact">
131 <listitem> 134 <listitem>
132 <para><literal>config</literal> - contains the configuration files 135 <para><literal>config</literal> - contains the configuration files
133 that need to be updated in order to successfully run the 136 that need to be updated in order to successfully run the
@@ -145,70 +148,73 @@
145 <para><literal>VNF_images</literal> - contains the VNF images that 148 <para><literal>VNF_images</literal> - contains the VNF images that
146 are used in test scenarios.</para> 149 are used in test scenarios.</para>
147 </listitem> 150 </listitem>
148 </itemizedlist></para> 151 </itemizedlist>
149 </section> 152 </section>
150 153
151 <section> 154 <section id="automation_framework_dir">
152 <title>automation_framework</title> 155 <title>The automation_framework directory</title>
153 156
154 <para>The <literal>automation_framework</literal> directory includes all 157 <para>The <literal>automation_framework</literal> directory includes all
155 the Python scripts used by the Automation Framework. Each Python script 158 the Python scripts used by the Automation Framework. Each Python script
156 implements a class that defines a functionality of the Enea Edge Management.</para> 159 implements a class that defines a functionality of the Enea Edge Management application.</para>
157 160
158 <para>The Python scripts can be split in:<itemizedlist> 161 <para>The Python scripts can be split into the following:</para>
162
163 <itemizedlist>
159 <listitem> 164 <listitem>
160 <para><literal>uCPEMgrHTTPClientRestAPIv2.py</literal> script, 165 <para>The <filename>uCPEMgrHTTPClientRestAPIv2.py</filename> script,
161 where <literal>uCPEMgrHTTPClient</literal> class is defined. This 166 where the <literal>uCPEMgrHTTPClient</literal> class is defined. This
162 class communicates with the Enea Edge Management via REST API.</para> 167 class communicates with the Enea Edge Management application via REST API.</para>
163 </listitem> 168 </listitem>
164 169
165 <listitem> 170 <listitem>
166 <para>other Python scripts, where the classes for the Enea Edge Management 171 <para>Other Python scripts, where the classes for the Enea Edge Management
167 module are defined. Each class inherits 172 module are defined. Each class inherits the
168 <literal>uCPEMgrHTTPClientRestAPIv2</literal> class and uses its 173 <literal>uCPEMgrHTTPClientRestAPIv2</literal> class and uses its
169 methods to communicate with Enea Edge Management via REST API. Each class 174 methods to communicate with the Enea Edge Management application via the REST API. Each class
170 corresponds to a Enea Edge Management module.</para> 175 corresponds to an Enea Edge Management module.</para>
171 176
172 <para><emphasis role="bold">Example</emphasis>: 177 <para><emphasis role="bold">Example</emphasis>: the
173 <literal>OfflineConfigHandler.py</literal> script, where 178 <filename>OfflineConfigHandler.py</filename> script, where the
174 <literal>OfflineConfigHandler</literal> class is defined. Inside 179 <literal>OfflineConfigHandler</literal> class is defined. Inside
175 this class, the methods for offline configuration functionality 180 this class, the methods for offline configuration functionality
176 are implemented: <literal>addOfflineConfig</literal>, 181 are implemented: <literal>addOfflineConfig</literal>,
177 <literal>removeOfflineConfig</literal>, 182 <literal>removeOfflineConfig</literal>,
178 <literal>uploaOfflineConfig</literal> and so on.</para> 183 <literal>uploaOfflineConfig</literal> and so on.</para>
179 </listitem> 184 </listitem>
180 </itemizedlist></para> 185 </itemizedlist>
181 </section> 186 </section>
182 187
183 <section> 188 <section id="unit_test_dir">
184 <title>unit_test</title> 189 <title>The unit_test directory</title>
185 190
186 <para>The <literal>unit_test</literal> directory contains:<itemizedlist 191 <para>The <literal>unit_test</literal> directory contains:</para>
187 spacing="compact"> 192
193 <itemizedlist spacing="compact">
188 <listitem> 194 <listitem>
189 <para>JSON files for complex scenarios with multiple 195 <para>JSON files for complex scenarios with multiple
190 operations</para> 196 operations.</para>
191 </listitem> 197 </listitem>
192 198
193 <listitem> 199 <listitem>
194 <para>Python <literal>unit-test</literal> class</para> 200 <para>The Python <literal>unit-test</literal> class.</para>
195 </listitem> 201 </listitem>
196 202
197 <listitem> 203 <listitem>
198 <para>loader scripts for generating specific test cases for the 204 <para>Loader scripts for generating specific test cases for the
199 available Python script</para> 205 available Python script.</para>
200 </listitem> 206 </listitem>
201 </itemizedlist></para> 207 </itemizedlist>
202 208
203 <para>The generated test cases are injected into the Python 209 <para>The generated test cases are injected into the Python
204 <literal>unit-test</literal> suite class to run using the Python 210 <literal>unit-test</literal> suite class to run using the Python
205 <literal>unit-test</literal> framework.</para> 211 <literal>unit-test</literal> framework.</para>
206 </section> 212 </section>
207 213
208 <section> 214 <section id="test_harn_ansible">
209 <title>test_harness and ansible.cfg</title> 215 <title>The test_harness directory and ansible.cfg</title>
210 216
211 <para>The <literal>ansible.cfg</literal> file represents the 217 <para>The <filename>ansible.cfg</filename> file represents the
212 configuration file for Test Harness. The Ansible configurations have 218 configuration file for Test Harness. The Ansible configurations have
213 default values delivered in the archive, but they can be changed. 219 default values delivered in the archive, but they can be changed.
214 <emphasis role="bold">Example</emphasis>: for a more extended output, 220 <emphasis role="bold">Example</emphasis>: for a more extended output,
@@ -216,37 +222,38 @@
216 222
217 <para>The <literal>test_harness</literal> directory contains all the 223 <para>The <literal>test_harness</literal> directory contains all the
218 implemented playbooks. This directory is structured in multiple 224 implemented playbooks. This directory is structured in multiple
219 subdirectories, each subdirectory represents a functionality of the Enea Edge Management. 225 subdirectories, each subdirectory represents a functionality of the Enea Edge Management application. Each implemented playbook from this directory runs a method
220 Each implemented playbook from this directory runs a method 226 from a Python class from the <literal>automation_framework</literal>
221 from a Python class from <literal>automation_framework</literal>
222 directory. Each playbook is an atomic operation, a basic operation that 227 directory. Each playbook is an atomic operation, a basic operation that
223 need to be tested. These playbooks are used in complex test 228 need to be tested. These playbooks are used in complex test
224 scenario.</para> 229 scenarios.</para>
225 </section> 230 </section>
226 231
227 <section> 232 <section id="log_dir">
228 <title>log</title> 233 <title>The log directory</title>
229 234
230 <para>The <literal>log</literal> directory is added in the directory 235 <para>The <literal>log</literal> directory is added in the directory
231 structure by <literal>setup_env.sh</literal> script. The 236 structure by the <filename>setup_env.sh</filename> script. The
232 <literal>setup_env.sh</literal> stores the output logs in 237 <filename>setup_env.sh</filename> script stores the output logs in the
233 <literal>setup_env.log</literal>. The Ansible playbooks stores the logs 238 <filename>setup_env.log</filename> file. The Ansible playbooks store the logs
234 in <literal>ansible.log</literal>. The Python scripts stores the logs in 239 in the <filename>ansible.log</filename> file. The Python scripts store the logs in
235 <literal>debug.log</literal>.</para> 240 the <filename>debug.log</filename> file.</para>
236 </section> 241 </section>
237 </section> 242 </section>
238 243
239 <section id="AFTH_cofig"> 244 <section id="AFTH_cofig">
240 <title>Configuring the System</title> 245 <title>Configuring the System</title>
241 246
242 <para>The configuration files must be updated before using the Enea Edge Automation. 247 <para>The configuration files must be updated before using Enea Edge Automation.
243 They are stored in <literal>modules/enea/config</literal> 248 They are stored in the <literal>modules/enea/config</literal>
244 directory.</para> 249 directory.</para>
245 250
246 <para>The configuration files are split according to the component that is 251 <para>The configuration files are split according to the component that is
247 used in the testing process:<itemizedlist spacing="compact"> 252 used in the testing process:</para>
253
254 <itemizedlist spacing="compact">
248 <listitem> 255 <listitem>
249 <para>Enea Edge Management</para> 256 <para>The Enea Edge Management application</para>
250 </listitem> 257 </listitem>
251 258
252 <listitem> 259 <listitem>
@@ -256,13 +263,15 @@
256 <listitem> 263 <listitem>
257 <para>VNFs</para> 264 <para>VNFs</para>
258 </listitem> 265 </listitem>
259 </itemizedlist></para> 266 </itemizedlist>
260 267
261 <section> 268 <section id="config_files_mg">
262 <title>Configuration Files for Enea Edge Management</title> 269 <title>Configuration Files for the Enea Edge Management application</title>
263 270
264 <para>In order to create a connection with the Enea Edge Management, the 271 <para>In order to create a connection with the Enea Edge Management application, the
265 following parameters have to be updated:<itemizedlist spacing="compact"> 272 following parameters have to be updated:</para>
273
274 <itemizedlist spacing="compact">
266 <listitem> 275 <listitem>
267 <para>Enea Edge Management username</para> 276 <para>Enea Edge Management username</para>
268 </listitem> 277 </listitem>
@@ -274,19 +283,19 @@
274 <listitem> 283 <listitem>
275 <para>Enea Edge Management IP address</para> 284 <para>Enea Edge Management IP address</para>
276 </listitem> 285 </listitem>
277 </itemizedlist></para> 286 </itemizedlist>
278 287
279 <para><emphasis role="bold">To update the configuration 288 <para><emphasis role="bold">Updating the configuration file</emphasis></para>
280 file</emphasis></para>
281 289
282 <orderedlist> 290 <orderedlist>
283 <listitem> 291 <listitem>
284 <para>Open 292 <para>Open <filename>modules/enea/config/uCPEManager/ucpem01.json</filename></para>
285 <literal>modules/enea/config/uCPEManager/ucpem01.json</literal><programlisting>{ 293
294 <programlisting>{
286 "ucpe_usr":"admin", 295 "ucpe_usr":"admin",
287 "ucpe_pass":"admin", 296 "ucpe_pass":"admin",
288 "ucpe_host":"172.24.3.92" 297 "ucpe_host":"172.24.3.92"
289}</programlisting></para> 298}</programlisting>
290 </listitem> 299 </listitem>
291 300
292 <listitem> 301 <listitem>
@@ -295,92 +304,96 @@
295 </orderedlist> 304 </orderedlist>
296 305
297 <para>It is possible to use another JSON file for the connection with 306 <para>It is possible to use another JSON file for the connection with
298 the Enea Edge Management.</para> 307 the Enea Edge Management application.</para>
299 308
300 <para><emphasis role="bold">To change the path for Enea Edge Management JSON 309 <para><emphasis role="bold">Changing the path for the Enea Edge Management JSON
301 file</emphasis><orderedlist> 310 file</emphasis></para>
311
312 <orderedlist>
302 <listitem> 313 <listitem>
303 <para>Open 314 <para>Open the <filename>automation_framework/uCPEMgrHTTPClientRestAPIv2.py</filename> file.</para>
304 <literal>automation_framework/uCPEMgrHTTPClientRestAPIv2.py</literal>
305 file</para>
306 </listitem> 315 </listitem>
307 316
308 <listitem> 317 <listitem>
309 <para>Go to <literal>create_json_file</literal> method from 318 <para>Go to the <literal>create_json_file</literal> method from the
310 <literal>eneaUcpeMgrConfig</literal> class</para> 319 <literal>eneaUcpeMgrConfig</literal> class.</para>
311 </listitem> 320 </listitem>
312 321
313 <listitem> 322 <listitem>
314 <para>Change the path of Enea Edge Management JSON file in 323 <para>Change the path of the Enea Edge Management JSON file in the
315 <literal>self.ucpe_json_file</literal> variable</para> 324 <literal>self.ucpe_json_file</literal> variable.</para>
316 </listitem> 325 </listitem>
317 </orderedlist></para> 326 </orderedlist>
318 </section> 327 </section>
319 328
320 <section> 329 <section id="config_files_ucpe_devices">
321 <title>Configuration Files for uCPE Devices</title> 330 <title>Configuration Files for uCPE Devices</title>
322 331
323 <para>The <literal>modules/enea/config/uCPEDevices</literal> directory 332 <para>The <literal>modules/enea/config/uCPEDevices</literal> directory
324 contains the following:<itemizedlist spacing="compact"> 333 contains the following:</para>
334
335 <itemizedlist spacing="compact">
325 <listitem> 336 <listitem>
326 <para>examples of the configuration files for different uCPE 337 <para>Examples of the configuration files for different uCPE
327 Devices: 338 Devices:
328 <literal>inteld1521-16</literal>,<literal>inteld1521-17</literal>, 339 <literal>inteld1521-16</literal>,<literal>inteld1521-17</literal>,
329 and so on</para> 340 and so on.</para>
330 </listitem> 341 </listitem>
331 342
332 <listitem> 343 <listitem>
333 <para>the scripts for generating all the configuration files in 344 <para>The scripts for generating all configuration files in
334 <literal>scripts</literal> folder</para> 345 <literal>scripts</literal> folder.</para>
335 </listitem> 346 </listitem>
336 </itemizedlist></para> 347 </itemizedlist>
337 348
338 <para>The following scripts are implemented to generate the 349 <para>The following scripts are implemented to generate the
339 configuration files:<itemizedlist spacing="compact"> 350 configuration files:</para>
351
352 <itemizedlist spacing="compact">
340 <listitem> 353 <listitem>
341 <para><literal>generate_device_config.py</literal> - generates the 354 <para><filename>generate_device_config.py</filename> - generates the
342 JSON configuration file for uCPE Device.</para> 355 JSON configuration file for the uCPE Device.</para>
343 </listitem> 356 </listitem>
344 357
345 <listitem> 358 <listitem>
346 <para><literal>generate_bridges_config_files.py</literal> - 359 <para><filename>generate_bridges_config_files.py</filename> -
347 generates configuration files for all possible OVS bridges created 360 generates configuration files for all possible OVS bridges created
348 on the uCPE Device.</para> 361 on the uCPE Device.</para>
349 </listitem> 362 </listitem>
350 363
351 <listitem> 364 <listitem>
352 <para><literal>generate_nics_config_files.py</literal> - generates 365 <para><filename>generate_nics_config_files.py</filename> - generates
353 the configuration files for all possible NICs created on the uCPE 366 the configuration files for all possible NICs created on the uCPE
354 Device.</para> 367 Device.</para>
355 </listitem> 368 </listitem>
356 </itemizedlist></para> 369 </itemizedlist>
357 370
358 <section> 371 <section id="generate_config">
359 <title>Generating device config</title> 372 <title>Generating Device config</title>
360 373
361 <para>Before running the script, check:</para> 374 <para>Before running the script, check the following:</para>
362 375
363 <itemizedlist spacing="compact"> 376 <itemizedlist spacing="compact">
364 <listitem> 377 <listitem>
365 <para>the available NICs on the target</para> 378 <para>The available NICs on the target.</para>
366 </listitem> 379 </listitem>
367 380
368 <listitem> 381 <listitem>
369 <para>the device ID</para> 382 <para>The device ID.</para>
370 </listitem> 383 </listitem>
371 384
372 <listitem> 385 <listitem>
373 <para>the IP address of the uCPE Device</para> 386 <para>The IP address of the uCPE Device.</para>
374 </listitem> 387 </listitem>
375 </itemizedlist> 388 </itemizedlist>
376 389
377 <para><emphasis role="bold">To generate device 390 <para><emphasis role="bold">Generating the device config</emphasis></para>
378 config</emphasis></para>
379 391
380 <orderedlist> 392 <orderedlist>
381 <listitem> 393 <listitem>
382 <para>Run 394 <para>Run <filename>generate_device_config.py</filename>:</para>
383 <literal>generate_device_config.py</literal><programlisting>testHarness-venv)&gt; python generate_device_config.py 395
396 <programlisting>testHarness-venv)&gt; python generate_device_config.py
384Device name: test 397Device name: test
385Device ID: test_id 398Device ID: test_id
386Device groupings tags [ ]: test_id 399Device groupings tags [ ]: test_id
@@ -396,18 +409,17 @@ The following JSON config file was successfully created (uCPE Device config file
396test.json 409test.json
397 410
398The following JSON config file was successfully created (config store file): 411The following JSON config file was successfully created (config store file):
399store.json</programlisting></para> 412store.json</programlisting>
400 </listitem> 413 </listitem>
401 414
402 <listitem> 415 <listitem>
403 <para>Check the configuration files in 416 <para>Check the configuration files in the <literal>modules/enea/config/uCPEDevices/test</literal>
404 <literal>modules/enea/config/uCPEDevices/test</literal>
405 directory:</para> 417 directory:</para>
406 418
407 <itemizedlist> 419 <itemizedlist>
408 <listitem> 420 <listitem>
409 <para><literal>test.json</literal> file - contains all the 421 <para><filename>test.json</filename> file - contains all the
410 input parameters for <literal>test</literal> device</para> 422 input parameters for the <literal>test</literal> device:</para>
411 423
412 <programlisting>{ 424 <programlisting>{
413 "deviceId": "test_id", 425 "deviceId": "test_id",
@@ -433,9 +445,9 @@ store.json</programlisting></para>
433 </listitem> 445 </listitem>
434 446
435 <listitem> 447 <listitem>
436 <para><literal>store.json</literal> file - contains the input 448 <para><filename>store.json</filename> file - contains the input
437 parameters used for creating an offline config for the uCPE 449 parameters used for creating an offline config for the uCPE
438 Device</para> 450 Device:</para>
439 451
440 <programlisting>{ 452 <programlisting>{
441 "version": "2.4.0", 453 "version": "2.4.0",
@@ -448,11 +460,13 @@ store.json</programlisting></para>
448 </listitem> 460 </listitem>
449 </orderedlist> 461 </orderedlist>
450 462
451 <para>The <literal>generate_device_config.py</literal> script can be 463 <para>The <filename>generate_device_config.py</filename> script can be
452 executed in a non-interactive way, as follows:<programlisting>testHarness-venv)&gt;python generate_device_config.py --device_name=test -- 464 executed in a non-interactive way, as follows:</para>
453device_id=test_id --device_grouping_tags=test_id --version 2.4.0 -- 465
454device_ip_addr=10.0.0.1 --call_home=false --mgmt_nic=eth0 --wan_nic=eth1 -- 466<programlisting>testHarness-venv)&gt;python generate_device_config.py --device_name=test
455lan_nic=eth2 --wap_nic=wlan0</programlisting></para> 467 --device_id=test_id --device_grouping_tags=test_id --version 2.4.0
468 --device_ip_addr=10.0.0.1 --call_home=false --mgmt_nic=eth0 --wan_nic=eth1
469 --lan_nic=eth2 --wap_nic=wlan0</programlisting>
456 470
457 <para>The names of the interfaces (<literal>mgmt_*, wan_*, 471 <para>The names of the interfaces (<literal>mgmt_*, wan_*,
458 lan_*</literal> and <literal>wap_*</literal>) are used to generate the 472 lan_*</literal> and <literal>wap_*</literal>) are used to generate the
@@ -460,38 +474,39 @@ lan_nic=eth2 --wap_nic=wlan0</programlisting></para>
460 scenario.</para> 474 scenario.</para>
461 475
462 <para>When the script is interactively run, the parameter's value 476 <para>When the script is interactively run, the parameter's value
463 between square brackets is the default one. It can be omitted when the 477 between the square brackets is the default one. It can be omitted when the
464 script is non-interactively run.</para> 478 script is non-interactively run.</para>
465 </section> 479 </section>
466 480
467 <section> 481 <section id="nic_config_files">
468 <title>Generating NIC config files</title> 482 <title>Generating NIC config files</title>
469 483
470 <para><emphasis role="bold">To generate NIC config 484 <para><emphasis role="bold">Generating NIC config
471 files</emphasis></para> 485 files</emphasis></para>
472 486
473 <orderedlist> 487 <orderedlist>
474 <listitem> 488 <listitem>
475 <para>Run 489 <para>Run <filename>generate_nics_config_files.py</filename>:</para>
476 <literal>generate_nics_config_files.py</literal><programlisting>(testHarness-venv)&gt; python generate_nics_config_files.py 490
491 <programlisting>(testHarness-venv)&gt; python generate_nics_config_files.py
477Device name: test 492Device name: test
478Check 'test' directory for JSON configuration files</programlisting></para> 493Check 'test' directory for JSON configuration files</programlisting>
479 </listitem> 494 </listitem>
480 495
481 <listitem> 496 <listitem>
482 <para>Check the configuration files for all interface types in 497 <para>Check the configuration files for all interface types in the
483 <literal>modules/enea/config/uCPEDevices/test</literal> directory. 498 <literal>modules/enea/config/uCPEDevices/test</literal> directory.
484 The interface name is defined in <literal>test.json</literal> 499 The interface name is defined in the <filename>test.json</filename>
485 file. The NIC config files have the following structure: 500 file. The NIC config files have the following structure:
486 <literal>&lt;interface_name&gt;_&lt;interface_type&gt;_nic.json</literal>. 501 <literal>&lt;interface_name&gt;_&lt;interface_type&gt;_nic.json</literal>.
487 For <literal>eth2</literal> lan interface, the following JSON 502 For the <literal>eth2</literal> lan interface, the following JSON
488 files are created:</para> 503 files are created:</para>
489 504
490 <itemizedlist> 505 <itemizedlist>
491 <listitem> 506 <listitem>
492 <para><literal>lan_dpdk_nic.json</literal> - contains: 507 <para><filename>lan_dpdk_nic.json</filename> - contains:
493 Interface type: <literal>DPDK</literal>; Sub-type: 508 Interface type: <literal>DPDK</literal>; Sub-type:
494 <literal>vfio-pci</literal></para> 509 <literal>vfio-pci</literal>.</para>
495 510
496 <programlisting> { 511 <programlisting> {
497 "name": "eth2", 512 "name": "eth2",
@@ -500,10 +515,10 @@ Check 'test' directory for JSON configuration files</programlisting></para>
500 </listitem> 515 </listitem>
501 516
502 <listitem> 517 <listitem>
503 <para><literal>lan_sriov_nic.json</literal> - contains 518 <para><filename>lan_sriov_nic.json</filename> - contains
504 Interface type: <literal>SR-IOV, SR-IOV</literal>; Mode: 519 Interface type: <literal>SR-IOV, SR-IOV</literal>; Mode:
505 <literal>adapter-pool</literal>; Num VFS: 520 <literal>adapter-pool</literal>; Num VFS:
506 <literal>2</literal></para> 521 <literal>2</literal>.</para>
507 522
508 <programlisting>{ 523 <programlisting>{
509 "name": "eth2", 524 "name": "eth2",
@@ -513,9 +528,9 @@ Check 'test' directory for JSON configuration files</programlisting></para>
513 </listitem> 528 </listitem>
514 529
515 <listitem> 530 <listitem>
516 <para><literal>lan_wan_nic.json</literal> - contains Interface 531 <para><filename>lan_wan_nic.json</filename> - contains Interface
517 type: <literal>WAN</literal>; Address assignment: 532 type: <literal>WAN</literal>; Address assignment:
518 <literal>DHCP</literal></para> 533 <literal>DHCP</literal>.</para>
519 534
520 <programlisting>{ 535 <programlisting>{
521 "name": "eth2", 536 "name": "eth2",
@@ -527,12 +542,12 @@ Check 'test' directory for JSON configuration files</programlisting></para>
527 </listitem> 542 </listitem>
528 543
529 <listitem> 544 <listitem>
530 <para><literal>wap_wap_nic.json</literal> - contains Interface 545 <para><filename>wap_wap_nic.json</filename> - contains Interface
531 type: <literal>WAP</literal>; Country Code: 546 type: <literal>WAP</literal>; Country Code:
532 <literal>SE</literal>; Wireless band: 547 <literal>SE</literal>; Wireless band:
533 <literal>band5GHz</literal>; Wireless Mode: <literal>802.11 548 <literal>band5GHz</literal>; Wireless Mode: <literal>802.11
534 g/n</literal>; Radio Channel: <literal>42 (80 MHz 549 g/n</literal>; Radio Channel: <literal>42 (80 MHz
535 wide)</literal></para> 550 wide)</literal>.</para>
536 551
537 <programlisting>{ 552 <programlisting>{
538 "name": "wlan0", 553 "name": "wlan0",
@@ -546,37 +561,42 @@ Check 'test' directory for JSON configuration files</programlisting></para>
546 </listitem> 561 </listitem>
547 </orderedlist> 562 </orderedlist>
548 563
549 <para>The <literal>generate_nics_config_files.py</literal> script can 564 <para>The <filename>generate_nics_config_files.py</filename> script can
550 be executed in a non-interactive way, as follows:<programlisting>(testHarness-venv)&gt; python generate_nics_config_files.py --device_name=test 565 be executed in a non-interactive way, as follows:</para>
551Check 'test' directory for JSON configuration files</programlisting></para> 566
567 <programlisting>(testHarness-venv)&gt; python generate_nics_config_files.py --device_name=test
568Check 'test' directory for JSON configuration files</programlisting>
552 569
553 <para>The values from the JSON files depend on the input 570 <para>The values from the JSON files depend on the input
554 scenario.</para> 571 scenario.</para>
555 </section> 572 </section>
556 573
557 <section> 574 <section id="generate_ovs_config">
558 <title>Generating OVS config files</title> 575 <title>Generating OVS config files</title>
559 576
560 <para><emphasis role="bold">To generate OVS config 577 <para><emphasis role="bold">Generating OVS config
561 files</emphasis></para> 578 files</emphasis></para>
562 579
563 <orderedlist> 580 <orderedlist>
564 <listitem> 581 <listitem>
565 <para>Run 582 <para>Run <filename>generate_bridges_config_files.py</filename>:</para>
566 <literal>generate_bridges_config_files.py</literal><programlisting>(testHarness-venv)&gt; python generate_bridges_config_files.py 583
584 <programlisting>(testHarness-venv)&gt; python generate_bridges_config_files.py
567Device name: test 585Device name: test
568Check 'test' directory for JSON configuration files</programlisting></para> 586Check 'test' directory for JSON configuration files</programlisting>
569 </listitem> 587 </listitem>
570 588
571 <listitem> 589 <listitem>
572 <para>Check the configuration files in 590 <para>Check the configuration files in the
573 <literal>modules/enea/config/uCPEDevices/test</literal> directory. 591 <literal>modules/enea/config/uCPEDevices/test</literal> directory.
574 The name of OVS bridges type has the following structure: 592 The name of OVS bridges type has the following structure:
575 <literal>&lt;bridge_type&gt;_br.json</literal>. The following JSON 593 <literal>&lt;bridge_type&gt;_br.json</literal>. The following JSON
576 files are created:<itemizedlist> 594 files are created:</para>
595
596 <itemizedlist>
577 <listitem> 597 <listitem>
578 <para><literal>ibm_br.json</literal> - contains 598 <para><filename>ibm_br.json</filename> - contains information about the
579 <literal>Inband management OVS bridge</literal></para> 599 <literal>Inband management OVS bridge</literal>:</para>
580 600
581 <programlisting>{ 601 <programlisting>{
582 "name": "ibm_br", 602 "name": "ibm_br",
@@ -585,9 +605,9 @@ Check 'test' directory for JSON configuration files</programlisting></para>
585 </listitem> 605 </listitem>
586 606
587 <listitem> 607 <listitem>
588 <para><literal>sfc_br.json</literal> - contains 608 <para><filename>sfc_br.json</filename> - contains:
589 <literal>Dataplane OVS bridge</literal>; Type: 609 <literal>Dataplane OVS bridge</literal>; Type:
590 <literal>integration</literal></para> 610 <literal>integration</literal>:</para>
591 611
592 <programlisting>{ 612 <programlisting>{
593 "name": "sfc_br", 613 "name": "sfc_br",
@@ -598,8 +618,8 @@ Check 'test' directory for JSON configuration files</programlisting></para>
598 </listitem> 618 </listitem>
599 619
600 <listitem> 620 <listitem>
601 <para><literal>vnfmgmt_ipv4_br.json</literal> - contains 621 <para><filename>vnfmgmt_ipv4_br.json</filename> - contains
602 <literal>VNF Management OVS bridge, IPv4</literal></para> 622 <literal>VNF Management OVS bridge, IPv4</literal>:</para>
603 623
604 <programlisting>{ 624 <programlisting>{
605 "name": "vnfmgmt_ipv4_br", 625 "name": "vnfmgmt_ipv4_br",
@@ -609,8 +629,8 @@ Check 'test' directory for JSON configuration files</programlisting></para>
609 </listitem> 629 </listitem>
610 630
611 <listitem> 631 <listitem>
612 <para><literal>vnfmgmt_ipv6_br.json</literal> - contains 632 <para><filename>vnfmgmt_ipv6_br.json</filename> - contains
613 <literal>VNF Management OVS bridge, IPv6</literal></para> 633 <literal>VNF Management OVS bridge, IPv6</literal>:</para>
614 634
615 <programlisting> 635 <programlisting>
616{ 636{
@@ -621,10 +641,10 @@ Check 'test' directory for JSON configuration files</programlisting></para>
621 </listitem> 641 </listitem>
622 642
623 <listitem> 643 <listitem>
624 <para><literal>lan_br.json</literal> - contains 644 <para><filename>lan_br.json</filename> - contains
625 <literal>Dataplane OVS bridge</literal>; Type: 645 <literal>Dataplane OVS bridge</literal>; Type:
626 <literal>communication</literal>; Interface: 646 <literal>communication</literal>; Interface:
627 <literal>eth2</literal></para> 647 <literal>eth2</literal>:</para>
628 648
629 <programlisting>lan_br.json 649 <programlisting>lan_br.json
630{ 650{
@@ -638,9 +658,9 @@ Check 'test' directory for JSON configuration files</programlisting></para>
638 </listitem> 658 </listitem>
639 659
640 <listitem> 660 <listitem>
641 <para><literal>wap_br.json</literal> - contains 661 <para><filename>wap_br.json</filename> - contains
642 <literal>Dataplane OVS bridge</literal>; Type: 662 <literal>Dataplane OVS bridge</literal>; Type:
643 <literal>communication</literal></para> 663 <literal>communication</literal>:</para>
644 664
645 <programlisting>{ 665 <programlisting>{
646 "name": "wap_br", 666 "name": "wap_br",
@@ -649,29 +669,31 @@ Check 'test' directory for JSON configuration files</programlisting></para>
649 "interfaces": [] 669 "interfaces": []
650}</programlisting> 670}</programlisting>
651 </listitem> 671 </listitem>
652 </itemizedlist></para> 672 </itemizedlist>
653 </listitem> 673 </listitem>
654 </orderedlist> 674 </orderedlist>
655 675
656 <para>The <literal>generate_bridges_config_files.py</literal> script 676 <para>The <filename>generate_bridges_config_files.py</filename> script
657 can be executed in a non-interactive way, as follows:<programlisting>(testHarness-venv)&gt; python generate_bridges_config_files.py --device-name=test 677 can be executed in a non-interactive way, as follows:</para>
658Check 'test' directory for JSON configuration files</programlisting></para> 678
679 <programlisting>(testHarness-venv)&gt; python generate_bridges_config_files.py --device-name=test
680Check 'test' directory for JSON configuration files</programlisting>
659 681
660 <para>The values from the JSON files depend on the input 682 <para>The values from the JSON files depend on the input
661 scenario.</para> 683 scenario.</para>
662 </section> 684 </section>
663 </section> 685 </section>
664 686
665 <section> 687 <section id="config_file_vnf">
666 <title>Configuration Files for VNF</title> 688 <title>Configuration Files for the VNF</title>
667 689
668 <para>The VNF directory, <literal>modules/enea/config/VNF, 690 <para>The VNF directory <literal>modules/enea/config/VNF</literal>,
669 </literal>contains subdirectories for each defined VNF: 691 contains subdirectories for each defined VNF:
670 <literal>fortigateFWImage</literal>, <literal>junipervSRXImae</literal> 692 <literal>fortigateFWImage</literal>, <literal>junipervSRXImae</literal>
671 and so on.</para> 693 and so on.</para>
672 694
673 <para>Each VNF subdirectory contains configuration files for: cloud 695 <para>Each VNF subdirectory contains configuration files for: cloud-init,
674 init, VNF Descriptors, VNF instances. These configuration files are 696 VNF Descriptors, VNF instances. These configuration files are
675 examples used in test scenarios from Enea Edge Automation.</para> 697 examples used in test scenarios from Enea Edge Automation.</para>
676 698
677 <para>For more details about the test scenarios from 699 <para>For more details about the test scenarios from
@@ -681,48 +703,50 @@ Check 'test' directory for JSON configuration files</programlisting></para>
681 </section> 703 </section>
682 704
683 <section id="AFTH_automation"> 705 <section id="AFTH_automation">
684 <title>Automation Framework</title> 706 <title>The Automation Framework</title>
685 707
686 <para>The Automation Framework scripts described in the following section are in 708 <para>The Automation Framework scripts described in the following section
687 <literal>&lt;AF-installdir&gt;/automation_framework</literal> directory.</para> 709 are located in the <literal>&lt;AF-installdir&gt;/automation_framework</literal> directory.</para>
688 710
689 <section> 711 <section id="httpclient_class">
690 <title>uCPEMgrHTTPClient</title> 712 <title>The uCPEMgrHTTPClient class</title>
691 713
692 <para>The <literal>uCPEMgrHTTPClient</literal> class is implemented in 714 <para>The <literal>uCPEMgrHTTPClient</literal> class is implemented in the
693 <literal>uCPEMgrHTTPClientRestAPIv2.py</literal> script.</para> 715 <filename>uCPEMgrHTTPClientRestAPIv2.py</filename> script.</para>
694 716
695 <para>The scope of this class is to send REST API requests to Enea Edge Management. 717 <para>The scope of this class is to send REST API requests to the Enea Edge Management application.
696 The methods of <literal>uCPEMgrHTTPClient</literal> class 718 The methods of the <literal>uCPEMgrHTTPClient</literal> class
697 represent REST API calls to Enea Edge Management or ways for creating the 719 represent REST API calls to the Enea Edge Management application or ways for creating the
698 objects that are used as input for sending the request.</para> 720 objects that are used as input for sending the request.</para>
699 721
700 <para>The dictionaries used as payload in REST API requests are created 722 <para>The dictionaries used as the payload in the REST API requests are created
701 in methods from this class. The output of these methods is used as input 723 in methods from this class. The output of these methods is used as input
702 for REST API request payload.</para> 724 for the REST API request payload.</para>
703 725
704 <para>Each method has a short description in the header, as 726 <para>Each method has a short description in the header, as
705 follows:<itemizedlist spacing="compact"> 727 follows:</para>
728
729 <itemizedlist spacing="compact">
706 <listitem> 730 <listitem>
707 <para>the scope of the method</para> 731 <para>The scope of the method</para>
708 </listitem> 732 </listitem>
709 733
710 <listitem> 734 <listitem>
711 <para>the input parameters</para> 735 <para>The input parameters</para>
712 </listitem> 736 </listitem>
713 737
714 <listitem> 738 <listitem>
715 <para>the return value from the source code</para> 739 <para>The return value from the source code</para>
716 </listitem> 740 </listitem>
717 741
718 <listitem> 742 <listitem>
719 <para>the URL for REST API call</para> 743 <para>The URL for the REST API call</para>
720 </listitem> 744 </listitem>
721 745
722 <listitem> 746 <listitem>
723 <para>the payload dictionary for REST API call</para> 747 <para>The payload dictionary for the REST API call</para>
724 </listitem> 748 </listitem>
725 </itemizedlist></para> 749 </itemizedlist>
726 750
727 <para>Other classes from the <literal>automation_framework</literal> 751 <para>Other classes from the <literal>automation_framework</literal>
728 directory inherit this class, and call its methods.</para> 752 directory inherit this class, and call its methods.</para>
@@ -731,46 +755,46 @@ Check 'test' directory for JSON configuration files</programlisting></para>
731 755
732 <orderedlist spacing="compact"> 756 <orderedlist spacing="compact">
733 <listitem> 757 <listitem>
734 <para>uCPE Device functionalities are defined in 758 <para>uCPE Device functionalities are defined in the <literal>uCPEDeviceHandler</literal> class.</para>
735 <literal>uCPEDeviceHandler</literal> class.</para>
736 </listitem> 759 </listitem>
737 760
738 <listitem> 761 <listitem>
739 <para><literal>uCPEDeviceHandler</literal> class inherites 762 <para>The <literal>uCPEDeviceHandler</literal> class inherites the <literal>uCPEMgrHTTPClient</literal> class.</para>
740 <literal>uCPEMgrHTTPClient</literal> class.</para>
741 </listitem> 763 </listitem>
742 764
743 <listitem> 765 <listitem>
744 <para><literal>uCPEDeviceHandler</literal> method calls methods from 766 <para>The <literal>uCPEDeviceHandler</literal> method calls methods from
745 <literal>uCPEMgrHTTPClient</literal> to send requests to Enea Edge Management.</para> 767 <literal>uCPEMgrHTTPClient</literal> to send requests to the Enea Edge Management application.</para>
746 </listitem> 768 </listitem>
747 769
748 <listitem> 770 <listitem>
749 <para>Methods from <literal>uCPEMgrHTTPClient</literal> create the 771 <para>Methods from <literal>uCPEMgrHTTPClient</literal> create the
750 payload dictionary starting from input parameters and send REST API 772 payload dictionary starting from the input parameters and send the REST API
751 request.</para> 773 request.</para>
752 </listitem> 774 </listitem>
753 775
754 <listitem> 776 <listitem>
755 <para>The output of the methods are parsed and analyzed by methods 777 <para>The output of the methods are parsed and analyzed by methods
756 from <literal>uCPEDeviceHandler</literal> class.</para> 778 from the <literal>uCPEDeviceHandler</literal> class.</para>
757 </listitem> 779 </listitem>
758 </orderedlist> 780 </orderedlist>
759 </section> 781 </section>
760 782
761 <section> 783 <section id="mg_functionalities">
762 <title>Handlers for Enea Edge Management Functionalities</title> 784 <title>Handlers for Enea Edge Management Functionalities</title>
763 785
764 <para>In Enea Edge Automation the modules of Enea Edge Management are 786 <para>In Enea Edge Automation the modules of the Enea Edge Management application are
765 represented by Python classes called <literal>Handlers</literal>. Each 787 represented by Python classes called <literal>Handlers</literal>. Each
766 Python class represents a functionality of Enea Edge Management.</para> 788 Python class represents a functionality of the Enea Edge Management application.</para>
767 789
768 <para>These classes are implemented in the Python scripts that have 790 <para>These classes are implemented in the Python scripts that have a
769 <literal>Handler</literal> string included in name. The name of the 791 <literal>Handler</literal> string included in the name. The name of the
770 classes is the same with the name of Python script.</para> 792 classes is the same as the name of Python script.</para>
771 793
772 <para>For the usage of any class, run the Python script with <emphasis 794 <para>For the usage of any class, run the Python script with the <emphasis
773 role="bold">--help</emphasis> option:<programlisting>python automation_framework/uCPEDeviceHandler.py --help 795 role="bold">--help</emphasis> option:</para>
796
797 <programlisting>python automation_framework/uCPEDeviceHandler.py --help
774Usage: uCPEDeviceHandler.py [OPTIONS] [PARAMETERS]... 798Usage: uCPEDeviceHandler.py [OPTIONS] [PARAMETERS]...
775 799
776Options: 800Options:
@@ -781,16 +805,16 @@ Options:
781 argument) 805 argument)
782 806
783 -o, --display_output Display output of the method 807 -o, --display_output Display output of the method
784 --help Show this message and exit.</programlisting></para> 808 --help Show this message and exit.</programlisting>
785 809
786 <para>In <literal>test_harness/&lt;module name&gt;</literal> directory, 810 <para>In the <literal>test_harness/&lt;module name&gt;</literal> directory,
787 the Ansible Playbooks are implemented for running the Python scripts 811 the Ansible Playbooks are implemented for running the Python scripts
788 from Enea Edge Automation. The name of the Ansible Playbooks is the same 812 from Enea Edge Automation. The name of the Ansible Playbooks is the same
789 with the name of the Python method. The Python command is between 813 as the name of the Python method. The Python command is between the
790 <literal>&lt;command&gt; ... &lt;/command&gt;</literal> tags from the 814 <literal>&lt;command&gt; ... &lt;/command&gt;</literal> tags from the
791 <literal>*.yml</literal> files.</para> 815 <literal>*.yml</literal> files.</para>
792 816
793 <section> 817 <section id="mg_functionalities_ucpe">
794 <title>uCPE Device</title> 818 <title>uCPE Device</title>
795 819
796 <para>The Enea Edge Management functionalities for the uCPE Device are 820 <para>The Enea Edge Management functionalities for the uCPE Device are
@@ -798,18 +822,18 @@ Options:
798 822
799 <itemizedlist spacing="compact"> 823 <itemizedlist spacing="compact">
800 <listitem> 824 <listitem>
801 <para><literal>automation_framework/uCPEDeviceHandler.py</literal> 825 <para><filename>automation_framework/uCPEDeviceHandler.py</filename>
802 - <literal>uCPEDeviceHandler</literal> class with methods for 826 - <literal>uCPEDeviceHandler</literal> class with methods for
803 adding a device, removing a device, waiting device to be up, 827 adding a device, removing a device, waiting a device to be up,
804 getting the uCPE Device status, and so on</para> 828 getting the uCPE Device status, and so on.</para>
805 </listitem> 829 </listitem>
806 830
807 <listitem> 831 <listitem>
808 <para><literal>automation_framework/Configuration.py</literal> - 832 <para><filename>automation_framework/Configuration.py</filename> -
809 <literal>Configuration</literal> class with methods for 833 <literal>Configuration</literal> class with methods for
810 configuring the uCPE Device: DPDK, external interface, and OVS 834 configuring the uCPE Device: DPDK, external interface, and OVS
811 bridges. The methods of the <literal>Configuration</literal> class 835 bridges. The methods of the <literal>Configuration</literal> class
812 are used in <literal>uCPEDeviceHandler</literal> and 836 are used in the <literal>uCPEDeviceHandler</literal> and
813 <literal>OfflineConfigHandler</literal> classes.</para> 837 <literal>OfflineConfigHandler</literal> classes.</para>
814 </listitem> 838 </listitem>
815 </itemizedlist> 839 </itemizedlist>
@@ -819,24 +843,24 @@ Options:
819 843
820 <para>The functionalities for <literal>configure external 844 <para>The functionalities for <literal>configure external
821 interfaces</literal>, <literal>configure OVS bridges</literal> can be 845 interfaces</literal>, <literal>configure OVS bridges</literal> can be
822 run:</para> 846 run using the:</para>
823 847
824 <itemizedlist spacing="compact"> 848 <itemizedlist spacing="compact">
825 <listitem> 849 <listitem>
826 <para>using the configuration file from 850 <para>Configuration file located in
827 <literal>modules/enea/config/uCPEDevices</literal>, with the 851 <literal>modules/enea/config/uCPEDevices</literal>, with the
828 <emphasis role="bold">-f</emphasis> option</para> 852 <emphasis role="bold">-f</emphasis> option.</para>
829 </listitem> 853 </listitem>
830 854
831 <listitem> 855 <listitem>
832 <para>using input parameters</para> 856 <para>Input parameters.</para>
833 </listitem> 857 </listitem>
834 </itemizedlist> 858 </itemizedlist>
835 859
836 <para>The <literal>addDevice</literal> and 860 <para>The <literal>addDevice</literal> and
837 <literal>removeDevice</literal> functionalities use the 861 <literal>removeDevice</literal> functionalities use the
838 <literal>modules/enea/config/uCPEDevice/&lt;device_name&gt;/&lt;device_name&gt;.json</literal> 862 <filename>modules/enea/config/uCPEDevice/&lt;device_name&gt;/&lt;device_name&gt;.json</filename>
839 config file, as default.</para> 863 config file, as the default.</para>
840 864
841 <para>The other functionalities can be run using only input 865 <para>The other functionalities can be run using only input
842 parameters.</para> 866 parameters.</para>
@@ -860,115 +884,136 @@ Parameters: name, dpdkType
860addDpdkExternalInterface -f 884addDpdkExternalInterface -f
861modules/enea/config/uCPEDevices/&lt;device_name&gt;/&lt;interface_name&gt;_dpdk_nic.json </programlisting> 885modules/enea/config/uCPEDevices/&lt;device_name&gt;/&lt;interface_name&gt;_dpdk_nic.json </programlisting>
862 886
863 <para><emphasis role="bold">Example:</emphasis><programlisting>python automation_framework/uCPEDeviceHandler.py -d vep1445-8 -m 887 <para><emphasis role="bold">Example:</emphasis></para>
864addDpdkExternalInterface -f modules/enea/config/uCPEDevices/vep1445-8/lan_dpdk_nic.json</programlisting></para> 888
889 <programlisting>python automation_framework/uCPEDeviceHandler.py -d vep1445-8 -m
890addDpdkExternalInterface -f modules/enea/config/uCPEDevices/vep1445-8/lan_dpdk_nic.json</programlisting>
865 891
866 <para>The syntax for running the 892 <para>The syntax for running the
867 <literal>addDpdkExternalInterface</literal> functionality: 893 <literal>addDpdkExternalInterface</literal> functionality:</para>
894
868 <programlisting>python automation_framework/uCPEDeviceHandler.py -d &lt;device_name&gt; -m 895 <programlisting>python automation_framework/uCPEDeviceHandler.py -d &lt;device_name&gt; -m
869addDpdkExternalInterface &lt;interface_name&gt; &lt;dpdk_type&gt;</programlisting></para> 896addDpdkExternalInterface &lt;interface_name&gt; &lt;dpdk_type&gt;</programlisting>
870 897
871 <para><emphasis role="bold">Example:</emphasis><programlisting>python automation_framework/uCPEDeviceHandler.py -d vep1445-8 -m 898 <para><emphasis role="bold">Example:</emphasis></para>
872addDpdkExternalInterface eno4 vfio-pci</programlisting></para> 899
900 <programlisting>python automation_framework/uCPEDeviceHandler.py -d vep1445-8 -m
901addDpdkExternalInterface eno4 vfio-pci</programlisting>
873 </section> 902 </section>
874 903
875 <section> 904 <section id="offline_config_mg_func">
876 <title>Offline config</title> 905 <title>Offline config</title>
877 906
878 <para>The Enea Edge Management functionalities regarding the offline 907 <para>The Enea Edge Management functionalities regarding the offline
879 configuration are implemented as follows:<itemizedlist> 908 configuration are implemented as follows:</para>
909
910<itemizedlist>
880 <listitem> 911 <listitem>
881 <para><literal>automation_framework/OfflineConfigHandler.py</literal> 912 <para><filename>automation_framework/OfflineConfigHandler.py</filename>
882 - <literal>OfflineConfigHandler</literal> class has methods for 913 - <literal>OfflineConfigHandler</literal> class has methods for
883 adding an offline config, removing an offline config, uploading 914 adding an offline config, removing an offline config, uploading
884 an offline config on uCPEDevice, and so on.</para> 915 an offline config on a uCPE Device, and so on.</para>
885 </listitem> 916 </listitem>
886 917
887 <listitem> 918 <listitem>
888 <para><literal>automation_framework/Configuration.py</literal> - 919 <para><filename>automation_framework/Configuration.py</filename> -
889 <literal>Configuration</literal> class has methods for 920 <literal>Configuration</literal> class has methods for
890 configuring the uCPE Device: DPDK, external interface, and OVS 921 configuring the uCPE Device: DPDK, external interface, and OVS
891 bridges. The methods of the <literal>Configuration</literal> 922 bridges. The methods of the <literal>Configuration</literal>
892 class are used in <literal>uCPEDeviceHandler</literal> and 923 class are used in the <literal>uCPEDeviceHandler</literal> and
893 <literal>OfflineConfigHandler</literal> classes.</para> 924 <literal>OfflineConfigHandler</literal> classes.</para>
894 </listitem> 925 </listitem>
895 </itemizedlist></para> 926 </itemizedlist>
896 927
897 <para>The <literal>OfflineConfigHandler</literal> class inherites the 928 <para>The <literal>OfflineConfigHandler</literal> class inherites the
898 <literal>Configuration</literal> class with all its methods.</para> 929 <literal>Configuration</literal> class with all its methods.</para>
899 930
900 <para>The functionalities for <literal>adding offline config 931 <para>The functionalities for the <literal>adding offline config
901 store</literal>, <literal>removing offline config store</literal>, 932 store</literal>, <literal>removing offline config store</literal>,
902 <literal>configuring external interfaces</literal>, 933 <literal>configuring external interfaces</literal>,
903 <literal>configuring OVS bridges</literal> can be run:<itemizedlist 934 <literal>configuring OVS bridges</literal> can be run using the:</para>
935
936<itemizedlist
904 spacing="compact"> 937 spacing="compact">
905 <listitem> 938 <listitem>
906 <para>using the configuration file from 939 <para>Configuration file located in <literal>modules/enea/config/uCPEDevices</literal>.</para>
907 <literal>modules/enea/config/uCPEDevices</literal></para>
908 </listitem> 940 </listitem>
909 941
910 <listitem> 942 <listitem>
911 <para>using input parameters</para> 943 <para>Input parameters.</para>
912 </listitem> 944 </listitem>
913 </itemizedlist></para> 945 </itemizedlist>
914 946
915 <para>The other functionalities can be run using only input 947 <para>The other functionalities can be run using only input
916 parameters.</para> 948 parameters.</para>
917 949
918 <para>To list the implemented methods (functionalities), run the 950 <para>To list the implemented methods (functionalities), run the
919 script with <emphasis role="bold">-v/--verbose</emphasis> 951 script with the <emphasis role="bold">-v/--verbose</emphasis>
920 option:<programlisting>python automation_framework/OfflineConfigHandler.py -v 952 option:</para>
953
954<programlisting>python automation_framework/OfflineConfigHandler.py -v
921Info about OfflineConfigHandler methods 955Info about OfflineConfigHandler methods
922... 956...
923Method: addOfflineConfigStore 957Method: addOfflineConfigStore
924Parameters: version, deviceId, deviceGroupingTags, descr='' 958Parameters: version, deviceId, deviceGroupingTags, descr=''
925...</programlisting></para> 959...</programlisting>
926 960
927 <para>The syntax for running the 961 <para>The syntax for running the
928 <literal>addOfflineConfigStore</literal> using the configuration 962 <literal>addOfflineConfigStore</literal> using the configuration
929 file:<programlisting>python automation_framework/OfflineConfigHandler.py -s &lt;store_name&gt; -m 963 file:</para>
930addOfflineConfigStore -f &lt;path_to_store_configuration_file&gt;</programlisting></para> 964
965<programlisting>python automation_framework/OfflineConfigHandler.py -s &lt;store_name&gt; -m
966addOfflineConfigStore -f &lt;path_to_store_configuration_file&gt;</programlisting>
967
968 <para><emphasis role="bold">Example:</emphasis></para>
931 969
932 <para><emphasis role="bold">Example:</emphasis><programlisting>python automation_framework/OfflineConfigHandler.py -s testOfflienConfig -m 970<programlisting>python automation_framework/OfflineConfigHandler.py -s testOfflienConfig -m
933addOfflineConfigStore -f modules/enea/config/uCPEDevices/test/store.json</programlisting></para> 971addOfflineConfigStore -f modules/enea/config/uCPEDevices/test/store.json</programlisting>
934 972
935 <para>The syntax for running <literal>addOfflineConfigStore</literal> 973 <para>The syntax for running the <literal>addOfflineConfigStore</literal>
936 functionality using input parameters: <literal>version</literal>, 974 functionality using input parameters: <literal>version</literal>,
937 <literal>deviceId</literal>, <literal>deviceGroupingTags</literal>, 975 <literal>deviceId</literal>, <literal>deviceGroupingTags</literal>,
938 <literal>desc</literal>:<programlisting>python automation_framework/OfflineConfigHandler.py -s &lt;store_name&gt; -m 976 <literal>desc</literal>:</para>
939addOfflineConfigStore &lt;version&gt; &lt;deviceId&gt; &lt;deviceGroupingTags&gt;</programlisting></para>
940 977
941 <para><emphasis role="bold">Example:</emphasis><programlisting>python automation_framework/OfflineConfigHandler.py -s testStoreName -m 978<programlisting>python automation_framework/OfflineConfigHandler.py -s &lt;store_name&gt; -m
942addOfflineConfigStore 2.4.0 deviceId customerTag</programlisting></para> 979addOfflineConfigStore &lt;version&gt; &lt;deviceId&gt; &lt;deviceGroupingTags&gt;</programlisting>
980
981 <para><emphasis role="bold">Example:</emphasis></para>
982
983<programlisting>python automation_framework/OfflineConfigHandler.py -s testStoreName -m
984addOfflineConfigStore 2.4.0 deviceId customerTag</programlisting>
943 </section> 985 </section>
944 986
945 <section> 987 <section id="custom_scripts_mg_func">
946 <title>Custom scripts</title> 988 <title>Custom scripts</title>
947 989
948 <para>All the Enea Edge Management functionalities regarding to the custom 990 <para>All the Enea Edge Management functionalities regarding the custom
949 scripts are implemented in <literal>CustomScriptsHandler.py</literal> 991 scripts are implemented in the <filename>CustomScriptsHandler.py</filename>
950 script.</para> 992 script.</para>
951 993
952 <para>The <literal>CustomScriptsHandler</literal> class is implemented 994 <para>The <literal>CustomScriptsHandler</literal> class is implemented
953 in <literal>CustomScriptsHandler.py</literal> script.</para> 995 in <filename>CustomScriptsHandler.py</filename> script.</para>
954 996
955 <para>Examples of custom scripts are in 997 <para>Examples of custom scripts are in the
956 <literal>modules/enea/config/customScripts/ </literal>directory. They 998<literal>modules/enea/config/customScripts/</literal> directory. They
957 can be used when running a Python method from 999 can be used when running a Python method from the <literal>CustomScriptsHandler</literal> class.</para>
958 <literal>CustomScriptsHandler</literal> class.</para>
959 1000
960 <para>To list the implemented methods (functionalities), run the 1001 <para>To list the implemented methods (functionalities), run the
961 script with <emphasis role="bold">-v/--verbose</emphasis> 1002 script with the <emphasis role="bold">-v/--verbose</emphasis>
962 option:<programlisting>python automation_framework/CustomScriptsHandler.py -v 1003 option:</para>
1004
1005<programlisting>python automation_framework/CustomScriptsHandler.py -v
963Info about CustomScriptHandler methods 1006Info about CustomScriptHandler methods
964... 1007...
965Method: uploadCustomScript 1008Method: uploadCustomScript
966Parameters: customScript, phase 1009Parameters: customScript, phase
967...</programlisting></para> 1010...</programlisting>
1011
1012 <para>The syntax for running the <literal>uploadCustomScript</literal>
1013 functionality starting from the input parameters:</para>
968 1014
969 <para>The syntax for running <literal>uploadCustomScript</literal> 1015<programlisting>python automation_framework/CustomScriptsHandler.py -m
970 functionality starting from the input parameters: <programlisting>python automation_framework/CustomScriptsHandler.py -m 1016uploadCustomScript &lt;customScript&gt; &lt;phase&gt;</programlisting>
971uploadCustomScript &lt;customScript&gt; &lt;phase&gt;</programlisting></para>
972 1017
973 <para><emphasis role="bold">Example</emphasis>:</para> 1018 <para><emphasis role="bold">Example</emphasis>:</para>
974 1019
@@ -978,30 +1023,34 @@ modules/enea/config/customScripts/test_fail_after_once once-after-startup</progr
978 <para>All the other methods run in a similar way.</para> 1023 <para>All the other methods run in a similar way.</para>
979 </section> 1024 </section>
980 1025
981 <section> 1026 <section id="device_upgrade_mg_func">
982 <title>Device upgrade</title> 1027 <title>Device upgrade</title>
983 1028
984 <para>The Enea Edge Management functionalities regarding to the uCPE Device 1029 <para>The Enea Edge Management functionalities regarding the uCPE Device
985 upgrade are implemented in <literal>DeviceUpgradeHandler.py</literal> 1030 upgrade are implemented in the <filename>DeviceUpgradeHandler.py</filename>
986 script.</para> 1031 script.</para>
987 1032
988 <para>The <literal>DeviceUpgradeHandler</literal> class is implemented 1033 <para>The <literal>DeviceUpgradeHandler</literal> class is implemented
989 in <literal>DeviceUpgradeHandler.py</literal> script.</para> 1034 in the <filename>DeviceUpgradeHandler.py</filename> script.</para>
990 1035
991 <para>To list the implemented methods (functionalities), run the 1036 <para>To list the implemented methods (functionalities), run the
992 script with <emphasis role="bold">-v/--verbose</emphasis> 1037 script with the <emphasis role="bold">-v/--verbose</emphasis>
993 option:<programlisting>python automation_framework/DeviceUpgradeHandler.py -v 1038 option:</para>
1039
1040<programlisting>python automation_framework/DeviceUpgradeHandler.py -v
994Info about DeviceUpgradeHandler methods 1041Info about DeviceUpgradeHandler methods
995... 1042...
996Method: uploadImage 1043Method: uploadImage
997Parameters: imagePath, type, module='VcpeAgent' 1044Parameters: imagePath, type, module='VcpeAgent'
998...</programlisting></para> 1045...</programlisting>
999 1046
1000 <para>The syntax for running <literal>uploadImage</literal> 1047 <para>The syntax for running the <literal>uploadImage</literal>
1001 functionality starting from the input parameters: <programlisting>python automation_framework/DeviceUpgradeHandler.py -m 1048 functionality starting from the input parameters:</para>
1002uploadImage &lt;imagePath&gt; &lt;type&gt;</programlisting></para>
1003 1049
1004 <para>The default value for <literal>module</literal> is 1050<programlisting>python automation_framework/DeviceUpgradeHandler.py -m
1051uploadImage &lt;imagePath&gt; &lt;type&gt;</programlisting>
1052
1053 <para>The default value for the <literal>module</literal> is
1005 <literal>VcepAgent</literal>, cannot be changed and it is 1054 <literal>VcepAgent</literal>, cannot be changed and it is
1006 ommited.</para> 1055 ommited.</para>
1007 1056
@@ -1013,29 +1062,35 @@ uploadImage &lt;imagePath&gt; &lt;type&gt;</programlisting></para>
1013 <para>All the other methods run in a similar way.</para> 1062 <para>All the other methods run in a similar way.</para>
1014 </section> 1063 </section>
1015 1064
1016 <section> 1065 <section id="vnf_mg_func">
1017 <title>VNF</title> 1066 <title>VNF</title>
1018 1067
1019 <para>The Enea Edge Management functionalities regarding to the VNF are 1068 <para>The Enea Edge Management functionalities regarding the VNF are
1020 implemented in <literal>VNFHandler.py</literal> script.</para> 1069 implemented in the <filename>VNFHandler.py</filename> script.</para>
1021 1070
1022 <para>The <literal>VNFHandler</literal> class is implemented in 1071 <para>The <literal>VNFHandler</literal> class is implemented in
1023 <literal>VNFHandler.py</literal> script.</para> 1072 the <filename>VNFHandler.py</filename> script.</para>
1024 1073
1025 <para>To list the implemented methods (functionalities), run the 1074 <para>To list the implemented methods (functionalities), run the
1026 script with <emphasis role="bold">-v/--verbose</emphasis> 1075 script with the <emphasis role="bold">-v/--verbose</emphasis>
1027 option:<programlisting>python automation_framework/VNFHandler.py -v 1076 option:</para>
1077
1078<programlisting>python automation_framework/VNFHandler.py -v
1028Info about VNFHandler methods 1079Info about VNFHandler methods
1029... 1080...
1030Method: getVNFDescriptorByName 1081Method: getVNFDescriptorByName
1031Parameters: vnfDescriptorName 1082Parameters: vnfDescriptorName
1032...</programlisting></para> 1083...</programlisting>
1084
1085 <para>The syntax for running the <literal>getVNFDescriptorByName</literal>
1086 functionality starting from the input parameters:</para>
1033 1087
1034 <para>The syntax for running <literal>getVNFDescriptorByName</literal> 1088<programlisting>python automation_framework/VNFHandler.py
1035 functionality starting from the input parameters: <programlisting>python automation_framework/VNFHandler.py 1089[-m getVNFDescriptorByName &lt;vnfDescriptorName&gt; [-o]] [-v]</programlisting>
1036[-m getVNFDescriptorByName &lt;vnfDescriptorName&gt; [-o]] [-v]</programlisting></para>
1037 1090
1038 <para>where: <itemizedlist spacing="compact"> 1091 <para>Where the following are included:</para>
1092
1093<itemizedlist spacing="compact">
1039 <listitem> 1094 <listitem>
1040 <para><emphasis role="bold">vnfDescriptorName</emphasis> - name 1095 <para><emphasis role="bold">vnfDescriptorName</emphasis> - name
1041 of the VNF Descriptor</para> 1096 of the VNF Descriptor</para>
@@ -1049,7 +1104,7 @@ Parameters: vnfDescriptorName
1049 <para><emphasis role="bold">o</emphasis> - displays the full 1104 <para><emphasis role="bold">o</emphasis> - displays the full
1050 output</para> 1105 output</para>
1051 </listitem> 1106 </listitem>
1052 </itemizedlist></para> 1107 </itemizedlist>
1053 1108
1054 <para><emphasis>Example:</emphasis></para> 1109 <para><emphasis>Example:</emphasis></para>
1055 1110
@@ -1058,29 +1113,35 @@ Parameters: vnfDescriptorName
1058 <para>All the other methods run in a similar way.</para> 1113 <para>All the other methods run in a similar way.</para>
1059 </section> 1114 </section>
1060 1115
1061 <section> 1116 <section id="mg_funcs">
1062 <title>Enea Edge Management</title> 1117 <title>Enea Edge Management</title>
1063 1118
1064 <para>The functionalities regarding to the Enea Edge Management configuration 1119 <para>The functionalities regarding the Enea Edge Management configuration
1065 are implemented in <literal>uCPEManagerHandler.py</literal> 1120 are implemented in the <filename>uCPEManagerHandler.py</filename>
1066 script.</para> 1121 script.</para>
1067 1122
1068 <para>The <literal>uCPEManagerHandler</literal> class is implemented 1123 <para>The <literal>uCPEManagerHandler</literal> class is implemented
1069 in <literal>uCPEManagerHandler.py</literal> script.</para> 1124 in the <filename>uCPEManagerHandler.py</filename> script.</para>
1070 1125
1071 <para>To list the implemented methods (functionalities), run the 1126 <para>To list the implemented methods (functionalities), run the
1072 script with <emphasis role="bold">-v/--verbose</emphasis> 1127 script with the <emphasis role="bold">-v/--verbose</emphasis>
1073 option:<programlisting>python automation_framework/uCPEManagerHandler.py -v 1128 option:</para>
1129
1130<programlisting>python automation_framework/uCPEManagerHandler.py -v
1074Info about uCPEManagerHandler methods 1131Info about uCPEManagerHandler methods
1075... 1132...
1076Method: getuCPEManagerVersion 1133Method: getuCPEManagerVersion
1077Parameters(not needed): -- 1134Parameters(not needed): --
1078...</programlisting></para> 1135...</programlisting>
1136
1137 <para>The syntax for running the <literal>getuCPEManagerVersion</literal>
1138 functionaltity is:</para>
1079 1139
1080 <para>The syntax for running <literal>getuCPEManagerVersion</literal> 1140<programlisting>python automation_framework/uCPEManagerHandler.py [-m getuCPEManagerVersion [-o]][-v]</programlisting>
1081 functionaltity is:<programlisting>python automation_framework/uCPEManagerHandler.py [-m getuCPEManagerVersion [-o]][-v]</programlisting></para>
1082 1141
1083 <para>where: <itemizedlist spacing="compact"> 1142 <para>Where the following are included:</para>
1143
1144<itemizedlist spacing="compact">
1084 <listitem> 1145 <listitem>
1085 <para><emphasis role="bold">v</emphasis> - verbose option</para> 1146 <para><emphasis role="bold">v</emphasis> - verbose option</para>
1086 </listitem> 1147 </listitem>
@@ -1089,41 +1150,42 @@ Parameters(not needed): --
1089 <para><emphasis role="bold">o</emphasis> - displays the full 1150 <para><emphasis role="bold">o</emphasis> - displays the full
1090 output</para> 1151 output</para>
1091 </listitem> 1152 </listitem>
1092 </itemizedlist></para> 1153 </itemizedlist>
1093 1154
1094 <para>All the other methods run in a similar way.</para> 1155 <para>All the other methods run in a similar way.</para>
1095 </section> 1156 </section>
1096 </section> 1157 </section>
1097 1158
1098 <section> 1159 <section id="auxiliar_classes">
1099 <title>Auxiliar classes</title> 1160 <title>Auxiliar classes</title>
1100 1161
1101 <section> 1162 <section id="config_class">
1102 <title>Configuration</title> 1163 <title>The Configuration class</title>
1103 1164
1104 <para>The <literal>Configuration</literal> class is implemented in 1165 <para>The <literal>Configuration</literal> class is implemented in
1105 <literal>Configuration.py</literal> script. The 1166 the <filename>Configuration.py</filename> script. The
1106 <literal>Configuration</literal> class cannot be independently 1167 <literal>Configuration</literal> class cannot be independently
1107 used.</para> 1168 used.</para>
1108 1169
1109 <para>The <literal>uCPEDeviceHandler</literal> and 1170 <para>The <literal>uCPEDeviceHandler</literal> and
1110 <literal>OfflineConfigHandler</literal> classes inherits 1171 <literal>OfflineConfigHandler</literal> classes inherit the <literal>Configuration</literal> class. The methods should be
1111 <literal>Configuration</literal> class. The methods should be
1112 implemented for both functionalities: uCPE Device and Offline 1172 implemented for both functionalities: uCPE Device and Offline
1113 config.</para> 1173 config.</para>
1114 </section> 1174 </section>
1115 1175
1116 <section> 1176 <section id="logger_class">
1117 <title>Logger</title> 1177 <title>The Logger Class</title>
1118 1178
1119 <para>The <literal>Logger</literal> class is implemented in 1179 <para>The <literal>Logger</literal> class is implemented in
1120 <literal>Logger.py</literal> script. It is inherited in all the 1180 the <filename>Logger.py</filename> script. It is inherited in all the
1121 classes defined in <literal>automation_framework</literal>.</para> 1181 classes defined in <literal>automation_framework</literal>.</para>
1122 1182
1123 <para>This class defines a logger for displaying the logs from Python 1183 <para>This class defines a logger for displaying the logs from Python
1124 scripts, in console log and file log.</para> 1184 scripts, in console log and file log.</para>
1125 1185
1126 <para>For console log, the logger has:<itemizedlist spacing="compact"> 1186 <para>For console log, the logger has:</para>
1187
1188 <itemizedlist spacing="compact">
1127 <listitem> 1189 <listitem>
1128 <para>Default severity: <literal>INFO</literal></para> 1190 <para>Default severity: <literal>INFO</literal></para>
1129 </listitem> 1191 </listitem>
@@ -1132,9 +1194,11 @@ Parameters(not needed): --
1132 <para>Format of the logs: <literal>[datetime] [severity] 1194 <para>Format of the logs: <literal>[datetime] [severity]
1133 message</literal></para> 1195 message</literal></para>
1134 </listitem> 1196 </listitem>
1135 </itemizedlist></para> 1197 </itemizedlist>
1136 1198
1137 <para>For file log, the logger has:<itemizedlist spacing="compact"> 1199 <para>For file log, the logger has:</para>
1200
1201 <itemizedlist spacing="compact">
1138 <listitem> 1202 <listitem>
1139 <para>Logs path: <literal>log/debug.log</literal></para> 1203 <para>Logs path: <literal>log/debug.log</literal></para>
1140 </listitem> 1204 </listitem>
@@ -1147,23 +1211,25 @@ Parameters(not needed): --
1147 <para>Format of the logs: <literal>[severity] 1211 <para>Format of the logs: <literal>[severity]
1148 [name_of_Python_script] message</literal></para> 1212 [name_of_Python_script] message</literal></para>
1149 </listitem> 1213 </listitem>
1150 </itemizedlist></para> 1214 </itemizedlist>
1151 </section> 1215 </section>
1152 </section> 1216 </section>
1153 </section> 1217 </section>
1154 1218
1155 <section id="AFTH_test"> 1219 <section id="AFTH_test">
1156 <title>Test Harness</title> 1220 <title>Test Harness</title>
1221
1157 <para>The Test Harness sources are in the 1222 <para>The Test Harness sources are in the
1158 <literal>&lt;AF-installdir&gt;/test_harness</literal> directory.</para> 1223 <literal>&lt;AF-installdir&gt;/test_harness</literal> directory.</para>
1159 <section> 1224
1225 <section id="indiv_ansible_playbooks">
1160 <title>Individual Ansible Playbooks</title> 1226 <title>Individual Ansible Playbooks</title>
1161 1227
1162 <para>The Ansible based Test Harness represents an example of 1228 <para>The Ansible based Test Harness represents an example of
1163 structuring the files needed for creating automated test cases using the 1229 structuring the files needed for creating automated test cases using the
1164 Enea Edge Automation, and provides a way to implement them.</para> 1230 Enea Edge Automation, and provides a way to implement them.</para>
1165 1231
1166 <para>The <literal>ansible.cfg</literal> file contains an example of the 1232 <para>The <filename>ansible.cfg</filename> file contains an example of the
1167 Ansible default configuration. The default value for 1233 Ansible default configuration. The default value for
1168 <literal>stdout_callback</literal> is set to 1234 <literal>stdout_callback</literal> is set to
1169 <literal>selective</literal>, to print only certain tasks. It is 1235 <literal>selective</literal>, to print only certain tasks. It is
@@ -1172,54 +1238,58 @@ Parameters(not needed): --
1172 <literal>True</literal>, task failures are considered fatal errors and 1238 <literal>True</literal>, task failures are considered fatal errors and
1173 the play execution stops.</para> 1239 the play execution stops.</para>
1174 1240
1175 <para>All the Playbooks that execute Automation Framework Python modules run on localhost. 1241 <para>All the Playbooks that execute Automation Framework Python modules run on <literal>localhost</literal>.
1176 New entries have to be created for direct communication over SSH with 1242 New entries have to be created for direct communication over SSH with
1177 the boards.</para> 1243 the boards.</para>
1178 1244
1179 <para>The <literal>setup_env.sh</literal> script sets up the 1245 <para>The <filename>setup_env.sh</filename> script sets up the
1180 <literal>testHarness</literal> test environment by creating 1246 <literal>testHarness</literal> test environment by creating
1181 <literal>testHarness-venv</literal> Python virtual environment, 1247 the <literal>testHarness-venv</literal> Python virtual environment,
1182 executing requests needed by Automation Framework Python modules, and 1248 executing requests needed by Automation Framework Python modules, and
1183 installing Ansible. The Ansible package version is 2.9.6.</para> 1249 installing Ansible. The Ansible package version is 2.9.6.</para>
1184 1250
1185 <para>The <literal>test_harness</literal> directory contains all the 1251 <para>The <literal>test_harness</literal> directory contains all the
1186 implemented Ansible Playbooks. This directory contains 1252 implemented Ansible Playbooks. This directory contains
1187 <literal>check_errror.yml</literal> Playbook and many subdirectories, 1253 the <filename>check_errror.yml</filename> Playbook and many subdirectories,
1188 each subdirectory representing an Enea Edge Management module.</para> 1254 each subdirectory representing an Enea Edge Management module.</para>
1189 1255
1190 <para>The <literal>check_errors.yml</literal> Playbook checks the Python 1256 <para>The <filename>check_errors.yml</filename> Playbook checks the Python
1191 output and returns success or fail results. This file is imported in all 1257 output and returns success or fail results. This file is imported in all
1192 playbooks from <literal>test_harness</literal> directory and it can not 1258 playbooks from the <literal>test_harness</literal> directory and it cannot
1193 be run standalone.</para> 1259 be run standalone.</para>
1194 1260
1195 <para>According to their functionality, the Ansible Playbooks that 1261 <para>According to their functionality, the Ansible Playbooks that
1196 refers to offline configuration are in <literal>OfflineConfig</literal> 1262 refer to offline configuration are in the <literal>OfflineConfig</literal>
1197 directory, the ones that refers to <literal>CustomScript</literal> are 1263 directory, the ones that refers to <literal>CustomScript</literal> are
1198 in <literal>CustomScripts</literal>, and so on.</para> 1264 in the <literal>CustomScripts</literal>, and so on.</para>
1199 1265
1200 <para>Each Ansible Playbook has a help menu:<itemizedlist 1266 <para>Each Ansible Playbook has a help menu for:</para>
1267
1268 <itemizedlist
1201 spacing="compact"> 1269 spacing="compact">
1202 <listitem> 1270 <listitem>
1203 <para>for returning the syntax, and examples for running the 1271 <para>Returning the syntax, and examples for running the
1204 Playbook</para> 1272 Playbook.</para>
1205 </listitem> 1273 </listitem>
1206 1274
1207 <listitem> 1275 <listitem>
1208 <para>for warning, if the input parameters are wrong or not 1276 <para>Warning if the input parameters are wrong or not
1209 enough. The input parameters are called extra-vars in Ansible 1277 enough. The input parameters are called <literal>extra-vars</literal> in Ansible
1210 playbooks.</para> 1278 playbooks.</para>
1211 </listitem> 1279 </listitem>
1212 </itemizedlist></para> 1280 </itemizedlist>
1213 1281
1214 <para>The help menu is activated when the Playbook is run without any 1282 <para>The help menu is activated when the Playbook is run without any
1215 parameter.</para> 1283 parameters.</para>
1216 1284
1217 <para><emphasis role="bold">Example</emphasis>:</para> 1285 <para><emphasis role="bold">Example</emphasis>:</para>
1218 1286
1219 <orderedlist> 1287 <orderedlist>
1220 <listitem> 1288 <listitem>
1221 <para>Display the help menu for 1289 <para>Display the help menu for
1222 <literal>addDataPlaneOvsBridge.yml</literal><programlisting>ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml 1290 <filename>addDataPlaneOvsBridge.yml</filename>:</para>
1291
1292<programlisting>ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml
1223 1293
1224This playbook runs 'addDataPlaneOvsBridge' method from uCPEDeviceHandler module 1294This playbook runs 'addDataPlaneOvsBridge' method from uCPEDeviceHandler module
1225 1295
@@ -1246,12 +1316,14 @@ Usage:
1246 "device=&lt;device_name&gt; bridge_name=&lt;bridge_name&gt; bridge_type=communication" 1316 "device=&lt;device_name&gt; bridge_name=&lt;bridge_name&gt; bridge_type=communication"
1247 ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e 1317 ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e
1248 "device=&lt;device_name&gt; bridge_name=&lt;bridge_name&gt; bridge_type=communication 1318 "device=&lt;device_name&gt; bridge_name=&lt;bridge_name&gt; bridge_type=communication
1249 interfaces=&lt;interfaces&gt;"</programlisting></para> 1319 interfaces=&lt;interfaces&gt;"</programlisting>
1250 </listitem> 1320 </listitem>
1251 1321
1252 <listitem> 1322 <listitem>
1253 <para>Run the <literal>addDataPlaneOvsBridge.yml</literal> 1323 <para>Run the <filename>addDataPlaneOvsBridge.yml</filename>
1254 playbook<programlisting>ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e 1324 playbook:</para>
1325
1326<programlisting>ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e
1255"device=inteld1521-17 bridge_config_file=sfc_br.json" 1327"device=inteld1521-17 bridge_config_file=sfc_br.json"
1256ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e 1328ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e
1257"device=inteld1521-17 bridge_config_file=lan_br.json" 1329"device=inteld1521-17 bridge_config_file=lan_br.json"
@@ -1264,102 +1336,105 @@ ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e
1264interfaces=eno4" 1336interfaces=eno4"
1265ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e 1337ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e
1266"device=inteld1521-17 bridge_name=lan_br bridge_type=communication 1338"device=inteld1521-17 bridge_name=lan_br bridge_type=communication
1267interfaces=eno4,eno5"</programlisting></para> 1339interfaces=eno4,eno5"</programlisting>
1268 </listitem> 1340 </listitem>
1269 </orderedlist> 1341 </orderedlist>
1270 1342
1271 <para>Each Ansible Playbook from <literal>test_harness</literal> 1343 <para>Each Ansible Playbook from the <literal>test_harness</literal>
1272 directory represents an atomic operation, a basic functionality that is 1344 directory represents an atomic operation, a basic functionality that is
1273 performed on the Enea Edge Management at a specific period of the time. They can 1345 performed on the Enea Edge Management application at a specific period of the time. They can
1274 be sequentially run or they can be imported in other playbooks for 1346 be sequentially run or they can be imported into other playbooks for
1275 creating complex scenario.</para> 1347 creating complex scenarios.</para>
1276 1348
1277 <para><emphasis role="bold">Example:</emphasis></para> 1349 <para><emphasis role="bold">Example:</emphasis></para>
1278 1350
1279 <para>For instantiating a VNF, the following operations has to be 1351 <para>To instantiate a VNF, the following operations have to be
1280 performed: to connect to the uCPE Device, to bind NICs, to create OVS 1352 performed: connect to the uCPE Device, bind NICs, create an OVS
1281 bridge, to create VNF descriptor, and to instantiate the VNF on the 1353 bridge, create a VNF descriptor, and instantiate the VNF on the
1282 device. All these operations can be run Playbook after Playbook using 1354 device. All these operations can be run Playbook after Playbook using
1283 <literal>*.yml</literal> files from <literal>test_harness</literal> 1355 the <literal>*.yml</literal> files from the <literal>test_harness</literal>
1284 directory.</para> 1356 directory.</para>
1285 </section> 1357 </section>
1286 1358
1287 <section> 1359 <section id="test_scenario">
1288 <title>Test Scenario</title> 1360 <title>Test Scenario</title>
1289 1361
1290 <para>All the individual Playbooks can be used as imported Playbooks in 1362 <para>All the individual Playbooks can be used as imported Playbooks in
1291 complex test scenario.</para> 1363 complex test scenarios.</para>
1292 1364
1293 <para>The complex scenarios are defined in: 1365 <para>The complex scenarios are defined in: <literal>modules/enea/scenario</literal>.</para>
1294 <literal>modules/enea/scenario</literal>.</para>
1295 1366
1296 <para>The test scenarios are split in:<itemizedlist spacing="compact"> 1367 <para>The test scenarios are split into the following:</para>
1368
1369 <itemizedlist spacing="compact">
1297 <listitem> 1370 <listitem>
1298 <para>Functionalities to be tested and used: 1371 <para>Functionalities to be tested and used: the
1299 <literal>CustomScripts, OfflineConfig, ovsTests</literal> 1372 <literal>CustomScripts, OfflineConfig, ovsTests</literal>
1300 directories</para> 1373 directories.</para>
1301 </listitem> 1374 </listitem>
1302 1375
1303 <listitem> 1376 <listitem>
1304 <para>Service Creation and Lifecycle: 1377 <para>Service Creation and Lifecycle:
1305 <literal>chainedVNFsService</literal> directory</para> 1378 the <literal>chainedVNFsService</literal> directory.</para>
1306 </listitem> 1379 </listitem>
1307 1380
1308 <listitem> 1381 <listitem>
1309 <para>VNF Deployment and Lifecycle: 1382 <para>VNF Deployment and Lifecycle:
1310 <literal>fortigateFWService</literal> directory</para> 1383 the <literal>fortigateFWService</literal> directory.</para>
1311 </listitem> 1384 </listitem>
1312 </itemizedlist></para> 1385 </itemizedlist>
1313 1386
1314 <para>For each test scenario, the <literal>README</literal> file 1387 <para>For each test scenario, the <literal>README</literal> file
1315 contains:<itemizedlist> 1388 contains:</para>
1389
1390 <itemizedlist>
1316 <listitem> 1391 <listitem>
1317 <para>Preconditions: <itemizedlist spacing="compact"> 1392 <para>Preconditions:</para>
1318 <listitem> 1393
1319 <para>the configuration files to be updated</para> 1394 <itemizedlist spacing="compact">
1320 </listitem>
1321
1322 <listitem> 1395 <listitem>
1323 <para>the VNF images to be copied</para> 1396 <para>The configuration files to be updated</para>
1324 </listitem> 1397 </listitem>
1325 1398
1326 <listitem> 1399 <listitem>
1327 <para>the license needed from the provider and added to a 1400 <para>The VNF images to be copied</para>
1328 specific path</para>
1329 </listitem> 1401 </listitem>
1330 1402
1331 <listitem> 1403 <listitem>
1332 <para>and so on</para> 1404 <para>The license file needed from the provider and added to a
1405 specific path, etc.</para>
1333 </listitem> 1406 </listitem>
1334 </itemizedlist></para> 1407 </itemizedlist>
1335 </listitem> 1408 </listitem>
1336 1409
1337 <listitem> 1410 <listitem>
1338 <para>Running procedures:<itemizedlist spacing="compact"> 1411 <para>Running procedures:</para>
1412
1413 <itemizedlist spacing="compact">
1339 <listitem> 1414 <listitem>
1340 <para>the <literal>ansible-playbook</literal> commands for 1415 <para>The <literal>ansible-playbook</literal> commands for
1341 setup the configuration</para> 1416 setup the configuration</para>
1342 </listitem> 1417 </listitem>
1343 1418
1344 <listitem> 1419 <listitem>
1345 <para>testing the configuration</para> 1420 <para>Testing the configuration</para>
1346 </listitem> 1421 </listitem>
1347 1422
1348 <listitem> 1423 <listitem>
1349 <para>cleaning up the configuration</para> 1424 <para>Cleaning up the configuration</para>
1350 </listitem> 1425 </listitem>
1351 </itemizedlist></para> 1426 </itemizedlist>
1352 </listitem> 1427 </listitem>
1353 </itemizedlist></para> 1428 </itemizedlist>
1354 1429
1355 <para>The test scenarios have <literal>variable.yml</literal> file that 1430 <para>The test scenarios have the <filename>variable.yml</filename> file that
1356 contains the input parameters for the Playbooks. These variables can be 1431 contains the input parameters for the Playbooks. These variables can be
1357 reused when the same setup is run on another device.</para> 1432 reused when the same setup is run on another device.</para>
1358 1433
1359 <para><emphasis role="bold">Example:</emphasis></para> 1434 <para><emphasis role="bold">Example:</emphasis></para>
1360 1435
1361 <para>For the <literal>fortigateFWService</literal> scenario, the 1436 <para>For the <literal>fortigateFWService</literal> scenario, the
1362 <literal>variable.yml</literal> has the following content:</para> 1437 <filename>variable.yml</filename> file has the following content:</para>
1363 1438
1364 <programlisting>vnf_image_path: "modules/enea/VNF_images/fortios.qcow2" 1439 <programlisting>vnf_image_path: "modules/enea/VNF_images/fortios.qcow2"
1365vnfd_config_file: "modules/enea/config/VNF/fortigateImage/fortigateImage.json" 1440vnfd_config_file: "modules/enea/config/VNF/fortigateImage/fortigateImage.json"
@@ -1372,65 +1447,66 @@ vnfi_name: "fortigateFWInstance"</programlisting>
1372 <section id="AFTH_pyton"> 1447 <section id="AFTH_pyton">
1373 <title>Python Unit-Test Suite</title> 1448 <title>Python Unit-Test Suite</title>
1374 1449
1375 <para>The <literal>unit-test</literal> suite is implemented in 1450 <para>The <literal>unit-test</literal> suite is implemented in the
1376 <literal>unit_tests</literal> directory.</para> 1451 <literal>unit_tests</literal> directory.</para>
1377 1452
1378 <para>The <literal>unit-test</literal> suite contains 1453 <para>The <literal>unit-test</literal> suite contains the
1379 <literal>unit-test</literal> class defined in the 1454 <literal>unit-test</literal> class defined in <filename>unittestSuite.py</filename>, and examples of JSON configuration
1380 <literal>unittestSuite.py </literal>, and examples of JSON configuration 1455 files that can be used for the execution of AF Python classes from the
1381 files that can be used for the execution of AF Python classes from 1456 <literal>automation_framework</literal> directory.</para>
1382 automation_framework.</para>
1383 1457
1384 <para>The Python <literal>unit-test</literal> class defined in the 1458 <para>The Python <literal>unit-test</literal> class defined in the
1385 <literal>unittestSuite.py</literal> script provides a way to automate the 1459 <filename>unittestSuite.py</filename> script provides a way to automate the execution of
1386 execution of specific test cases for each supported Python script.</para> 1460 specific test cases for each supported Python script.</para>
1387 1461
1388 <para>This class requires a test suite configuration JSON file that 1462 <para>This class requires a test suite configuration JSON file that
1389 contains a dictionary list of the Python scripts to be processed. Each 1463 contains a dictionary list of the Python scripts to be processed. Each dictionary contains the
1390 dictionary contains the path of the Python script to be loaded and the 1464 path of the Python script to be loaded and the path to the file describing the test cases to
1391 path to the file describing the test cases to be performed against the 1465 be performed against the designated script.</para>
1392 designated script.</para>
1393 1466
1394 <para>Python <literal>unit-test</literal> suite examples are in the 1467 <para>Python <literal>unit-test</literal> suite examples are in the
1395 <literal>unit_tests/scenario</literal> directory.</para> 1468 <literal>unit_tests/scenario</literal> directory.</para>
1396 1469
1397 <para>Each scenario has 3 parts:<itemizedlist spacing="compact"> 1470 <para>Each scenario has 3 parts:</para>
1471
1472 <itemizedlist spacing="compact">
1398 <listitem> 1473 <listitem>
1399 <para><literal>README</literal> - explains the needed prerequisites 1474 <para><literal>README</literal> - explains the prerequisites needed before running the
1400 before running Python <literal>unit-test</literal> suite</para> 1475 Python <literal>unit-test</literal> suite.</para>
1401 </listitem> 1476 </listitem>
1402 1477
1403 <listitem> 1478 <listitem>
1404 <para><literal>config</literal> - contains a JSON file for each 1479 <para><literal>config</literal> - contains a JSON file for each
1405 functionality that is used in scenario. The JSON files have two 1480 functionality that is used in the specified scenario. The JSON files have two keys:</para>
1406 keys:<itemizedlist spacing="compact"> 1481
1482 <itemizedlist spacing="compact">
1407 <listitem> 1483 <listitem>
1408 <para>name: The description of the functionality</para> 1484 <para>name: The description of the functionality.</para>
1409 </listitem> 1485 </listitem>
1410 1486
1411 <listitem> 1487 <listitem>
1412 <para>args: The arguments of the Python module</para> 1488 <para>args: The arguments of the Python module.</para>
1413 </listitem> 1489 </listitem>
1414 </itemizedlist></para> 1490 </itemizedlist>
1415 </listitem> 1491 </listitem>
1416 1492
1417 <listitem> 1493 <listitem>
1418 <para><literal>JSON</literal> - used for running the scenario. Each 1494 <para><literal>JSON</literal> - used for running the scenario. Each JSON file contains
1419 JSON file contains the calls to the JSON files from config 1495 the calls to the JSON files from the <literal>config</literal> directory, and has two keys:</para>
1420 directory, and has two keys:<itemizedlist spacing="compact"> 1496
1497 <itemizedlist spacing="compact">
1421 <listitem> 1498 <listitem>
1422 <para>config: The JSON file from config directory that is 1499 <para>config: The JSON file from the <literal>config</literal> directory that is used.</para>
1423 used</para>
1424 </listitem> 1500 </listitem>
1425 1501
1426 <listitem> 1502 <listitem>
1427 <para>module: The Python module that is run</para> 1503 <para>module: The Python module that is run.</para>
1428 </listitem> 1504 </listitem>
1429 </itemizedlist></para> 1505 </itemizedlist>
1430 </listitem> 1506 </listitem>
1431 </itemizedlist></para> 1507 </itemizedlist>
1432 1508
1433 <para>Steps for running the Python unit-test suite on the Enea Edge Management are 1509 <para>Steps for running the Python unit-test suite on the Enea Edge Management application are
1434 provided in the <literal>README</literal> from scenario.</para> 1510 provided in the <literal>README</literal> file from scenario in use.</para>
1435 </section> 1511 </section>
1436</chapter> \ No newline at end of file 1512</chapter> \ No newline at end of file
diff --git a/doc/book-enea-edge-automation-user-guide/doc/components.xml b/doc/book-enea-edge-automation-user-guide/doc/components.xml
index d2538b8..613644a 100644
--- a/doc/book-enea-edge-automation-user-guide/doc/components.xml
+++ b/doc/book-enea-edge-automation-user-guide/doc/components.xml
@@ -24,7 +24,7 @@
24 24
25 <para>For more details about Enea Edge Management installation, see <olink 25 <para>For more details about Enea Edge Management installation, see <olink
26 targetdoc="book_enea_edge_getting_started" 26 targetdoc="book_enea_edge_getting_started"
27 targetptr="install_ucpe_mg">Installing the Enea Edge Management in the 27 targetptr="install_ucpe_mg">Installing the Enea Edge Management application in the
28 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml" 28 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
29 xmlns:xi="http://www.w3.org/2001/XInclude" 29 xmlns:xi="http://www.w3.org/2001/XInclude"
30 xpointer="element(book_enea_edge_getting_started/1)" /></olink> 30 xpointer="element(book_enea_edge_getting_started/1)" /></olink>
@@ -36,10 +36,10 @@
36 36
37 <para>One or more uCPE devices running the Enea Edge Runtime 37 <para>One or more uCPE devices running the Enea Edge Runtime
38 are required as hosts, to run the VNFs. The uCPE device is 38 are required as hosts, to run the VNFs. The uCPE device is
39 known to the Enea Edge Management as the <literal>VcpeAgent</literal> device 39 known to the Enea Edge Management application as the <literal>VcpeAgent</literal> device
40 module.</para> 40 module.</para>
41 41
42 <para>Before running any use case with the Enea Edge Automation, the uCPE devices have to be added to the Enea Edge Management.</para> 42 <para>Before running any use case with the Enea Edge Automation, the uCPE devices have to be added to the Enea Edge Management application.</para>
43 43
44 <para>Adding a <literal>VcpeAgent</literal> device can be done:</para> 44 <para>Adding a <literal>VcpeAgent</literal> device can be done:</para>
45 45
@@ -62,15 +62,18 @@
62 xpointer="element(book_enea_edge_getting_started/1)" /></olink> 62 xpointer="element(book_enea_edge_getting_started/1)" /></olink>
63 Manual.</para> 63 Manual.</para>
64 </section> 64 </section>
65
65 <section id="automation"> 66 <section id="automation">
66 <title>Enea Edge Automation</title> 67 <title>Enea Edge Automation</title>
68
67 <para>Enea Edge Automation has two compoments: Automation Framework and Test Harness. 69 <para>Enea Edge Automation has two compoments: Automation Framework and Test Harness.
68 It provides Python scripts using Enea Edge Management REST API and Ansible Playbooks.</para> 70 It provides Python scripts using Enea Edge Management REST API and Ansible Playbooks.</para>
71
69 <para>The Automation Framework component provides a Python unit-test suite that runs automatically the 72 <para>The Automation Framework component provides a Python unit-test suite that runs automatically the
70 test-cases defined for each Python script.</para> 73 test-cases defined for each Python script.</para>
71 74
72 <para>It is recommended to use a different host for running the tests, in 75 <para>It is recommended to use a different host for running the tests, in
73 order to allow external users to access and use the Enea Edge Management 76 order to allow external users to access and use the Enea Edge Management application
74 effectively.</para> 77 effectively.</para>
75 78
76 <para>The Test Harness component provides a way for driving configuration with 79 <para>The Test Harness component provides a way for driving configuration with
diff --git a/doc/book-enea-edge-automation-user-guide/doc/getting_started.xml b/doc/book-enea-edge-automation-user-guide/doc/getting_started.xml
index 9ac6829..27979cc 100644
--- a/doc/book-enea-edge-automation-user-guide/doc/getting_started.xml
+++ b/doc/book-enea-edge-automation-user-guide/doc/getting_started.xml
@@ -1,15 +1,17 @@
1<?xml version="1.0" encoding="ISO-8859-1"?> 1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="getting_started"> 2<chapter id="getting_started">
3 <title>Getting Started with the Enea Edge Automation</title> 3 <title>Getting Started with Enea Edge Automation</title>
4 4
5 <section id="envrion"> 5 <section id="envrion">
6 <title>Environment</title> 6 <title>Environment</title>
7 7
8 <para>There are two scenarios for the setup:</para> 8 <para>There are two scenarios for a proper setup:</para>
9 9
10 <itemizedlist spacing="compact"> 10 <itemizedlist spacing="compact">
11 <listitem> 11 <listitem>
12 <para>Basic Setup<figure> 12 <para>Basic Setup</para>
13
14 <figure>
13 <title>Lab setup overview for Basic Setup</title> 15 <title>Lab setup overview for Basic Setup</title>
14 16
15 <mediaobject> 17 <mediaobject>
@@ -18,11 +20,13 @@
18 fileref="images/environment_basicsetup.png" /> 20 fileref="images/environment_basicsetup.png" />
19 </imageobject> 21 </imageobject>
20 </mediaobject> 22 </mediaobject>
21 </figure></para> 23 </figure>
22 </listitem> 24 </listitem>
23 25
24 <listitem> 26 <listitem>
25 <para>Chained VNFs Service <figure> 27 <para>Chained VNFs Service</para>
28
29 <figure>
26 <title>Lab Setup Overview for Chained VNFs Service</title> 30 <title>Lab Setup Overview for Chained VNFs Service</title>
27 31
28 <mediaobject> 32 <mediaobject>
@@ -31,7 +35,7 @@
31 fileref="images/ChainedVNFsService_setup.png" /> 35 fileref="images/ChainedVNFsService_setup.png" />
32 </imageobject> 36 </imageobject>
33 </mediaobject> 37 </mediaobject>
34 </figure></para> 38 </figure>
35 </listitem> 39 </listitem>
36 </itemizedlist> 40 </itemizedlist>
37 41
@@ -40,7 +44,9 @@
40 44
41 <itemizedlist> 45 <itemizedlist>
42 <listitem> 46 <listitem>
43 <para>Lab Network Requirements<itemizedlist spacing="compact"> 47 <para>Lab Network Requirements:</para>
48
49 <itemizedlist spacing="compact">
44 <listitem> 50 <listitem>
45 <para>DHCP enabled</para> 51 <para>DHCP enabled</para>
46 </listitem> 52 </listitem>
@@ -48,34 +54,37 @@
48 <listitem> 54 <listitem>
49 <para>Internet connectivity</para> 55 <para>Internet connectivity</para>
50 </listitem> 56 </listitem>
51 </itemizedlist></para> 57 </itemizedlist>
52 </listitem> 58 </listitem>
53 59
54 <listitem> 60 <listitem>
55 <para>Enea Edge Management Host Requirements<itemizedlist spacing="compact"> 61 <para>Enea Edge Management Host Requirements:</para>
62
63 <itemizedlist spacing="compact">
56 <listitem> 64 <listitem>
57 <para>CentOS 7 installed</para> 65 <para>CentOS 7 installed</para>
58 </listitem> 66 </listitem>
59 67
60 <listitem> 68 <listitem>
61 <para>Connection to the Lab Network</para> 69 <para>A connection to the Lab Network</para>
62 </listitem> 70 </listitem>
63 71
64 <listitem> 72 <listitem>
65 <para>Enea Edge Management installed. For details, see <olink 73 <para>The Enea Edge Management application installed. For details, see <olink
66 targetdoc="book_enea_edge_getting_started" 74 targetdoc="book_enea_edge_getting_started"
67 targetptr="install_ucpe_mg">Installing the Enea Edge Management in the 75 targetptr="install_ucpe_mg">Installing the Enea Edge Management application in the
68 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml" 76 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
69 xmlns:xi="http://www.w3.org/2001/XInclude" 77 xmlns:xi="http://www.w3.org/2001/XInclude"
70 xpointer="element(book_enea_edge_getting_started/1)" /></olink> 78 xpointer="element(book_enea_edge_getting_started/1)" /></olink>
71 Manual.</para> 79 Manual.</para>
72 </listitem> 80 </listitem>
73 </itemizedlist></para> 81 </itemizedlist>
74 </listitem> 82 </listitem>
75 83
76 <listitem> 84 <listitem>
77 <para>uCPE device Requirements for Basic Setup<itemizedlist 85 <para>uCPE device Requirements for Basic Setup:</para>
78 spacing="compact"> 86
87 <itemizedlist spacing="compact">
79 <listitem> 88 <listitem>
80 <para>Minimum of 4 Physical Network Devices</para> 89 <para>Minimum of 4 Physical Network Devices</para>
81 </listitem> 90 </listitem>
@@ -99,12 +108,14 @@
99 xpointer="element(book_enea_edge_getting_started/1)" /></olink> 108 xpointer="element(book_enea_edge_getting_started/1)" /></olink>
100 Manual.</para> 109 Manual.</para>
101 </listitem> 110 </listitem>
102 </itemizedlist></para> 111 </itemizedlist>
103 </listitem> 112 </listitem>
104 113
105 <listitem> 114 <listitem>
106 <para>uCPE device 1 and 2 Requirements for Chained VNFs 115 <para>uCPE device 1 and 2 Requirements for Chained VNFs
107 Service<itemizedlist spacing="compact"> 116 Service:</para>
117
118 <itemizedlist spacing="compact">
108 <listitem> 119 <listitem>
109 <para>Minimum of 4 Physical Network Devices</para> 120 <para>Minimum of 4 Physical Network Devices</para>
110 </listitem> 121 </listitem>
@@ -125,7 +136,7 @@
125 <listitem> 136 <listitem>
126 <para>Enea Edge Runtime installed</para> 137 <para>Enea Edge Runtime installed</para>
127 </listitem> 138 </listitem>
128 </itemizedlist></para> 139 </itemizedlist>
129 </listitem> 140 </listitem>
130 </itemizedlist> 141 </itemizedlist>
131 </section> 142 </section>
@@ -142,20 +153,26 @@
142 </listitem> 153 </listitem>
143 154
144 <listitem> 155 <listitem>
145 <para>EPEL Repository<programlisting>sudo yum install epel-release</programlisting></para> 156 <para>EPEL Repository</para>
157
158 <programlisting>sudo yum install epel-release</programlisting>
146 </listitem> 159 </listitem>
147 160
148 <listitem> 161 <listitem>
149 <para>PIP package manager<programlisting>sudo yum -y install python-pip</programlisting></para> 162 <para>PIP package manager</para>
163
164 <programlisting>sudo yum -y install python-pip</programlisting>
150 </listitem> 165 </listitem>
151 166
152 <listitem> 167 <listitem>
153 <para>Virtualenv tool<programlisting>sudo pip install virtualenv</programlisting></para> 168 <para>Virtualenv tool</para>
169
170 <programlisting>sudo pip install virtualenv</programlisting>
154 </listitem> 171 </listitem>
155 </itemizedlist> 172 </itemizedlist>
156 173
157 <note> 174 <note>
158 <para>It is recommended to install Enea Edge Automation and Enea Edge Management 175 <para>It is recommended to install Enea Edge Automation and the Enea Edge Management application
159 on different machines.</para> 176 on different machines.</para>
160 </note> 177 </note>
161 </section> 178 </section>
@@ -163,10 +180,12 @@
163 <section id="initial_setup"> 180 <section id="initial_setup">
164 <title>Installing the Enea Edge Automation</title> 181 <title>Installing the Enea Edge Automation</title>
165 182
166 <para id="install_procedure"><emphasis role="bold">To install the 183 <para id="install_procedure"><emphasis role="bold">Installing the
167 Enea Edge Automation</emphasis><orderedlist> 184 Enea Edge Automation</emphasis></para>
185
186 <orderedlist>
168 <listitem> 187 <listitem>
169 <para>Log on the host machine</para> 188 <para>Log into the host machine</para>
170 </listitem> 189 </listitem>
171 190
172 <listitem> 191 <listitem>
@@ -174,23 +193,31 @@
174 </listitem> 193 </listitem>
175 194
176 <listitem> 195 <listitem>
177 <para>Extract the archive file<programlisting>unzip Enea_Edge_Automation_&lt;version&gt;-build&lt;build_number&gt;.zip</programlisting></para> 196 <para>Extract the archive file</para>
197
198 <programlisting>unzip Enea_Edge_Automation_&lt;version&gt;-build&lt;build_number&gt;.zip</programlisting>
178 </listitem> 199 </listitem>
179 200
180 <listitem> 201 <listitem>
181 <para>Run the <filename>setup_env.sh</filename><programlisting>source setup_env.sh</programlisting></para> 202 <para>Run the setup of virtual environment script:</para>
203
204 <programlisting>source setup_env.sh</programlisting>
182 </listitem> 205 </listitem>
183 206
184 <listitem> 207 <listitem>
185 <para>Configure the system. For more details, see <xref 208 <para>Configure the system. For more details, see <xref
186 linkend="AFTH_cofig" />.</para> 209 linkend="AFTH_cofig" />.</para>
187 </listitem> 210 </listitem>
188 </orderedlist><note> 211 </orderedlist>
212
213 <note>
189 <para>The steps are executed only once, for the initial setup of the 214 <para>The steps are executed only once, for the initial setup of the
190 environment.</para> 215 environment.</para>
191 </note></para> 216 </note>
192 217
193 <para><emphasis role="bold">To setup the enviroment for the Enea Edge Automation</emphasis><orderedlist> 218 <para><emphasis role="bold">Setting up the enviroment for the Enea Edge Automation</emphasis></para>
219
220 <orderedlist>
194 <listitem> 221 <listitem>
195 <para>Activate the Python virtual enviroment</para> 222 <para>Activate the Python virtual enviroment</para>
196 223
@@ -198,7 +225,7 @@
198 </listitem> 225 </listitem>
199 226
200 <listitem> 227 <listitem>
201 <para>Optional, check the History Information</para> 228 <para>Optionally, check the History Information</para>
202 229
203 <programlisting>vi &lt;AF-installdir&gt;/CHANGELOG</programlisting> 230 <programlisting>vi &lt;AF-installdir&gt;/CHANGELOG</programlisting>
204 </listitem> 231 </listitem>
@@ -208,15 +235,17 @@
208 235
209 <programlisting>deactivate</programlisting> 236 <programlisting>deactivate</programlisting>
210 </listitem> 237 </listitem>
211 </orderedlist></para> 238 </orderedlist>
212 </section> 239 </section>
213 240
214 <section id="upgrade_AF"> 241 <section id="upgrade_AF">
215 <title>Upgrading the Enea Edge Automation</title> 242 <title>Upgrading the Enea Edge Automation</title>
216 243
217 <para><emphasis role="bold">To upgrade the Enea Edge Automation</emphasis><orderedlist> 244 <para><emphasis role="bold">Upgrading the Enea Edge Automation</emphasis></para>
245
246 <orderedlist>
218 <listitem> 247 <listitem>
219 <para>Log on the host machine</para> 248 <para>Log into the host machine</para>
220 </listitem> 249 </listitem>
221 250
222 <listitem> 251 <listitem>
@@ -225,21 +254,25 @@
225 254
226 <listitem> 255 <listitem>
227 <para>Back up the configuration files from 256 <para>Back up the configuration files from
228 <literal>modules/enea/config</literal></para> 257 <literal>modules/enea/config</literal>.</para>
229 </listitem> 258 </listitem>
230 259
231 <listitem> 260 <listitem>
232 <para>Extract the archive file<programlisting>unzip Enea_Edge_Automation_&lt;version&gt;-build&lt;build_number&gt;.zip</programlisting></para> 261 <para>Extract the archive file:</para>
262
263 <programlisting>unzip Enea_Edge_Automation_&lt;version&gt;-build&lt;build_number&gt;.zip</programlisting>
233 </listitem> 264 </listitem>
234 265
235 <listitem> 266 <listitem>
236 <para>Restore the configuration files from step 2 into 267 <para>Restore the configuration files from step 2 into
237 <literal>modules/enea/config </literal></para> 268 <literal>modules/enea/config </literal>.</para>
238 </listitem> 269 </listitem>
239 270
240 <listitem> 271 <listitem>
241 <para>Run the <filename>setup_env.sh</filename><programlisting>source setup_env.sh</programlisting></para> 272 <para>Run the setup of virtual environment script:</para>
273
274 <programlisting>source setup_env.sh</programlisting>
242 </listitem> 275 </listitem>
243 </orderedlist></para> 276 </orderedlist>
244 </section> 277 </section>
245</chapter> \ No newline at end of file 278</chapter> \ No newline at end of file
diff --git a/doc/book-enea-edge-automation-user-guide/doc/overview.xml b/doc/book-enea-edge-automation-user-guide/doc/overview.xml
index 3419337..30cc91f 100644
--- a/doc/book-enea-edge-automation-user-guide/doc/overview.xml
+++ b/doc/book-enea-edge-automation-user-guide/doc/overview.xml
@@ -12,9 +12,11 @@
12 <para>The Enea Edge Automation complements the Enea Edge Management 12 <para>The Enea Edge Automation complements the Enea Edge Management
13 GUI and uses the northbound REST APIs, given to provide full usability of 13 GUI and uses the northbound REST APIs, given to provide full usability of
14 the Enea Edge Management features.</para> 14 the Enea Edge Management features.</para>
15
15 <para>The Enea Edge Automation includes an Automation Framework (AF) component, providing a way for driving 16 <para>The Enea Edge Automation includes an Automation Framework (AF) component, providing a way for driving
16 configuration with Python scripting, and a Test Harness (TH) component, based on Ansible Playbooks to complete different test 17 configuration with Python scripting, and a Test Harness (TH) component, based on Ansible Playbooks to complete different test
17 cases.</para> 18 cases.</para>
19
18 <para>The Test Harness makes use of the Automation Framework Python modules and/or 20 <para>The Test Harness makes use of the Automation Framework Python modules and/or
19 direct commands on the uCPE devices running the Enea Edge Runtime.</para> 21 direct commands on the uCPE devices running the Enea Edge Runtime.</para>
20 </section> 22 </section>