Fix another typos in dockerslicing.md
[functest-xtesting.git] / docs / com / pres / dockerslicing / dockerslicing.md
1 # Docker slicing
2
3 [Cédric Ollivier](mailto:cedric.ollivier@orange.com)
4
5 2017/10/18
6
7
8
9 ## Danube issues
10
11
12 ### OPNFV projects' setup.py
13
14 - no requirements were installed when calling *python setup.py install* as none of the next keys was set:
15     - install_requires
16     - tests_require
17     - dependency_links
18 - shell scripts were not installed neither in $PATH nor in dist-packages
19 - all requirements were not synchronized over the OPNFV projects
20
21
22 ### Functest's Dockerfile
23
24 - it copied all the files hosted by the third-party projects (e.g. docs, .git...)
25 - several requirements were downgraded/upgraded when building the container as they were managed one after the other
26 - it could download packages from [PyPI](https://pypi.python.org/pypi) (e.g. [networking-bgpvpn](https://pypi.python.org/pypi/networking-bgpvpn)...) instead of cloning git repository
27 - build dependencies couldn't be removed to save space as it created multiple layers (>70)
28
29
30
31 ## Management of the requirements
32
33
34 ### Rely on [pbr](https://docs.openstack.org/developer/pbr/)
35
36 - pbr injects requirements into the install_requires, tests_require and/or dependency_links arguments to setup
37 - it supports conditional dependencies which can be added to the requirements (e.g. dnspython>=1.14.0;python_version=='2.7')
38
39
40 ### Split requirements into 3 files
41
42 - **requirements.txt** which should list all abstract (i.e. [not associated with any particular index](https://packaging.python.org/requirements/)) dependencies of the OPNFV packages
43 - **test-requirements.txt** which could list all abstract dependencies required for testing the OPNFV packages
44 - **upper-constraints.txt** which should list all concrete dependencies required by Functest Docker container or the testing virtual environments
45
46
47 ### Follow [OpenStack requirements management](https://specs.openstack.org/openstack/openstack-specs/specs/requirements-management.html)
48
49 - OPNFV (test-)requirements.txt have been updated according to stable/ocata global-requirements.txt.
50 - Functest simply use (and complete) stable/ocata upper-constraints.txt in Docker files and tox configuration (testing virtual environments).
51
52
53 ### On the road
54
55 - we have fixed lots of hardcoded paths hidden by the previous design
56 - some files were outside the python packages
57 - lots of (console) scripts added in OPNFV packages to ease the maintenance of Functest testcases.yaml
58
59
60
61 ## Docker slicing
62
63
64 ### 8 Functest containers
65
66 ```bash
67 $ sudo docker search opnfv |grep functest-
68 opnfv/functest-core         OPNFV Functest core image
69 opnfv/functest-restapi      OPNFV Functest restapi image
70 opnfv/functest-features     OPNFV Functest vnf image
71 opnfv/functest-healthcheck  OPNFV Functest healthcheck image
72 opnfv/functest-smoke        OPNFV Functest smoke image
73 opnfv/functest-vnf          OPNFV Functest vnf image
74 opnfv/functest-components   OPNFV Functest components image
75 opnfv/functest-parser       OPNFV Functest parser image
76 ```
77
78
79 ### 8 Functest containers
80
81 - Alpine 3.6 is now used as base image
82 - one container per test suite has been published (5). All of them are built on top of functest-core.
83 - Parser is hosted in its own containers (it requires librairies released for OpenStack Pike)
84 - a full container is dedicated to our REST API.
85
86 Please see [Run Alpine Functest containers](https://wiki.opnfv.org/display/functest/Run+Alpine+Functest+containers)
87
88
89
90 ## Next steps
91
92
93 ### Functest and XCI
94
95 - the purpose is simply to allow any OPNFV project integrated by Functest to build their own containers on top of opnfv/functest-core
96 - it will allow testing one specific change of these OPNFV projects before merging it in tree
97 - it induces that all requirements are synchronized between the different OPNFV projects
98
99
100 ### F-release
101
102 - to allow building opnfv/functest-core from a gerrit change (see https://gerrit.opnfv.org/gerrit/#/c/40909/)
103 - to split Functest core/ci and the Functest testcases in two separated Python packages
104 - to unlink prepare_env.py and tempest/rally
105
106
107 ### F-release
108
109 - to add python3 support for Functest ci scripts (Functest core already supports both versions)
110 - to unlink functest-core from others OPNFV projects (mainly releng and snaps)
111 - to write a generic Dockerfile using a set of python packages as input
112
113
114 ### 2 OPNFV project proposals
115
116 - requirements, the counterpart of [OpenStack requirements](https://wiki.openstack.org/wiki/Requirements),
117 focused on additional OPNFV project needs
118 - xtesting which would be declined from Functest (core and ci parts) as proposed in
119 [Functional testing gating](https://wiki.opnfv.org/display/functest/Functional+testing+gating)
120
121
122
123 ## Thank you!
124