diff options
author | mrpa <miruna.paun@enea.com> | 2021-04-08 05:27:36 +0200 |
---|---|---|
committer | Miruna Paun <mrpa@enea.se> | 2021-04-08 09:22:42 +0100 |
commit | 8386d1aa527749f38ad761978403770a26fe33d4 (patch) | |
tree | c22d9e4ceed96661f9e0f8e37c9c259f774f5b89 | |
parent | 1de86c1fd37576a0d9fb8c55a1acbefd99129c32 (diff) | |
download | nfv-access-documentation-8386d1aa527749f38ad761978403770a26fe33d4.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>
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)> python generate_device_config.py | 395 | |
396 | <programlisting>testHarness-venv)> python generate_device_config.py | ||
384 | Device name: test | 397 | Device name: test |
385 | Device ID: test_id | 398 | Device ID: test_id |
386 | Device groupings tags [ ]: test_id | 399 | Device groupings tags [ ]: test_id |
@@ -396,18 +409,17 @@ The following JSON config file was successfully created (uCPE Device config file | |||
396 | test.json | 409 | test.json |
397 | 410 | ||
398 | The following JSON config file was successfully created (config store file): | 411 | The following JSON config file was successfully created (config store file): |
399 | store.json</programlisting></para> | 412 | store.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)>python generate_device_config.py --device_name=test -- | 464 | executed in a non-interactive way, as follows:</para> |
453 | device_id=test_id --device_grouping_tags=test_id --version 2.4.0 -- | 465 | |
454 | device_ip_addr=10.0.0.1 --call_home=false --mgmt_nic=eth0 --wan_nic=eth1 -- | 466 | <programlisting>testHarness-venv)>python generate_device_config.py --device_name=test |
455 | lan_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)> python generate_nics_config_files.py | 490 | |
491 | <programlisting>(testHarness-venv)> python generate_nics_config_files.py | ||
477 | Device name: test | 492 | Device name: test |
478 | Check 'test' directory for JSON configuration files</programlisting></para> | 493 | Check '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><interface_name>_<interface_type>_nic.json</literal>. | 501 | <literal><interface_name>_<interface_type>_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)> python generate_nics_config_files.py --device_name=test | 565 | be executed in a non-interactive way, as follows:</para> |
551 | Check 'test' directory for JSON configuration files</programlisting></para> | 566 | |
567 | <programlisting>(testHarness-venv)> python generate_nics_config_files.py --device_name=test | ||
568 | Check '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)> python generate_bridges_config_files.py | 583 | |
584 | <programlisting>(testHarness-venv)> python generate_bridges_config_files.py | ||
567 | Device name: test | 585 | Device name: test |
568 | Check 'test' directory for JSON configuration files</programlisting></para> | 586 | Check '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><bridge_type>_br.json</literal>. The following JSON | 593 | <literal><bridge_type>_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)> python generate_bridges_config_files.py --device-name=test | 677 | can be executed in a non-interactive way, as follows:</para> |
658 | Check 'test' directory for JSON configuration files</programlisting></para> | 678 | |
679 | <programlisting>(testHarness-venv)> python generate_bridges_config_files.py --device-name=test | ||
680 | Check '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><AF-installdir>/automation_framework</literal> directory.</para> | 709 | are located in the <literal><AF-installdir>/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 | ||
774 | Usage: uCPEDeviceHandler.py [OPTIONS] [PARAMETERS]... | 798 | Usage: uCPEDeviceHandler.py [OPTIONS] [PARAMETERS]... |
775 | 799 | ||
776 | Options: | 800 | Options: |
@@ -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/<module name></literal> directory, | 810 | <para>In the <literal>test_harness/<module name></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><command> ... </command></literal> tags from the | 814 | <literal><command> ... </command></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/<device_name>/<device_name>.json</literal> | 862 | <filename>modules/enea/config/uCPEDevice/<device_name>/<device_name>.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 | |||
860 | addDpdkExternalInterface -f | 884 | addDpdkExternalInterface -f |
861 | modules/enea/config/uCPEDevices/<device_name>/<interface_name>_dpdk_nic.json </programlisting> | 885 | modules/enea/config/uCPEDevices/<device_name>/<interface_name>_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> |
864 | addDpdkExternalInterface -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 | ||
890 | addDpdkExternalInterface -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 <device_name> -m | 895 | <programlisting>python automation_framework/uCPEDeviceHandler.py -d <device_name> -m |
869 | addDpdkExternalInterface <interface_name> <dpdk_type></programlisting></para> | 896 | addDpdkExternalInterface <interface_name> <dpdk_type></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> |
872 | addDpdkExternalInterface eno4 vfio-pci</programlisting></para> | 899 | |
900 | <programlisting>python automation_framework/uCPEDeviceHandler.py -d vep1445-8 -m | ||
901 | addDpdkExternalInterface 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 | ||
921 | Info about OfflineConfigHandler methods | 955 | Info about OfflineConfigHandler methods |
922 | ... | 956 | ... |
923 | Method: addOfflineConfigStore | 957 | Method: addOfflineConfigStore |
924 | Parameters: version, deviceId, deviceGroupingTags, descr='' | 958 | Parameters: 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 <store_name> -m | 963 | file:</para> |
930 | addOfflineConfigStore -f <path_to_store_configuration_file></programlisting></para> | 964 | |
965 | <programlisting>python automation_framework/OfflineConfigHandler.py -s <store_name> -m | ||
966 | addOfflineConfigStore -f <path_to_store_configuration_file></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 |
933 | addOfflineConfigStore -f modules/enea/config/uCPEDevices/test/store.json</programlisting></para> | 971 | addOfflineConfigStore -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 <store_name> -m | 976 | <literal>desc</literal>:</para> |
939 | addOfflineConfigStore <version> <deviceId> <deviceGroupingTags></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 <store_name> -m |
942 | addOfflineConfigStore 2.4.0 deviceId customerTag</programlisting></para> | 979 | addOfflineConfigStore <version> <deviceId> <deviceGroupingTags></programlisting> |
980 | |||
981 | <para><emphasis role="bold">Example:</emphasis></para> | ||
982 | |||
983 | <programlisting>python automation_framework/OfflineConfigHandler.py -s testStoreName -m | ||
984 | addOfflineConfigStore 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 | ||
963 | Info about CustomScriptHandler methods | 1006 | Info about CustomScriptHandler methods |
964 | ... | 1007 | ... |
965 | Method: uploadCustomScript | 1008 | Method: uploadCustomScript |
966 | Parameters: customScript, phase | 1009 | Parameters: 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 | 1016 | uploadCustomScript <customScript> <phase></programlisting> |
971 | uploadCustomScript <customScript> <phase></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 | ||
994 | Info about DeviceUpgradeHandler methods | 1041 | Info about DeviceUpgradeHandler methods |
995 | ... | 1042 | ... |
996 | Method: uploadImage | 1043 | Method: uploadImage |
997 | Parameters: imagePath, type, module='VcpeAgent' | 1044 | Parameters: 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> |
1002 | uploadImage <imagePath> <type></programlisting></para> | ||
1003 | 1049 | ||
1004 | <para>The default value for <literal>module</literal> is | 1050 | <programlisting>python automation_framework/DeviceUpgradeHandler.py -m |
1051 | uploadImage <imagePath> <type></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 <imagePath> <type></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 | ||
1028 | Info about VNFHandler methods | 1079 | Info about VNFHandler methods |
1029 | ... | 1080 | ... |
1030 | Method: getVNFDescriptorByName | 1081 | Method: getVNFDescriptorByName |
1031 | Parameters: vnfDescriptorName | 1082 | Parameters: 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 <vnfDescriptorName> [-o]] [-v]</programlisting> |
1036 | [-m getVNFDescriptorByName <vnfDescriptorName> [-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 | ||
1074 | Info about uCPEManagerHandler methods | 1131 | Info about uCPEManagerHandler methods |
1075 | ... | 1132 | ... |
1076 | Method: getuCPEManagerVersion | 1133 | Method: getuCPEManagerVersion |
1077 | Parameters(not needed): -- | 1134 | Parameters(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><AF-installdir>/test_harness</literal> directory.</para> | 1223 | <literal><AF-installdir>/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 | ||
1224 | This playbook runs 'addDataPlaneOvsBridge' method from uCPEDeviceHandler module | 1294 | This playbook runs 'addDataPlaneOvsBridge' method from uCPEDeviceHandler module |
1225 | 1295 | ||
@@ -1246,12 +1316,14 @@ Usage: | |||
1246 | "device=<device_name> bridge_name=<bridge_name> bridge_type=communication" | 1316 | "device=<device_name> bridge_name=<bridge_name> bridge_type=communication" |
1247 | ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e | 1317 | ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e |
1248 | "device=<device_name> bridge_name=<bridge_name> bridge_type=communication | 1318 | "device=<device_name> bridge_name=<bridge_name> bridge_type=communication |
1249 | interfaces=<interfaces>"</programlisting></para> | 1319 | interfaces=<interfaces>"</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" |
1256 | ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e | 1328 | ansible-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 | |||
1264 | interfaces=eno4" | 1336 | interfaces=eno4" |
1265 | ansible-playbook test_harness/uCPEDevice/addDataPlaneOvsBridge.yml -e | 1337 | ansible-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 |
1267 | interfaces=eno4,eno5"</programlisting></para> | 1339 | interfaces=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" |
1365 | vnfd_config_file: "modules/enea/config/VNF/fortigateImage/fortigateImage.json" | 1440 | vnfd_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_<version>-build<build_number>.zip</programlisting></para> | 196 | <para>Extract the archive file</para> |
197 | |||
198 | <programlisting>unzip Enea_Edge_Automation_<version>-build<build_number>.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 <AF-installdir>/CHANGELOG</programlisting> | 230 | <programlisting>vi <AF-installdir>/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_<version>-build<build_number>.zip</programlisting></para> | 261 | <para>Extract the archive file:</para> |
262 | |||
263 | <programlisting>unzip Enea_Edge_Automation_<version>-build<build_number>.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> |