summaryrefslogtreecommitdiffstats
path: root/doc/book-enea-nfv-access-system-test-specification
diff options
context:
space:
mode:
Diffstat (limited to 'doc/book-enea-nfv-access-system-test-specification')
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/book.xml27
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml53
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/overview.xml109
-rw-r--r--doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml1717
-rwxr-xr-xdoc/book-enea-nfv-access-system-test-specification/swcomp.mk10
5 files changed, 0 insertions, 1916 deletions
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/book.xml b/doc/book-enea-nfv-access-system-test-specification/doc/book.xml
deleted file mode 100644
index 2620554..0000000
--- a/doc/book-enea-nfv-access-system-test-specification/doc/book.xml
+++ /dev/null
@@ -1,27 +0,0 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
3"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [
4<!ENTITY % local.common.attrib "xml:base CDATA #IMPLIED">
5]>
6<book id="book_enea_nfv_access_system_test_specification">
7 <title><trademark class="registered">Enea</trademark> NFV Access System Test Specification</title>
8
9 <subtitle>Release Version
10 <xi:include href="../../s_doceneacommon/doc/eltf_params_updated.xml" xpointer="element(EneaLinux_REL_VER/1)"
11 xmlns:xi="http://www.w3.org/2001/XInclude" /></subtitle>
12
13 <!-- OLINKDBPATH_USED_BY_XMLMIND ../../s_docbuild/olinkdb -->
14
15 <xi:include href="../../s_docbuild/template/docsrc_common/bookinfo_userdoc.xml"
16 xmlns:xi="http://www.w3.org/2001/XInclude" />
17
18 <xi:include href="overview.xml"
19 xmlns:xi="http://www.w3.org/2001/XInclude" />
20
21 <xi:include href="configuration.xml"
22 xmlns:xi="http://www.w3.org/2001/XInclude" />
23
24 <xi:include href="sample_test_cases.xml"
25 xmlns:xi="http://www.w3.org/2001/XInclude" />
26
27</book>
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml b/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml
deleted file mode 100644
index 4345326..0000000
--- a/doc/book-enea-nfv-access-system-test-specification/doc/configuration.xml
+++ /dev/null
@@ -1,53 +0,0 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="config_sts">
3 <title>Configuration</title>
4
5 <section id="test_objects">
6 <title>Test Objects</title>
7
8 <para>The test objects for the Test Harness are the Enea NFV Access and
9 Enea uCPE Manager installations performed as indicated in the <olink
10 targetdoc="book_enea_nfv_access_auto_fw_th_user_guide"
11 targetptr="components">Components chapter of the <xi:include
12 href="../../s_docbuild/olinkdb/pardoc-names.xml"
13 xmlns:xi="http://www.w3.org/2001/XInclude"
14 xpointer="element(book_enea_nfv_access_auto_fw_th_user_guide/1)" /></olink>.</para>
15 </section>
16
17 <section id="test_env">
18 <title>Test Environment</title>
19
20 <para>To set up the required Test Harness environment please refer to
21 <olink targetdoc="book_enea_nfv_access_auto_fw_th_user_guide"
22 targetptr="getting_started">Getting Started with the Automation Framework
23 and Test Harness in the <xi:include
24 href="../../s_docbuild/olinkdb/pardoc-names.xml"
25 xmlns:xi="http://www.w3.org/2001/XInclude"
26 xpointer="element(book_enea_nfv_access_auto_fw_th_user_guide/1)" /></olink>.</para>
27 </section>
28
29 <section id="precon_exe_steps">
30 <title>Preconditions and Execution</title>
31
32 <para>Please refer to section <olink
33 targetdoc="book_enea_nfv_access_auto_fw_th_user_guide"
34 targetptr="prerequisites">Prerequisites in the <xi:include
35 href="../../s_docbuild/olinkdb/pardoc-names.xml"
36 xmlns:xi="http://www.w3.org/2001/XInclude"
37 xpointer="element(book_enea_nfv_access_auto_fw_th_user_guide/1)" /></olink>
38 and section <olink targetdoc="book_enea_nfv_access_auto_fw_th_user_guide"
39 targetptr="initial_setup">Installation and Initial Setup in the
40 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
41 xmlns:xi="http://www.w3.org/2001/XInclude"
42 xpointer="element(book_enea_nfv_access_auto_fw_th_user_guide/1)" /></olink>
43 for more details.</para>
44
45 <note>
46 <para>Before running any test case, make sure the uCPE device(s) needed
47 have been added to the uCPE Manager.</para>
48 </note>
49
50 <para>For detailed execution steps of the sample test cases included with
51 the Test Harness please see the following chapter.</para>
52 </section>
53</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml b/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml
deleted file mode 100644
index 5a04673..0000000
--- a/doc/book-enea-nfv-access-system-test-specification/doc/overview.xml
+++ /dev/null
@@ -1,109 +0,0 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="overview_sts">
3 <title>Overview</title>
4
5 <para>This document describes the Test Harness (TH) sample test cases for
6 the System Testing of Enea NFV Access, and the necessary environment setup
7 to run these tests successfully.</para>
8
9 <section id="def_acro_sts">
10 <title>Definitions and Acronyms</title>
11
12 <table>
13 <title>Definitions</title>
14
15 <tgroup cols="2">
16 <colspec align="left" />
17
18 <thead>
19 <row>
20 <entry align="center">Component</entry>
21
22 <entry align="center">Description</entry>
23 </row>
24 </thead>
25
26 <tbody>
27 <row>
28 <entry>Enea NFV Access</entry>
29
30 <entry>The Enea NFV Access (with ODM) Runtime Platform and the
31 Enea uCPE Manager.</entry>
32 </row>
33 </tbody>
34 </tgroup>
35 </table>
36
37 <table>
38 <title>Acronyms</title>
39
40 <tgroup cols="2">
41 <colspec align="left" />
42
43 <thead>
44 <row>
45 <entry align="center">Component</entry>
46
47 <entry align="center">Description</entry>
48 </row>
49 </thead>
50
51 <tbody>
52 <row>
53 <entry>AF</entry>
54
55 <entry>Automation Framework for Enea NFV Access.</entry>
56 </row>
57
58 <row>
59 <entry>JSON</entry>
60
61 <entry>JavaScript Object Notation.</entry>
62 </row>
63
64 <row>
65 <entry>NIC</entry>
66
67 <entry>Network Interface Card.</entry>
68 </row>
69
70 <row>
71 <entry>NFV</entry>
72
73 <entry>Network Functions Virtualization.</entry>
74 </row>
75
76 <row>
77 <entry>ODM</entry>
78
79 <entry>Enea Element On Device Management.</entry>
80 </row>
81
82 <row>
83 <entry>OVS</entry>
84
85 <entry>Open vSwitch.</entry>
86 </row>
87
88 <row>
89 <entry>TH</entry>
90
91 <entry>Test Harness for Enea NFV Access.</entry>
92 </row>
93
94 <row>
95 <entry>uCPE Manager</entry>
96
97 <entry>Enea Universal Customer Premises Equipment Manager.</entry>
98 </row>
99
100 <row>
101 <entry>VNF</entry>
102
103 <entry>Virtualized Network Function.</entry>
104 </row>
105 </tbody>
106 </tgroup>
107 </table>
108 </section>
109</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml b/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml
deleted file mode 100644
index f4b2fc7..0000000
--- a/doc/book-enea-nfv-access-system-test-specification/doc/sample_test_cases.xml
+++ /dev/null
@@ -1,1717 +0,0 @@
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<chapter id="sample_testcases">
3 <title>Sample Test Cases</title>
4
5 <para>The test cases specified in this chapter are implemented as a Sample
6 Test Suite included in the TH.</para>
7
8 <section id="vnf_dev_net_smoke">
9 <title>VNF, Device and Network Smoke Test Cases</title>
10
11 <para>The following is an automated test suite that acts as basic smoke
12 tests for Enea NFV Access, and as a sanity-check test suite for the AF and
13 TH.</para>
14
15 <section id="onb_vnf_image">
16 <title>VNF - Onboard a VNF Image</title>
17
18 <para><emphasis role="bold">Description: </emphasis>Onboarding a VNF
19 Image into the uCPE Manager. For details please refer to:</para>
20
21 <itemizedlist>
22 <listitem>
23 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/onboardVNFImage.yml</filename></para>
24 </listitem>
25
26 <listitem>
27 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/onboardVNFRaw.py</filename></para>
28 </listitem>
29 </itemizedlist>
30
31 <para><emphasis role="bold">Preconditions:</emphasis></para>
32
33 <itemizedlist>
34 <listitem>
35 <para>Add the VNF Image in the <literal>vnf_image</literal> folder
36 in the QCOW2 format: <programlisting>&lt;AF-TH-install-dir&gt;/vnf_image/&lt;VNF-Image-name&gt;.qcow2</programlisting></para>
37 </listitem>
38
39 <listitem>
40 <para>A VNF Image JSON configuration file is created:
41 <programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/&lt;VNF-Descriptor-name&gt;/&lt;VNF-Descriptor-name&gt;.json</programlisting><emphasis
42 role="bold">Example:</emphasis><programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage/fortigateImage.json</programlisting></para>
43 </listitem>
44 </itemizedlist>
45
46 <para><emphasis role="bold">Action:</emphasis> Run the
47 <filename>onboardVNFImage.yml</filename> Ansible Playbook with the
48 <literal>&lt;VNF-Image-name&gt;</literal> and the
49 <literal>&lt;VNF-Descriptor-name&gt;</literal> as extra-vars:
50 <programlisting>ansible-playbook playbooks/onboardVNFImage.yml -e "vnfb=&lt;VNF-Image-name&gt; \
51vnfd=&lt;VNF-Descriptor-name&gt;"</programlisting></para>
52
53 <para><emphasis role="bold">Result:</emphasis> Output of the test case
54 run using the Test Harness:<programlisting># Onboard VNF Image task result
55&lt;VNF-Descriptor-name&gt; successfully onboarded!</programlisting><emphasis
56 role="bold">Note:</emphasis> The test will not fail if the VNF Image is
57 already onboarded. The output will instead contain: <programlisting># debug &lt;VNF-Descriptor-name&gt; already onboarded!</programlisting></para>
58 </section>
59
60 <section id="offb_vnf">
61 <title>VNF - Offboard a VNF</title>
62
63 <para><emphasis role="bold">Description:</emphasis> Removing a VNF
64 Descriptor from the uCPE Manager. For details please refer to:</para>
65
66 <itemizedlist>
67 <listitem>
68 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/offboardVNF.yml</filename></para>
69 </listitem>
70
71 <listitem>
72 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/offboardVNF.py</filename></para>
73 </listitem>
74 </itemizedlist>
75
76 <para><emphasis role="bold">Precondition:</emphasis> The VNF has been
77 previously onboarded in the uCPE Manager instance.</para>
78
79 <para><emphasis role="bold">Action:</emphasis> Run the
80 <filename>offboardVNF.yml</filename> Ansible Playbook with the
81 <literal>&lt;VNF-Descriptor-name&gt;</literal> as extra-vars:
82 <programlisting>ansible-playbook playbooks/offboardVNF.yml -e "vnfd=&lt;VNF-Descriptor-name&gt;"</programlisting></para>
83
84 <para><emphasis role="bold">Result:</emphasis> Output of the test case
85 run using the Test Harness: <programlisting># Remove Descriptor task result
86&lt;VNF-Descriptor-name&gt; was removed!</programlisting><emphasis
87 role="bold">Note:</emphasis> The test will not fail if the VNF
88 Descriptor does not exist. The output will instead contain:
89 <programlisting># debug No Descriptor with name &lt;VNF-Descriptor-name&gt;!</programlisting></para>
90 </section>
91
92 <section id="add_device">
93 <title>Device - Add a device</title>
94
95 <para><emphasis role="bold">Description:</emphasis> Adding a uCPE device
96 to the uCPE Manager. For details please refer to:</para>
97
98 <itemizedlist>
99 <listitem>
100 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addDevice.yml</filename></para>
101 </listitem>
102
103 <listitem>
104 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/addDevice.py</filename></para>
105 </listitem>
106 </itemizedlist>
107
108 <para><emphasis role="bold">Precondition:</emphasis> A device JSON
109 configuration file must be created: <programlisting><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename></programlisting></para>
110
111 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/intelc3850-2.json</programlisting></para>
112
113 <para><emphasis role="bold">Action:</emphasis> Run the
114 <filename>addDevice.yml</filename> Ansible playbook with the
115 <filename>&lt;Device-name&gt;</filename> as extra-vars: <programlisting>ansible-playbook playbooks/addDevice.yml -e "device=&lt;Device-name&gt;"</programlisting></para>
116
117 <para><emphasis role="bold">Result:</emphasis> Output of the test case
118 run using the Test Harness: <programlisting># Add Device task result
119&lt;Device-name&gt; device was added!</programlisting><emphasis
120 role="bold">Note:</emphasis> The test will not fail if the device
121 already exists. The output will instead contain: <programlisting># debug
122&lt;Device-name&gt; device already exists!</programlisting></para>
123 </section>
124
125 <section id="device_upload_image">
126 <title>Device - Upload a NFV Access image</title>
127
128 <para><emphasis role="bold">Description:</emphasis> Upload a NFV Access
129 image file onto the uCPE Manager. For details please refer to:</para>
130
131 <itemizedlist>
132 <listitem>
133 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/uploadImage.yml</filename></para>
134 </listitem>
135
136 <listitem>
137 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/uploadImage.py</filename></para>
138 </listitem>
139 </itemizedlist>
140
141 <para><emphasis role="bold">Precondition:</emphasis> The image path must
142 already exist.</para>
143
144 <para><emphasis role="bold">Action:</emphasis> Run the
145 <filename>uploadImage.yml</filename> Ansible playbook with the
146 <filename>&lt;Image-path&gt;</filename> and
147 <filename>&lt;Upgrade-type&gt;</filename> as extra-vars:</para>
148
149 <para><programlisting>ansible-playbook playbooks/deleteUpgradeFile.yml -e \
150image_path="&lt;Image-path&gt;" -e upgrade_type="&lt;Upgrade-type&gt;"</programlisting></para>
151
152 <para><emphasis role="bold">Example:</emphasis> <programlisting>ansible-playbook playbooks/uploadImage.yml -e \
153image_path="/tmp/enea-nfv-access-xeon-d6.rootfs.ostree.tar.bz2" -e \
154upgrade_type="xeon_d"</programlisting></para>
155
156 <para><emphasis role="bold">Result:</emphasis> Output of the test case
157 run using the Test Harness:</para>
158
159 <para><programlisting>TASK [Upload NFVA image -- Run uploadImage.py module from automation_framework]
160localhost : ok=1 changed=1 unreachable=0 failed=0</programlisting><emphasis
161 role="bold">Note:</emphasis> The test will fail if the image file has
162 already been uploaded.</para>
163
164 <para><programlisting>TASK [Upload NFVA image -- Run uploadImage.py module from automation_framework]
165ok=0 changed=0 unreachable=0 failed=1
166
167# debug
168A file with the same name is already uploaded.</programlisting></para>
169 </section>
170
171 <section id="dev_del_upgrade">
172 <title>Device - Delete Upgraded File</title>
173
174 <para><emphasis role="bold">Description:</emphasis> Deleting an uploaded
175 NFV Access image file from the uCPE Manager. For details please refer
176 to:</para>
177
178 <itemizedlist>
179 <listitem>
180 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/deleteUpgradeFile.yml</filename></para>
181 </listitem>
182
183 <listitem>
184 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/deleteUpgradeFile.py</filename></para>
185 </listitem>
186 </itemizedlist>
187
188 <para><emphasis role="bold">Preconditions:</emphasis> The image file
189 must already be uploaded onto the uCPE Manager.</para>
190
191 <para><emphasis role="bold">Action:</emphasis> Run the
192 <filename>deleteUpgradeFile.yml</filename> Ansible Playbook with the
193 <literal>&lt;Image-name&gt;</literal> as extra-vars:<programlisting>ansible-playbook playbooks/deleteUpgradeFile.yml -e \
194image_name="&lt;Image-name&gt;"</programlisting></para>
195
196 <para><emphasis role="bold">Example:</emphasis> <programlisting>ansible-playbook playbooks/deleteUpgradeFile.yml -e \
197image_name="enea-nfv-access-xeon-d.rootfs.ostree.tar.bz2"</programlisting></para>
198
199 <para><emphasis role="bold">Result:</emphasis> Output of the test case
200 run using the Test Harness:<programlisting>TASK [Remove NFVA image -- Run deleteUpgradeFile.py module from automation_framework]
201localhost : ok=1 changed=1 unreachable=0 failed=0</programlisting>
202 <emphasis role="bold">Note:</emphasis> The test will fail if the image
203 file does not exist: <programlisting>TASK [Remove NFVA image -- Run deleteUpgradeFile.py module from automation_framework]
204ok=0 changed=0 unreachable=0 failed=1
205
206# debug
207No oid found for '&lt;image_name&gt;' image name</programlisting></para>
208 </section>
209
210 <section id="dev_clear_info">
211 <title>Device - Clear information about upgrades of uCPE devices</title>
212
213 <para><emphasis role="bold">Description:</emphasis> Clear information
214 about upgrades of uCPE devices. For details please refer to:</para>
215
216 <itemizedlist>
217 <listitem>
218 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/clearCompletedUpgradesInfo.yml</filename></para>
219 </listitem>
220
221 <listitem>
222 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/clearCompletedUpgradesInfo.py</filename></para>
223 </listitem>
224 </itemizedlist>
225
226 <para><emphasis role="bold">Preconditions:</emphasis> No preconditions
227 needed.</para>
228
229 <para><emphasis role="bold">Action:</emphasis> Run the
230 <filename>clearCompletedUpgradesInfo.yml</filename> Ansible
231 Playbook:<programlisting>ansible-playbook playbooks/clearCompletedUpgradesInfo.yml</programlisting></para>
232
233 <para><emphasis role="bold">Result:</emphasis> Output of the test case
234 run using the Test Harness:<programlisting>TASK [Clear completed info about upgrading -- Run \
235clearCompletedUpgradesInfo.py module from automation framework]]
236localhost : ok=1 changed=1 unreachable=0 failed=0</programlisting></para>
237 </section>
238
239 <section id="dev_inst_activ">
240 <title>Device - Install and Activate a NFV Access image</title>
241
242 <para><emphasis role="bold">Description:</emphasis> Installing and
243 Activating a NFV Access image on a uCPE device from the uCPE Manager.
244 For details please refer to:</para>
245
246 <itemizedlist>
247 <listitem>
248 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/installAndActivate.yml</filename></para>
249 </listitem>
250
251 <listitem>
252 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/installAndActivate.py</filename></para>
253 </listitem>
254 </itemizedlist>
255
256 <para><emphasis role="bold">Preconditions:</emphasis> <itemizedlist>
257 <listitem>
258 <para>The device must be previously added to the uCPE Manager
259 instance.</para>
260 </listitem>
261
262 <listitem>
263 <para>The image file must already be uploaded onto the uCPE
264 Manager.</para>
265 </listitem>
266 </itemizedlist></para>
267
268 <para><emphasis role="bold">Action:</emphasis> Run the
269 <filename>installAndActivate.yml</filename> Ansible Playbook with the
270 <literal>&lt;Image-name&gt;</literal>,
271 <literal>&lt;Upgrade-type&gt;</literal>, and the
272 <literal>&lt;Device-name&gt;</literal> as extra-vars:<programlisting>ansible-playbook playbooks/installAndActivate.yml -e \
273image_name="&lt;Image_name&gt;" -e upgrade_type="&lt;Upgrade_type&gt;" -e \
274device="&lt;Device-name&gt;"</programlisting></para>
275
276 <para><emphasis role="bold">Example:</emphasis> <programlisting>ansible-playbook playbooks/installAndActivate.yml -e \
277image_name="enea-nfv-access-xeon-d6.rootfs.ostree.tar.bz2" -e \
278upgrade_type=xeon_d -e device=inteld1521-16"</programlisting></para>
279
280 <para><emphasis role="bold">Result:</emphasis> Output of the test case
281 run using the Test Harness:<programlisting>TASK \
282[Install And Activate -- Run installAndActivate.py module from automation_framework]
283localhost : ok=1 changed=1 unreachable=0 failed=0</programlisting>
284 <emphasis role="bold">Note:</emphasis> The test will fail if the image
285 has already been installed on the uCPE device:<programlisting>TASK \
286[Install And Activate -- Run installAndActivate.py module from automation_framework]
287ok=0 changed=0 unreachable=0 failed=1
288
289# debug
290Duplicate entry - Release already installed</programlisting></para>
291 </section>
292
293 <section id="dev_upload_inst_activ">
294 <title>Device - Upload, Install and Activate a NFV Access image on a
295 uCPE device</title>
296
297 <para><emphasis role="bold">Description:</emphasis> Upload, install and
298 activate a NFV Access image on a uCPE device from the uCPE Manager. For
299 details please refer to:</para>
300
301 <itemizedlist>
302 <listitem>
303 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/installNFVAImage.yml</filename></para>
304 </listitem>
305
306 <listitem>
307 <para>The playbook imports the previously described
308 playbooks:</para>
309
310 <itemizedlist spacing="compact">
311 <listitem>
312 <para><filename>playbooks/waitDeviceUp.yml</filename></para>
313 </listitem>
314
315 <listitem>
316 <para><filename>playbook/uploadImage.yml</filename></para>
317 </listitem>
318
319 <listitem>
320 <para><filename>playbook/installAndActivate.yml</filename></para>
321 </listitem>
322
323 <listitem>
324 <para><filename>playbook/deleteUpgradeFile.yml</filename></para>
325 </listitem>
326
327 <listitem>
328 <para><filename>playbook/clearCompletedUpgradesInfo.yml</filename></para>
329 </listitem>
330 </itemizedlist>
331 </listitem>
332 </itemizedlist>
333
334 <para><emphasis role="bold">Preconditions:</emphasis></para>
335
336 <itemizedlist>
337 <listitem>
338 <para>The device has to be previously added to the uCPE Manager
339 instance.</para>
340 </listitem>
341
342 <listitem>
343 <para>A device JSON configuration file must be created:</para>
344
345 <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</programlisting>
346 </listitem>
347 </itemizedlist>
348
349 <para><emphasis role="bold">Action:</emphasis> Run the
350 <filename>installNFVAImage.yml</filename> Ansible Playbook with the
351 <literal>&lt;Image-path&gt;</literal>,
352 <literal>&lt;Image-name&gt;</literal>,
353 <literal>&lt;Upgrade-type&gt;</literal>, and the
354 <literal>&lt;Device-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/installNFVAImage.yml -e \
355device="&lt;Device-name&gt;" -e image_path="&lt;Image-path&gt;" -e \
356image_name="&lt;Image-name&gt;" -e upgrade_type="&lt;Upgrade-type&gt;"</programlisting></para>
357
358 <para><emphasis role="bold">Example:</emphasis> <programlisting>ansible-playbook playbooks/installNFVAImage.yml -e \
359device="inteld1521-16" -e \
360image_path=/tmp/enea-nfv-access-xeon-d5.rootfs.ostree.tar.bz2 -e \
361image_name=enea-nfv-access-xeon-d5.rootfs.ostree.tar.bz2 -e \
362upgrade_type=xeon_d</programlisting></para>
363
364 <para><emphasis role="bold">Result:</emphasis> Output of the test case
365 run using the Test Harness:<programlisting>localhost : ok=1 changed=1 unreachable=0 failed=0</programlisting>
366 <emphasis role="bold">Note:</emphasis> The test will fail if the one
367 imported playbook fails:<programlisting>ok=0 changed=0 unreachable=0 failed=1</programlisting></para>
368 </section>
369
370 <section id="wait_dev">
371 <title>Device - Wait a Device</title>
372
373 <para><emphasis role="bold">Description:</emphasis> Wait for a uCPE
374 device to connect to the uCPE Manager. For details please refer
375 to:</para>
376
377 <itemizedlist>
378 <listitem>
379 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/waitDeviceUp.yml</filename></para>
380 </listitem>
381
382 <listitem>
383 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/waitDeviceUp.py</filename></para>
384 </listitem>
385 </itemizedlist>
386
387 <para><emphasis role="bold">Preconditions:</emphasis></para>
388
389 <itemizedlist>
390 <listitem>
391 <para>The device has to be previously added to the uCPE Manager
392 instance.</para>
393 </listitem>
394
395 <listitem>
396 <para>The device JSON configuration file must exist:
397 <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</programlisting></para>
398 </listitem>
399 </itemizedlist>
400
401 <para><emphasis role="bold">Action:</emphasis> Run the
402 <filename>waitDeviceUp.yml</filename> Ansible Playbook with the
403 <literal>&lt;Device-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/waitDeviceUp.yml -e "device=&lt;Device-name&gt;"</programlisting></para>
404
405 <para><emphasis role="bold">Result:</emphasis> Output of the test case
406 run using the Test Harness:<programlisting># Wait Device task result
407&lt;Device-name&gt; device is connected!</programlisting> <emphasis
408 role="bold">Note:</emphasis> The test will fail if the device does not
409 exist or it is not connected.</para>
410 </section>
411
412 <section id="remv_dev">
413 <title>Device - Remove a Device</title>
414
415 <para><emphasis role="bold">Description:</emphasis> Removing a uCPE
416 device from the uCPE Manager. For details please refer to:</para>
417
418 <itemizedlist>
419 <listitem>
420 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/removeDevice.yml</filename></para>
421 </listitem>
422
423 <listitem>
424 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/removeDevice.py</filename></para>
425 </listitem>
426 </itemizedlist>
427
428 <para><emphasis role="bold">Preconditions:</emphasis></para>
429
430 <itemizedlist>
431 <listitem>
432 <para>The device has to be previously added to the uCPE Manager
433 instance.</para>
434 </listitem>
435
436 <listitem>
437 <para>The device JSON configuration file must exist:
438 <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</programlisting></para>
439 </listitem>
440 </itemizedlist>
441
442 <para><emphasis role="bold">Action:</emphasis> Run the
443 <filename>removeDevice.yml</filename> Ansible Playbook with the
444 <literal>&lt;Device-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeDevice.yml -e "device=&lt;Device-name&gt;"</programlisting></para>
445
446 <para><emphasis role="bold">Result:</emphasis> Output of the test case
447 run using the Test Harness:<programlisting># Remove Device task result
448&lt;Device-name&gt; device was removed!</programlisting> <emphasis
449 role="bold">Note:</emphasis> The test will not fail if the device does
450 not exist. The output will contain: <programlisting># debug
451&lt;Device-name&gt; device was not found!</programlisting></para>
452 </section>
453
454 <section id="bind_nic">
455 <title>Network - Bind a NIC</title>
456
457 <para><emphasis role="bold">Description:</emphasis> Binding a physical
458 network interface (NIC) to a device. For details please refer to:</para>
459
460 <itemizedlist>
461 <listitem>
462 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/bindNIC.yml</filename></para>
463 </listitem>
464
465 <listitem>
466 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/bindNetworkInterface.py</filename></para>
467 </listitem>
468 </itemizedlist>
469
470 <para><emphasis role="bold">Preconditions:</emphasis></para>
471
472 <itemizedlist>
473 <listitem>
474 <para>A device must have been previously added and connected to the
475 uCPE Manager instance.</para>
476 </listitem>
477
478 <listitem>
479 <para>A NIC JSON configuration file must exist: <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;NIC&gt;.json</programlisting></para>
480
481 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/wan_nic.json
482&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/lan_nic.json</programlisting></para>
483 </listitem>
484 </itemizedlist>
485
486 <para><emphasis role="bold">Action:</emphasis> Run the
487 <filename>bindNIC.yml</filename> Ansible Playbook with the
488 <literal>&lt;Device-name&gt;</literal> and
489 <literal>&lt;NIC&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/bindNIC.yml -e "device=&lt;Device-name&gt; nic=&lt;NIC&gt;"</programlisting></para>
490
491 <para><emphasis role="bold">Result:</emphasis> Output of the test case
492 run using the Test Harness:<programlisting># Bind NIC task result
493&lt;NIC&gt; binded successfully!</programlisting> <emphasis
494 role="bold">Note:</emphasis> The test will not fail if the NIC is
495 already bound, it will be unbound and bound again with the provided
496 configuration.</para>
497 </section>
498
499 <section id="unbind_nic">
500 <title>Network - Unbind a NIC</title>
501
502 <para><emphasis role="bold">Description:</emphasis> Unbinding a physical
503 network interface (NIC) from a device. For details please refer
504 to:</para>
505
506 <itemizedlist>
507 <listitem>
508 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/unbindNIC.yml</filename></para>
509 </listitem>
510
511 <listitem>
512 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/unbindNetworkInterface.py</filename></para>
513 </listitem>
514 </itemizedlist>
515
516 <para><emphasis role="bold">Preconditions:</emphasis></para>
517
518 <itemizedlist>
519 <listitem>
520 <para>A NIC is bound to a device in a uCPE Manager instance.</para>
521 </listitem>
522
523 <listitem>
524 <para>A NIC JSON configuration file exists: <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;NIC&gt;.json</programlisting></para>
525 </listitem>
526 </itemizedlist>
527
528 <para><emphasis role="bold">Action:</emphasis> Run the
529 <filename>unbindNIC.yml</filename> Ansible Playbook with the
530 <literal>&lt;Device-name&gt;</literal> and
531 <literal>&lt;NIC&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/unbindNIC.yml -e "device=&lt;Device-name&gt; nic=&lt;NIC&gt;"</programlisting></para>
532
533 <para><emphasis role="bold">Result:</emphasis> Output of the test case
534 run using the Test Harness: <programlisting># Unbind NIC task result
535&lt;NIC&gt; unbinded!</programlisting> <emphasis role="bold">Note:</emphasis>
536 The test will not fail if the NIC is not bound. The output will instead
537 contain:<programlisting># debug
538&lt;NIC&gt; is not binded!</programlisting></para>
539 </section>
540
541 <section id="create_bri">
542 <title>Network - Create a Bridge</title>
543
544 <para><emphasis role="bold">Description:</emphasis> Creating an OVS
545 network bridge on a uCPE device. For details please refer to:</para>
546
547 <itemizedlist>
548 <listitem>
549 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addBridge.yml</filename></para>
550 </listitem>
551
552 <listitem>
553 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/newNetworkBridge.py</filename></para>
554 </listitem>
555 </itemizedlist>
556
557 <para><emphasis role="bold">Preconditions:</emphasis><itemizedlist>
558 <listitem>
559 <para>A NIC is bound to a device in a uCPE Manager
560 instance.</para>
561 </listitem>
562
563 <listitem>
564 <para>A Bridge JSON configuration file exists:<programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Bridge-name&gt;.json</programlisting></para>
565
566 <para><emphasis role="bold">Example:</emphasis><programlisting>&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/wan_br.json
567&lt;AF-TH-install-dir&gt;/lab_config/intelc3850-2/lan_br.json</programlisting></para>
568 </listitem>
569 </itemizedlist></para>
570
571 <para><emphasis role="bold">Action:</emphasis> Run the
572 <filename>addBridge.yml</filename> Ansible Playbook with the
573 <literal>&lt;Device-name&gt;</literal> and the
574 <literal>&lt;Bridge-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/addBridge.yml -e "device=&lt;Device-name&gt; bridge=&lt;Bridge-name&gt;"</programlisting></para>
575
576 <para><emphasis role="bold">Result:</emphasis> Output of the test case
577 run using the Test Harness: <programlisting># Add Bridge task result
578&lt;Bridge-name&gt; network bridge was added!</programlisting><emphasis
579 role="bold">Note:</emphasis> The test will not fail if there already
580 exists a bridge with the same name. It will be deleted and the bridge
581 will be created again with the provided configuration.</para>
582 </section>
583
584 <section id="remov_bri">
585 <title>Network - Remove a Bridge</title>
586
587 <para><emphasis role="bold">Description:</emphasis> Removing an OVS
588 network bridge from a uCPE device. For details please refer to:</para>
589
590 <itemizedlist>
591 <listitem>
592 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/deleteBridge.yml</filename></para>
593 </listitem>
594
595 <listitem>
596 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/delNetworkBridge.py</filename></para>
597 </listitem>
598 </itemizedlist>
599
600 <para><emphasis role="bold">Preconditions:</emphasis><itemizedlist>
601 <listitem>
602 <para>A Bridge exists for a device in a uCPE Manager
603 instance.</para>
604 </listitem>
605
606 <listitem>
607 <para>A Bridge JSON configuration file exists: <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Bridge-name&gt;.json</programlisting></para>
608 </listitem>
609 </itemizedlist><emphasis role="bold">Action:</emphasis> Run the
610 <filename>deleteBridge.yml</filename> Ansible Playbook with the
611 <literal>&lt;Device-name&gt;</literal> and the
612 <literal>&lt;Bridge-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/deleteBridge.yml -e "device=&lt;Device-name&gt; \
613bridge=&lt;Bridge-name&gt;"</programlisting></para>
614
615 <para><emphasis role="bold">Result:</emphasis> Output of the test case
616 run using the Test Harness: <programlisting># Delete Bridge task result
617&lt;Bridge-name&gt; network bridge was deleted!</programlisting><emphasis
618 role="bold">Note:</emphasis> The test will not fail if the bridge does
619 not exist: <programlisting># debug
620&lt;Bridge-name&gt; bridge not found!</programlisting></para>
621 </section>
622
623 <section id="config_dpdk">
624 <title>Network - Configure a DPDK</title>
625
626 <para><emphasis role="bold">Description:</emphasis> Enabling or
627 Disabling the DPDK support in OVS. For details please refer to:</para>
628
629 <itemizedlist>
630 <listitem>
631 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/configDPDK.yml</filename>.</para>
632 </listitem>
633
634 <listitem>
635 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/configDPDK.py</filename>.</para>
636 </listitem>
637 </itemizedlist>
638
639 <para><emphasis role="bold">Precondition: </emphasis></para>
640
641 <para>A device must have been previously added and connected to the uCPE
642 Manager instance.</para>
643
644 <para><emphasis role="bold">Action:</emphasis> Run the
645 <filename>configDPDK.yml</filename> Ansible Playbook with the
646 <literal>&lt;Device-name&gt;</literal> and
647 <literal>&lt;enable/disable&gt;</literal> as extra-vars:<programlisting>ansible-playbook playbooks/configDPDK.yml -e "device=&lt;Device-name&gt; \
648state=&lt;enable/disable&gt;"</programlisting></para>
649
650 <para><emphasis role="bold">Result:</emphasis> Output of the test case
651 run using the Test Harness:</para>
652
653 <para><programlisting># Configure DPDK task result
654DEBUG: Set DPDK state to &lt;enable/disable&gt;</programlisting><emphasis
655 role="bold">Note:</emphasis> DPDK use cannot be disabled if DPDK
656 interfaces are configured. The task will fail in this case.</para>
657 </section>
658
659 <section id="cs_upload">
660 <title>Custom Scripts - Upload a Custom Script to the uCPE
661 Manager</title>
662
663 <para><emphasis role="bold">Description:</emphasis> Upload a Custom
664 Script to the uCPE Manager. For details please refer to:</para>
665
666 <itemizedlist>
667 <listitem>
668 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/uploadCustomScript.yml</filename>.</para>
669 </listitem>
670
671 <listitem>
672 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/customScripts/upload.py</filename>.</para>
673 </listitem>
674 </itemizedlist>
675
676 <para><emphasis role="bold">Precondition:</emphasis></para>
677
678 <para><literal>&lt;AF-TH-install-dir&gt;/lab_config/customScripts</literal>
679 must contain a Custom Script file.</para>
680
681 <para><emphasis role="bold">Action:</emphasis> Run the
682 <filename>uploadCustomScript.yml</filename> Ansible Playbook with the
683 <literal>&lt;scriptName&gt;</literal> and
684 <literal>&lt;phase&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/uploadCustomScript.yml -e "scriptName=&lt;scriptName&gt; \
685phase=
686&lt;always-after-startup|once-after-startup|always-before-startup|once-before-startup&gt;"</programlisting></para>
687
688 <para><emphasis role="bold">Result:</emphasis> Output of the test case
689 run using the Test Harness:</para>
690
691 <programlisting># Upload Custom Script task result
692DEBUG: "{{ scriptName }} was uploaded to uCPE Manager!"</programlisting>
693 </section>
694
695 <section id="cs_upload_device">
696 <title>Custom Scripts - Upload a Custom Script from the uCPE Manager to
697 a Device</title>
698
699 <para><emphasis role="bold">Description:</emphasis> Upload a Custom
700 Script from the uCPE Manager to a Device. For details please refer
701 to:</para>
702
703 <itemizedlist>
704 <listitem>
705 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/uploadCustomScriptOnDevice.yml</filename>.</para>
706 </listitem>
707
708 <listitem>
709 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/customScripts/uploadOnDevice.py</filename>.</para>
710 </listitem>
711 </itemizedlist>
712
713 <para><emphasis role="bold">Preconditions:</emphasis></para>
714
715 <itemizedlist>
716 <listitem>
717 <para>A device must have been previously added and connected to the
718 uCPE Manager instance.</para>
719 </listitem>
720
721 <listitem>
722 <para>A Custom Script must have been previously added to the uCPE
723 Manager instance.</para>
724 </listitem>
725 </itemizedlist>
726
727 <para><emphasis role="bold">Action:</emphasis> Run the
728 <filename>uploadCustomScriptOnDevice.yml</filename> Ansible Playbook
729 with the <literal>&lt;scriptName&gt;</literal>,
730 <literal>&lt;phase&gt;</literal> and
731 <literal>&lt;deviceName&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/uploadCustomScriptOnDevice.yml -e "scriptName=&lt;scriptName&gt; \
732phase=
733&lt;always-after-startup|once-after-startup|always-before-startup|once-before-startup&gt; \
734device=&lt;deviceName&gt;"</programlisting></para>
735
736 <para><emphasis role="bold">Result:</emphasis> Output of the test case
737 run using the Test Harness:</para>
738
739 <programlisting># Upload Custom Script on Device task result
740DEBUG: "{{ scriptName }} was uploaded to {{ device }}!"</programlisting>
741 </section>
742
743 <section id="cs_remove">
744 <title>Custom Scripts - Remove a Custom Script from the uCPE
745 Manager</title>
746
747 <para><emphasis role="bold">Description:</emphasis> Remove a Custom
748 Script from the uCPE Manager. For details please refer to:</para>
749
750 <itemizedlist>
751 <listitem>
752 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/removeCustomScript.yml</filename>.</para>
753 </listitem>
754
755 <listitem>
756 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/customScripts/delete.py</filename>.</para>
757 </listitem>
758 </itemizedlist>
759
760 <para><emphasis role="bold">Precondition:</emphasis></para>
761
762 <para>A Custom Script must have been previously added to the uCPE
763 Manager.</para>
764
765 <para><emphasis role="bold">Action:</emphasis> Run the
766 <filename>removeCustomScript.yml</filename> Ansible Playbook with the
767 <literal>&lt;scriptName&gt;</literal> and
768 <literal>&lt;phase&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeCustomScript.yml -e "scriptName=&lt;scriptName&gt; \
769phase=
770&lt;always-after-startup|once-after-startup|always-before-startup|once-before-startup&gt;"</programlisting></para>
771
772 <para><emphasis role="bold">Result:</emphasis> Output of the test case
773 run using the Test Harness:</para>
774
775 <programlisting># Remove Custom Script in phase from uCPE Manager task result
776DEBUG: "{{ scriptName }} from phase {{ phase }} was removed from uCPE Manager!"</programlisting>
777 </section>
778
779 <section id="cs_remove_device">
780 <title>Custom Scripts - Remove a Custom Script from a Device</title>
781
782 <para><emphasis role="bold">Description:</emphasis> Remove a Custom
783 Script from a Device. For details please refer to:</para>
784
785 <itemizedlist>
786 <listitem>
787 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/removeCustomScriptOnDevice.yml</filename>.</para>
788 </listitem>
789
790 <listitem>
791 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/customScripts/deleteOnDevice.py</filename>.</para>
792 </listitem>
793 </itemizedlist>
794
795 <para><emphasis role="bold">Preconditions:</emphasis></para>
796
797 <itemizedlist>
798 <listitem>
799 <para>A device must have been previously added and connected to the
800 uCPE Manager instance.</para>
801 </listitem>
802
803 <listitem>
804 <para>A Custom Script must have been previously added to the
805 Device.</para>
806 </listitem>
807 </itemizedlist>
808
809 <para><emphasis role="bold">Action:</emphasis> Run the
810 <filename>removeCustomScriptOnDevice.yml</filename> Ansible Playbook
811 with the <literal>&lt;scriptName&gt;</literal>,
812 <literal>&lt;phase&gt;</literal> and
813 <literal>&lt;deviceName&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeCustomScriptOnDevice.yml -e "scriptName=&lt;scriptName&gt; \
814phase=
815&lt;always-after-startup|once-after-startup|always-before-startup|once-before-startup&gt; \
816device=&lt;deviceName&gt;"</programlisting></para>
817
818 <para><emphasis role="bold">Result:</emphasis> Output of the test case
819 run using the Test Harness:</para>
820
821 <programlisting># Remove Custom Script in phase from Device task result
822DEBUG: "{{ scriptName }} from phase {{ phase }} was removed from {{ device }}!"</programlisting>
823 </section>
824
825 <section id="add_offline_config">
826 <title>Offline Configuration - Add an Offline Configuration
827 Store</title>
828
829 <para><emphasis role="bold">Description:</emphasis> Adding an Offline
830 Config Store to the uCPE Manager. For details please refer to:</para>
831
832 <itemizedlist>
833 <listitem>
834 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addConfigStore.yml</filename>.</para>
835 </listitem>
836
837 <listitem>
838 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/addConfigStore.py</filename>.</para>
839 </listitem>
840 </itemizedlist>
841
842 <para><emphasis role="bold">Precondition:</emphasis><itemizedlist>
843 <listitem>
844 <para>The Offline Configuration Store should not already exist on
845 the uCPE Manager. If it exists, the test will report a
846 duplicate.</para>
847 </listitem>
848
849 <listitem>
850 <para>A store JSON file needs to exist: <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;device-name&gt;/store.json</programlisting></para>
851 </listitem>
852 </itemizedlist></para>
853
854 <para><emphasis role="bold">Action:</emphasis> Run the
855 <filename>addConfigStore.yml</filename> Ansible Playbook with the
856 <literal>&lt;device-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/addConfigStore.yml -e \
857"device=&lt;device-name&gt;"</programlisting></para>
858
859 <para><emphasis role="bold">Result:</emphasis> Output of the test case
860 run using the Test Harness:</para>
861
862 <programlisting># Add Config Store task result
863**********************************************************
864**********************************
865 * localhost - changed=False
866--------------------------------------------------
867 Config store for intelc3850-2 device was added!</programlisting>
868 </section>
869
870 <section id="remove_offline_config">
871 <title>Offline Configuration - Remove an Offline Configuration
872 Store</title>
873
874 <para><emphasis role="bold">Description:</emphasis> Removing an Offline
875 Config Store from the uCPE Manager. For details please refer to:</para>
876
877 <itemizedlist>
878 <listitem>
879 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/removeConfigStore.yml</filename>.</para>
880 </listitem>
881
882 <listitem>
883 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/removeConfigStore.py</filename>.</para>
884 </listitem>
885 </itemizedlist>
886
887 <para><emphasis role="bold">Precondition:</emphasis></para>
888
889 <para>The Offline Configuration Store the user wishes to remove should
890 exist in the uCPE Manager. If it does not, the test will say so.</para>
891
892 <para><emphasis role="bold">Action:</emphasis> Run the
893 <filename>removeConfigStore.yml</filename> Ansible Playbook with the
894 <literal>&lt;store-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/removeConfigStore.yml -e \
895"store=&lt;store-name&gt;"</programlisting></para>
896
897 <para><emphasis role="bold">Result:</emphasis> Output of the test case
898 run using the Test Harness:</para>
899
900 <programlisting># Remove Config Store task result **********************************
901*******************************************************
902 * localhost - changed=False
903 -- intelc3850-2 config store was removed! ---------</programlisting>
904 </section>
905
906 <section id="offline_config_add_bridge">
907 <title>Offline Configuration - Add a network bridge to an Offline
908 Configuration Store</title>
909
910 <para><emphasis role="bold">Description:</emphasis> Adding a network
911 bridge to an Offline Config Store in uCPE Manager. For details please
912 refer to:</para>
913
914 <itemizedlist>
915 <listitem>
916 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/addOfflineBridge.yml</filename>.</para>
917 </listitem>
918
919 <listitem>
920 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/newNetworkBridge.py</filename>.</para>
921 </listitem>
922 </itemizedlist>
923
924 <para><emphasis role="bold">Precondition:</emphasis></para>
925
926 <itemizedlist>
927 <listitem>
928 <para>The Offline Configuration Store should exist in the uCPE
929 Manager. If it does not, the test will say so.</para>
930 </listitem>
931
932 <listitem>
933 <para>A Bridge JSON configuration file needs to exist:
934 <programlisting>&lt;AF-TH-install-dir&gt;/lab_config/&lt;device-name&gt;/&lt;bridge-name&gt;.json</programlisting></para>
935 </listitem>
936 </itemizedlist>
937
938 <para><emphasis role="bold">Action:</emphasis> Run the
939 <filename>addOfflineBridge.yml</filename> Ansible Playbook with the
940 <literal>&lt;device-name&gt;</literal>,
941 <literal>&lt;store-name&gt;</literal> and
942 <literal>&lt;bridge-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/addOfflineBridge.yml -e \
943"device=&lt;device-name&gt; store=&lt;store-name&gt; bridge=&lt;bridge-name&gt;"</programlisting></para>
944
945 <para><emphasis role="bold">Result:</emphasis> Output of the test case
946 run using the Test Harness:</para>
947
948 <programlisting># debug *************************************************************
949******************************************************
950 * localhost - changed=False
951--------------------------------------------------
952 lan_br bridge already exists
953 --- will be deleted to create it with the provided configuration
954..
955# Add Bridge task result ********************************************
956******************************************************
957 * localhost - changed=False
958 -- lan_br network bridge was added! ------------</programlisting>
959
960 <para><emphasis role="bold">Note:</emphasis> if the bridge exists, it
961 will be removed and then re-added, as the output above shows.</para>
962 </section>
963
964 <section id="offline_config_dpdk">
965 <title>Offline Configuration - Configure a DPDK</title>
966
967 <para><emphasis role="bold">Description:</emphasis> Adding an "enable"
968 or "disable" DPDK state to an Offline Config Store. For details please
969 refer to:</para>
970
971 <itemizedlist>
972 <listitem>
973 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/configOfflineDPDK.yml</filename>.</para>
974 </listitem>
975
976 <listitem>
977 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/network/configDPDK.py</filename>.</para>
978 </listitem>
979 </itemizedlist>
980
981 <para><emphasis role="bold">Precondition:</emphasis></para>
982
983 <para>An empty Offline Configuration Store should exist in uCPE
984 Manager.</para>
985
986 <para><emphasis role="bold">Action:</emphasis> Run the
987 <filename>configOfflineDPDK.yml</filename> Ansible Playbook with the
988 <literal>&lt;store-name&gt;</literal> and
989 <literal>&lt;enable/disable&gt;</literal> as extra-vars:
990 <programlisting>ansible-playbook playbooks/configOfflineDPDK.yml -e \
991"store=&lt;store-name&gt; state=&lt;enable/disable&gt;"</programlisting></para>
992
993 <para><emphasis role="bold">Result:</emphasis> Output of the test case
994 run using the Test Harness:</para>
995
996 <programlisting>DEBUG: Set DPDK state to disable
997INFO: Done</programlisting>
998
999 <para><emphasis role="bold">Note:</emphasis> the DPDK state cannot be
1000 changed. Recreate the Offline Config Store and set the DPDK again if you
1001 want to change the state.</para>
1002 </section>
1003
1004 <section id="offline_config_ucpe">
1005 <title>Offline Configuration - Upload an offline configuration onto a
1006 uCPE Device</title>
1007
1008 <para><emphasis role="bold">Description:</emphasis> Uploading an offline
1009 configuration to a uCPE Device. For details please refer to:</para>
1010
1011 <itemizedlist>
1012 <listitem>
1013 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/uploadConfigStore.yml</filename>.</para>
1014 </listitem>
1015
1016 <listitem>
1017 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/uploadConfigStore.py</filename>.</para>
1018 </listitem>
1019 </itemizedlist>
1020
1021 <para><emphasis role="bold">Precondition:</emphasis></para>
1022
1023 <itemizedlist>
1024 <listitem>
1025 <para>The Offline Configuration Store should exist in the uCPE
1026 Manager.</para>
1027 </listitem>
1028
1029 <listitem>
1030 <para>The device should be connected to the uCPE Manager.</para>
1031 </listitem>
1032 </itemizedlist>
1033
1034 <para><emphasis role="bold">Action:</emphasis> Run the
1035 <filename>uploadConfigStore.yml</filename> Ansible Playbook with the
1036 <literal>&lt;store-name&gt;</literal> and
1037 <literal>&lt;device-name&gt;</literal> as extra-vars:</para>
1038
1039 <programlisting>ansible-playbook playbooks/uploadConfigStore.yml -e \
1040"store=&lt;store-name&gt; device=&lt;device-name&gt;"</programlisting>
1041
1042 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1043 run using the Test Harness:</para>
1044
1045 <programlisting># Upload Config Store task result ****************************
1046 * localhost - changed=False ---------------
1047 2020-10-08 13:29:41,062 - INFO: Upload offline \
1048 configuration to uCPE Device
1049 2020-10-08 13:30:01,315 - INFO: The '&lt;store-name&gt;' config \
1050 store was successfully uploaded on device!
1051 2020-10-08 13:30:01,316 - INFO: Done</programlisting>
1052 </section>
1053
1054 <section id="offline_config_status">
1055 <title>Offline Configuration - Get the offline configuration upload
1056 status on the uCPE Device</title>
1057
1058 <para><emphasis role="bold">Description:</emphasis> Get the offline
1059 configuration upload status to a uCPE Device. For details please refer
1060 to:</para>
1061
1062 <itemizedlist>
1063 <listitem>
1064 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/getUploadStatus.yml</filename>.</para>
1065 </listitem>
1066
1067 <listitem>
1068 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/device/getUploadStatus.py</filename>.</para>
1069 </listitem>
1070 </itemizedlist>
1071
1072 <para><emphasis role="bold">Precondition:</emphasis></para>
1073
1074 <itemizedlist>
1075 <listitem>
1076 <para>An upload of the offline configuration should be done on the
1077 uCPE Device.</para>
1078 </listitem>
1079
1080 <listitem>
1081 <para>The device should be connected to the uCPE Manager.</para>
1082 </listitem>
1083 </itemizedlist>
1084
1085 <para><emphasis role="bold">Action:</emphasis> Run the
1086 <filename>getUploadStatus.yml</filename> Ansible Playbook with the
1087 <literal>&lt;device-name&gt;</literal> as extra-vars:</para>
1088
1089 <programlisting>ansible-playbook playbooks/getUploadStatus.yml -e \
1090"device=&lt;device-name&gt;"</programlisting>
1091
1092 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1093 run using the Test Harness:</para>
1094
1095 <programlisting># Upload Config Store task result ****************************
1096 * localhost - changed=False ---------------
1097 2020-10-08 14:13:24,422 - INFO: Get upload offline configure \
1098 status on uCPE Device
1099 2020-10-08 14:13:24,521 - INFO: Successful: True
1100 2020-10-08 14:13:24,522 - INFO: Store name: &lt;store-name&gt;
1101 2020-10-08 14:13:24,523 - INFO: In progress: False
1102 2020-10-08 14:13:24,524 - INFO: A config store was successfully \
1103 uploaded on device!
1104 2020-10-08 14:13:24,525 - INFO: Done</programlisting>
1105 </section>
1106 </section>
1107
1108 <section id="vnf_deploy_lifecycle">
1109 <title>VNF Deployment and Lifecycle</title>
1110
1111 <para>The following details the automated suite that handles the testing
1112 of the instantiation, lifecycle and destruction of a VNF for Enea NFV
1113 Access.</para>
1114
1115 <section id="inst_vnfi">
1116 <title>Instantiating a VNFI</title>
1117
1118 <para><emphasis role="bold">Description:</emphasis> Creating a VNF
1119 instance on a uCPE device. For details please refer to:</para>
1120
1121 <itemizedlist>
1122 <listitem>
1123 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/instantiateVNFI.yml</filename></para>
1124 </listitem>
1125
1126 <listitem>
1127 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/instantiateVNFI.py</filename></para>
1128 </listitem>
1129 </itemizedlist>
1130
1131 <para><emphasis role="bold">Preconditions:</emphasis> <itemizedlist>
1132 <listitem>
1133 <para>A VNF Image is onboarded and a device is added and connected
1134 to the uCPE Manager. Depending on the VNF, other steps may be
1135 required.</para>
1136 </listitem>
1137
1138 <listitem>
1139 <para>A VNFI JSON configuration file exists: <programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/&lt;VNF-Descriptor-name&gt;/&lt;VNFI-name&gt;.json</programlisting></para>
1140
1141 <para><emphasis role="bold">Example:</emphasis> <programlisting>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage/fortigateFWInstance.json</programlisting></para>
1142 </listitem>
1143 </itemizedlist></para>
1144
1145 <para><emphasis role="bold">Action:</emphasis> Run the
1146 <filename>instantiateVNFI.yml</filename> Ansible Playbook with the
1147 <literal>&lt;Device-name&gt;</literal>,
1148 <literal>&lt;VNF-Descriptor-name&gt;</literal> and the
1149 <literal>&lt;VNFI-name&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/instantiateVNFI.yml -e "device=&lt;Device-name&gt; \
1150vnfd=&lt;VNF-Descriptor-name&gt; vnfi=&lt;VNFI-name&gt;"</programlisting></para>
1151
1152 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1153 run using the Test Harness: <programlisting># Instantiate VNF task result
1154&lt;VNFI-name&gt; was instantiated!</programlisting><emphasis
1155 role="bold">Note:</emphasis> The test will not fail if the VNF instance
1156 already exists. The output will instead contain: <programlisting># debug
1157&lt;VNFI-name&gt; already exists!</programlisting></para>
1158 </section>
1159
1160 <section id="control_vnfi">
1161 <title>Controlling a VNFI</title>
1162
1163 <para><emphasis role="bold">Description:</emphasis> Changing the status
1164 of a VNF instance (Pause, Resume, Stop, Start). For details please refer
1165 to:</para>
1166
1167 <itemizedlist>
1168 <listitem>
1169 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/controlVNFI.yml</filename></para>
1170 </listitem>
1171
1172 <listitem>
1173 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/controlVNFI.py</filename></para>
1174 </listitem>
1175 </itemizedlist>
1176
1177 <para><emphasis role="bold">Precondition:</emphasis> A VNF is
1178 instantiated on a uCPE device.</para>
1179
1180 <para><emphasis role="bold">Action:</emphasis> Run the
1181 <filename>controlVNFI.yml</filename> Ansible Playbook with the
1182 <literal>&lt;Device-name&gt;</literal>,
1183 <literal>&lt;VNFI-name&gt;</literal> and the
1184 <literal>&lt;Command&gt;</literal> as extra-vars: <programlisting>ansible-playbook playbooks/controlVNFI.yml -e "device=&lt;Device-name&gt; \
1185vnfi=&lt;VNFI-name&gt; status=&lt;pause|resume|start|stop&gt;"</programlisting></para>
1186
1187 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1188 run using the Test Harness: <programlisting># Change VNFI Status task result
1189&lt;VNFI-name&gt; status was set to &lt;Command&gt;</programlisting><emphasis
1190 role="bold">Note:</emphasis> The test will not fail if the VNF instance
1191 does not exist or if the specified command is not valid. Depending on
1192 the case, the output will contain: <programlisting># debug
1193&lt;VNFI-name&gt; was not found!</programlisting>or<programlisting># debug
1194Invalid VNF Instance control command specified - &lt;Command&gt;</programlisting></para>
1195 </section>
1196
1197 <section id="destroy_vnfi">
1198 <title>Destroying a VNFI</title>
1199
1200 <para><emphasis role="bold">Description:</emphasis> Destroying a VNF
1201 instance from a uCPE device. For details please refer to:</para>
1202
1203 <itemizedlist>
1204 <listitem>
1205 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/destroyVNFI.yml</filename></para>
1206 </listitem>
1207
1208 <listitem>
1209 <para><filename>&lt;AF-TH-install-dir&gt;/automation_framework/vnf/destroyVNFI.py</filename></para>
1210 </listitem>
1211 </itemizedlist>
1212
1213 <para><emphasis role="bold">Precondition:</emphasis> A VNF is
1214 instantiated on a uCPE device.</para>
1215
1216 <para><emphasis role="bold">Action:</emphasis> Run the
1217 <filename>destroyVNFI.yml</filename> Ansible Playbook with the
1218 <literal>&lt;Device-name&gt;</literal> and the
1219 <filename>&lt;VNFI-name&gt;</filename> as extra-vars: <programlisting>ansible-playbook playbooks/destroyVNFI.yml -e "device=&lt;Device-name&gt; \
1220vnfi=&lt;VNFI-name&gt;"</programlisting><emphasis
1221 role="bold">Result:</emphasis> Output of the test case run using the
1222 Test Harness:<programlisting># Destroy VNFI task result
1223&lt;VNFI-name&gt; was destroyed!</programlisting><emphasis
1224 role="bold">Note:</emphasis> The test will not fail if the VNF instance
1225 does not exist. The output will instead contain: <programlisting># debug
1226&lt;VNFI-name&gt; was not found!</programlisting></para>
1227 </section>
1228 </section>
1229
1230 <section id="serv_creat_lifecycle">
1231 <title>Service Creation and Lifecycle</title>
1232
1233 <para>This test suite contains more complex test cases designed to verify
1234 service creation and service lifecycle management. These test cases also
1235 serve as examples of how different services can be deployed using the
1236 Automation Framework (AF) and the Test Harness (TH).</para>
1237
1238 <section id="fortigate_firewall">
1239 <title>Fortigate VNF as a Firewall</title>
1240
1241 <para>This test case was implemented in two different ways to exemplify
1242 both methods supported by the AF and TH to deploy such services.</para>
1243
1244 <para><emphasis role="bold">How to deploy the FortiGate VNF as a
1245 Firewall:</emphasis></para>
1246
1247 <orderedlist>
1248 <listitem>
1249 <para>Add a uCPE device.</para>
1250 </listitem>
1251
1252 <listitem>
1253 <para>Wait for the uCPE device to be connected in the Enea uCPE
1254 Manager.</para>
1255 </listitem>
1256
1257 <listitem>
1258 <para>Onboard the FortiGate VNF Image.</para>
1259 </listitem>
1260
1261 <listitem>
1262 <para>Bind 2 physical interfaces: <literal>wan_nic</literal> (this
1263 physical interface has to be connected to the Lab Network) and
1264 <literal>lan_nic</literal>.</para>
1265 </listitem>
1266
1267 <listitem>
1268 <para>Create 2 bridges: <literal>wan_br</literal> (using the
1269 <literal>wan_nic</literal> interface) and <literal>lan_br</literal>
1270 (using the <literal>lan_nic</literal> interface).</para>
1271 </listitem>
1272
1273 <listitem>
1274 <para>Instantiate the FortiGate VNF using the basic Firewall
1275 configuration provided with your Enea NFV Access Release, and the
1276 Fortigate License file.</para>
1277
1278 <note>
1279 <para>Please contact the local Fortinet sales representatives in
1280 your region to get the Fortigate License file.</para>
1281 </note>
1282 </listitem>
1283 </orderedlist>
1284
1285 <para>For more information please refer to section <olink
1286 targetdoc="book_enea_nfv_access_example_usecases"
1287 targetptr="fortigate_firewall_uc_1">FortiGate VNF as a Firewall in the
1288 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
1289 xmlns:xi="http://www.w3.org/2001/XInclude"
1290 xpointer="element(book_enea_nfv_access_example_usecases/1)" /></olink>
1291 Manual.</para>
1292
1293 <section id="fortigate_fw_instance">
1294 <title>FortigateFWInstance Test</title>
1295
1296 <para><emphasis role="bold">Description:</emphasis> Instantiate the
1297 FortiGate VNF as a Firewall and test it using an isolated network
1298 namespace.</para>
1299
1300 <para>This example was implemented with the "Test Harness" method,
1301 based on Ansible Playbooks. For details please refer to:</para>
1302
1303 <itemizedlist>
1304 <listitem>
1305 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/instantiateFortigateFW.yml</filename></para>
1306 </listitem>
1307
1308 <listitem>
1309 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/testFortigateFWInstance.yml</filename></para>
1310 </listitem>
1311
1312 <listitem>
1313 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/cleanupTestFortigateFWInstance.yml</filename></para>
1314 </listitem>
1315
1316 <listitem>
1317 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/fortigateFWService/cleanupFortigateFWInstance.yml</filename></para>
1318 </listitem>
1319 </itemizedlist>
1320
1321 <para><emphasis role="bold">Preconditions:</emphasis></para>
1322
1323 <itemizedlist>
1324 <listitem>
1325 <para>A device must have been previously added and connected to
1326 the uCPE Manager instance.</para>
1327 </listitem>
1328
1329 <listitem>
1330 <para>Add the Fortigate VNF Image
1331 (<filename>fortios.qcow2</filename>) to the
1332 <literal>&lt;AF-TH-install-dir&gt;/vnf_image</literal>
1333 folder.</para>
1334 </listitem>
1335
1336 <listitem>
1337 <para>The device JSON configuration file is created:
1338 <filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
1339 </listitem>
1340
1341 <listitem>
1342 <para>Add device settings in the <literal>hosts</literal> Ansible
1343 inventory file under <literal>[fortigateFW]</literal> and remove
1344 the <filename>intelc3850-2</filename> example.</para>
1345
1346 <para><emphasis role="bold">Example:</emphasis> <programlisting>intelc3850-2 ansible_host=172.24.12.114 ansible_port=22 \
1347ansible_user=root ansible_pass=root</programlisting></para>
1348 </listitem>
1349
1350 <listitem>
1351 <para>NIC JSON configuration files are created:</para>
1352
1353 <itemizedlist>
1354 <listitem>
1355 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
1356 </listitem>
1357
1358 <listitem>
1359 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
1360 </listitem>
1361 </itemizedlist>
1362 </listitem>
1363
1364 <listitem>
1365 <para>Bridge JSON configuration files are created:</para>
1366
1367 <itemizedlist>
1368 <listitem>
1369 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
1370 </listitem>
1371
1372 <listitem>
1373 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
1374 </listitem>
1375 </itemizedlist>
1376 </listitem>
1377
1378 <listitem>
1379 <para>Download the FortiGate VNF Firewall basic configuration file
1380 from Enea, copy it into the
1381 <filename>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</filename>
1382 directory and rename it to
1383 <filename>fortigateFW.conf</filename>.</para>
1384 </listitem>
1385
1386 <listitem>
1387 <para>Retrieve the FortiGate VNF license file from Fortinet or
1388 Enea, copy it into the
1389 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
1390 directory and rename it to
1391 <filename>fortigateLicense.lic</filename>.</para>
1392
1393 <para>For more information please refer to section <olink
1394 targetdoc="book_enea_nfv_access_example_usecases"
1395 targetptr="fortigate_firewall_uc_1">FortiGate VNF as a Firewall in
1396 the <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
1397 xmlns:xi="http://www.w3.org/2001/XInclude"
1398 xpointer="element(book_enea_nfv_access_example_usecases/1)" /></olink>
1399 Manual.</para>
1400 </listitem>
1401 </itemizedlist>
1402
1403 <para><emphasis role="bold">Action:</emphasis> Run the
1404 <filename>instantiateFortigateFW.yml</filename> Ansible Playbook with
1405 the <literal>&lt;Device-name&gt;</literal> as
1406 extra-vars:<programlisting>ansible-playbook playbooks/fortigateFWService/instantiateFortigateFW.yml \
1407-e "device=&lt;Device-name&gt;"</programlisting></para>
1408
1409 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1410 run using the Test Harness: <programlisting># Test FortigateFWInstance task result
1411FortigateFWInstance tested successfully!</programlisting></para>
1412
1413 <para><emphasis role="bold">Cleanup:</emphasis> Run the
1414 <filename>cleanupFortigateFWInstance.yml</filename> Ansible Playbook
1415 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
1416 <programlisting>ansible-playbook playbooks/fortigateFWService/cleanupFortigateFWInstance.yml \
1417-e "device=&lt;Device-name&gt;"</programlisting></para>
1418 </section>
1419
1420 <section id="deploy_fortigate_fw">
1421 <title>DeployFortigateFW Scenario</title>
1422
1423 <para><emphasis role="bold">Description:</emphasis> Deploy the
1424 Fortigate VNF as a Firewall. This example was implemented with the
1425 "Automation Framework" method, based on the
1426 <filename>unittestSuite.py</filename> Python module.</para>
1427
1428 <para>For details please refer to:</para>
1429
1430 <itemizedlist>
1431 <listitem>
1432 <para><literal>&lt;AF-TH-install-dir&gt;/playbooks/unittestSuiteTest/deployFortigateFWScenario.yml</literal></para>
1433 </listitem>
1434
1435 <listitem>
1436 <para><literal>&lt;AF-TH-install-dir&gt;/playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml</literal></para>
1437 </listitem>
1438
1439 <listitem>
1440 <para><literal>&lt;AF-TH-install-dir&gt;/automation_framework/unittestSuite</literal>
1441 directory.</para>
1442 </listitem>
1443 </itemizedlist>
1444
1445 <para><emphasis role="bold">Preconditions:</emphasis></para>
1446
1447 <itemizedlist>
1448 <listitem>
1449 <para>A device must have been previously added and connected to
1450 the uCPE Manager instance.</para>
1451 </listitem>
1452
1453 <listitem>
1454 <para>Add the FortiGate VNF Image
1455 (<filename>fortios.qcow2</filename>) to the
1456 <literal>&lt;AF-TH-install-dir&gt;/vnf_image</literal>
1457 folder.</para>
1458 </listitem>
1459
1460 <listitem>
1461 <para>The device JSON configuration file is created:</para>
1462
1463 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
1464 </listitem>
1465
1466 <listitem>
1467 <para>The NIC JSON configuration files are created:</para>
1468
1469 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
1470
1471 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
1472 </listitem>
1473
1474 <listitem>
1475 <para>The Bridge JSON configuration files are created:</para>
1476
1477 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
1478
1479 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
1480 </listitem>
1481
1482 <listitem>
1483 <para>Download the FortiGate VNF Firewall basic configuration from
1484 Enea, copy it into the
1485 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
1486 directory and rename it to
1487 <filename>fortigateFW.conf</filename>.</para>
1488 </listitem>
1489
1490 <listitem>
1491 <para>Retrieve the FortiGate VNF license file from Fortinet or
1492 Enea, copy it into the
1493 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateImage</literal>
1494 directory and rename it to
1495 <filename>fortigateLicense.lic</filename>.</para>
1496
1497 <para>For more details, please refer to:</para>
1498
1499 <itemizedlist>
1500 <listitem>
1501 <para><olink targetdoc="book_enea_nfv_access_example_usecases"
1502 targetptr="fortigate_firewall_uc_1">FortiGate VNF as a
1503 Firewall in the <ns:include
1504 href="../../s_docbuild/olinkdb/pardoc-names.xml"
1505 xpointer="element(book_enea_nfv_access_example_usecases/1)"
1506 xmlns:ns="http://www.w3.org/2001/XInclude" /></olink>
1507 Manual.</para>
1508 </listitem>
1509
1510 <listitem>
1511 <para><olink
1512 targetdoc="book_enea_nfv_access_auto_fw_th_user_guide"
1513 targetptr="python_testsuite">Python Unit-Test Suite in
1514 <ns:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
1515 xpointer="element(book_enea_nfv_access_auto_fw_th_user_guide/1)"
1516 xmlns:ns="http://www.w3.org/2001/XInclude" /></olink>.</para>
1517 </listitem>
1518 </itemizedlist>
1519 </listitem>
1520 </itemizedlist>
1521
1522 <para><emphasis role="bold">Action:</emphasis> Run the
1523 <filename>deployFortigateFWScenario.yml</filename> Ansible Playbook
1524 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
1525 <programlisting>ansible-playbook playbooks/unittestSuiteTest/deployFortigateFWScenario.yml \
1526-e "device=&lt;Device-name&gt;"</programlisting></para>
1527
1528 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1529 run using the Test Harness: <programlisting># unittestSuite Deploy Test task result
1530FortigateFW Scenario deployed successfully!</programlisting></para>
1531
1532 <para><emphasis role="bold">Cleanup:</emphasis> Run the
1533 <filename>cleanupFortigateFWScenario.yml</filename> Ansible Playbook
1534 with the <literal>&lt;Device-name&gt;</literal> as extra-vars:
1535 <programlisting>ansible-playbook playbooks/unittestSuiteTest/cleanupFortigateFWScenario.yml \
1536-e "device=&lt;Device-name&gt;"</programlisting></para>
1537 </section>
1538 </section>
1539
1540 <section id="chained_vnf">
1541 <title>chainedVNFsService</title>
1542
1543 <para><emphasis role="bold">Description:</emphasis> This sample test
1544 case corresponds to the "VNF Chaining Example Use-case" from the Enea
1545 NFV Access Example Use-cases manual.</para>
1546
1547 <para>For details please refer to:</para>
1548
1549 <itemizedlist>
1550 <listitem>
1551 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/chainedVNFsService.yml</filename></para>
1552 </listitem>
1553
1554 <listitem>
1555 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/testChainedVNFsService.yml</filename></para>
1556 </listitem>
1557
1558 <listitem>
1559 <para><filename>&lt;AF-TH-install-dir&gt;/playbooks/chainedVNFsService/cleanupChainedVNFsService.yml</filename></para>
1560 </listitem>
1561 </itemizedlist>
1562
1563 <para><emphasis role="bold">Preconditions:</emphasis></para>
1564
1565 <itemizedlist>
1566 <listitem>
1567 <para>Two devices must have been previously added and connected to
1568 the uCPE Manager instance.</para>
1569 </listitem>
1570
1571 <listitem>
1572 <para>Add the Fortigate VNF Image
1573 (<filename>fortios.qcow2</filename>) to the
1574 <literal>vnf_image</literal> folder.</para>
1575 </listitem>
1576
1577 <listitem>
1578 <para>Add the Juniper vSRX VNF Image
1579 (<filename>juniper.qcow2</filename>) to the
1580 <literal>vnf_image</literal> folder.</para>
1581 </listitem>
1582
1583 <listitem>
1584 <para>The device JSON configuration file(s) is created, e.g.:</para>
1585
1586 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/&lt;Device-name&gt;.json</filename>.</para>
1587 </listitem>
1588
1589 <listitem>
1590 <para>Add device settings in the <literal>hosts</literal> Ansible
1591 inventory file under <literal>[chainedVNFs]</literal>. Keep both
1592 devices, the "site1" and "site2" entries, and update the values for
1593 <literal>ansible_host</literal>, <literal>ansible_port</literal>,
1594 <literal>ansible_user</literal> and <literal>ansible_pass</literal>,
1595 as applicable.</para>
1596
1597 <para><emphasis role="bold">Example:</emphasis></para>
1598
1599 <para><programlisting>site1 ansible_host=172.24.14.157 ansible_port=22 ansible_user=root \
1600ansible_pass=root</programlisting></para>
1601
1602 <para><programlisting>site2 ansible_host=172.24.14.50 ansible_port=22 ansible_user=root \
1603ansible_pass=root</programlisting></para>
1604 </listitem>
1605
1606 <listitem>
1607 <para>NIC JSON configuration files are created for each of the
1608 devices, where <literal>mgmt_nic</literal> is connected to the DHCP
1609 from the Lab Network and <literal>wan_nic</literal> is connected
1610 back to back to the other device:</para>
1611
1612 <itemizedlist>
1613 <listitem>
1614 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/mgmt_nic.json</filename></para>
1615 </listitem>
1616
1617 <listitem>
1618 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_nic.json</filename></para>
1619 </listitem>
1620
1621 <listitem>
1622 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_nic.json</filename></para>
1623 </listitem>
1624 </itemizedlist>
1625 </listitem>
1626
1627 <listitem>
1628 <para>Bridge JSON configuration files are created for each of the
1629 devices:</para>
1630
1631 <itemizedlist>
1632 <listitem>
1633 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/vnf_mgmt_br.json</filename></para>
1634 </listitem>
1635
1636 <listitem>
1637 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/sfc_br.json</filename></para>
1638 </listitem>
1639
1640 <listitem>
1641 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/wan_br.json</filename></para>
1642 </listitem>
1643
1644 <listitem>
1645 <para><filename>&lt;AF-TH-install-dir&gt;/lab_config/&lt;Device-name&gt;/lan_br.json</filename></para>
1646 </listitem>
1647 </itemizedlist>
1648
1649 <para>Note that sample configuration files needed for devices' NICs
1650 and bridges can be found in:
1651 <literal>&lt;AF-TH-install-dir&gt;/lab_config/inteld1521-1</literal>
1652 and
1653 <literal>&lt;AF-TH-install-dir&gt;/lab_config/inteld1521-2</literal>.</para>
1654 </listitem>
1655
1656 <listitem>
1657 <para>Retrieve the FortiGate VNF Firewall basic configuration files
1658 from Enea (<filename>FortiFW-Site1.conf</filename> and
1659 <filename>FortiFW-Site2.conf</filename>), and copy them into the
1660 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateFWImage</literal>
1661 directory.</para>
1662 </listitem>
1663
1664 <listitem>
1665 <para>Retrieve the FortiGate VNF license file from Fortinet or Enea,
1666 copy it into the
1667 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/fortigateFWImage</literal>
1668 directory and rename it to
1669 <filename>fortigateLicense.lic</filename>.</para>
1670 </listitem>
1671
1672 <listitem>
1673 <para>Retrieve the Juniper vSRX basic configuration files from Enea
1674 (<filename>vSRX-Site1.iso</filename> and
1675 <filename>vSRX-Site2.iso</filename>), and copy them into the
1676 <literal>&lt;AF-TH-install-dir&gt;/vnf_config/junipervSRXImage</literal>
1677 directory.</para>
1678 </listitem>
1679
1680 <listitem>
1681 <para>Retrieve the <filename>vSRX-domain-update-script</filename>
1682 from Enea and copy it into the <literal>junipervSRXImage</literal>
1683 directory.</para>
1684
1685 <para>Please refer to the Chapter concerning the <olink
1686 targetdoc="book_enea_nfv_access_example_usecases"
1687 targetptr="vnf_chaining">VNF Chaining Example Use-case in the
1688 <xi:include href="../../s_docbuild/olinkdb/pardoc-names.xml"
1689 xmlns:xi="http://www.w3.org/2001/XInclude"
1690 xpointer="element(book_enea_nfv_access_example_usecases/1)" /></olink>
1691 manual for additional information about preconditions.</para>
1692 </listitem>
1693 </itemizedlist>
1694
1695 <para><emphasis role="bold">Action:</emphasis> Run the
1696 <filename>chainedVNFsService.yml</filename> Ansible Playbook as
1697 follows:<programlisting>ansible-playbook playbooks/chainedVNFsService/chainedVNFsService.yml \
1698-e "site1=inteld1521-1 site2=inteld1521-2 arch=XeonD"</programlisting></para>
1699
1700 <para>Note that "arch" may either be { XeonD | AtomC } depending on the
1701 target set chosen.</para>
1702
1703 <para><emphasis role="bold">Result:</emphasis> Output of the test case
1704 run using the Test Harness: <programlisting># testChainedVNFsService task result
1705******************************************************************************
1706 * site1 - changed=False ----------------------------------------------
1707----
1708&lt;site1_lan-ip&gt; ---&gt; &lt;site2_lan-ip&gt;
1709LAN-to-LAN connectivity (through VPN tunnel)tested successfully!</programlisting></para>
1710
1711 <para><emphasis role="bold">Cleanup:</emphasis> Run the
1712 <filename>cleanupChainedVNFsService.yml</filename> Ansible Playbook as
1713 follows: <programlisting>ansible-playbook playbooks/chainedVNFsService/cleanupChainedVNFsService.yml \
1714-e "site1=inteld1521-1 site2=inteld1521-2 arch=XeonD"</programlisting></para>
1715 </section>
1716 </section>
1717</chapter> \ No newline at end of file
diff --git a/doc/book-enea-nfv-access-system-test-specification/swcomp.mk b/doc/book-enea-nfv-access-system-test-specification/swcomp.mk
deleted file mode 100755
index aea86ca..0000000
--- a/doc/book-enea-nfv-access-system-test-specification/swcomp.mk
+++ /dev/null
@@ -1,10 +0,0 @@
1# Component build specification
2
3# Version of THIS book
4BOOK_VER ?= $(REL_VER)-dev
5
6DOCBOOK_SRC := $(COMP)/swcomp.mk $(COMP)/doc/book.xml $(shell find $(COMP)/doc -type f \( -name "*.xml" -o -name "*.svg" -o -name "*.png" \) ! -name "book.xml" -print)
7
8BOOKPACKAGES := book-enea-nfv-access-system-test-specification
9BOOKDESC_$(BOOKPACKAGES) := "Enea NFV Access $(PROD_VER) System Test Specification"
10BOOKDEFAULTCONDITION := $(DEFAULTCONDITIONS)