1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
|
Build Python Packages and Docker Images
=======================================
Python Package
--------------
pre-requist
~~~~~~~~~~~
Get the code
git clone https://git.opnfv.org/moon
cd moon/moonv4
export MOON_HOME=$(pwd)
sudo ln -s $(pwd)/conf /etc/moon
Install python wheel
sudo apt install python3-wheel
Install pip twine
sudo pip install twine
Package code, wheel is a new format instead of `tar.gz`
python setup.py sdist bdist_wheel
Upload to PyPi
twine upload dist/moon_xxx-y.y.y.whl
twine upload dist/moon_xxx-y.y.y.tar.gz
Install a package from PyPi
sudo pypi install moon_xxx --upgrade
moon_db
~~~~~~~
- change version in `moon_db/__init__.py`
- add `Changelog`
moon_utilities
~~~~~~~~~~~~~~
- change version in `moon_utilities/__init__.py`
- add `Changelog`
moon_orchestrator
~~~~~~~~~~~~~~~~~
- change version in `moon_orchestrator/__init__.py`
- add `Changelog`
Build All Pip
~~~~~~~~~~~~~
sudo pip3 install pip --upgrade
cd ${MOON_HOME}/bin
source build_all_pip.sh
Container
---------
keystone_mitaka
~~~~~~~~~~~~~~~
see `templates/docker/keystone/README.md` to build the `keystone_mitaka` container
How to hack the Moon platform
-----------------------------
Force the build of components
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you want to rebuild one or more component, you have to modify the configuration file `moon.conf`.
For example, if you want to rebuild the moon_interface, got to the `[interface]` section and delete the
value of the container key like this:
[interface]
host=172.18.0.11
port=38001
# Name of the container to download (if empty build from scratch)
# example: container=moon/moon_interface:latest
container=
You can configure the interface, the router and both the security_function and security_policy.
You can also force the version of the component like this: `container=moon/moon_interface:4.0.0`
Update the moon_interface
~~~~~~~~~~~~~~~~~~~~~~~~~
Go to the directory `${MOON_HOME}/moon_interface` and update the code accordingly to your needs,
then update the python package.
cd ${MOON_HOME}/moon_interface
python setup.py sdist
cp dist/moon_interface_* ../moon_orchestrator/dist
# kill moon_orchestrator if needed and restart it
Update the moon_secrouter
~~~~~~~~~~~~~~~~~~~~~~~~~
Go to the directory `${MOON_HOME}/moon_secrouter` and update the code accordingly to your needs,
then update the python package.
cd ${MOON_HOME}/moon_secrouter
python setup.py sdist
cp dist/moon_secrouter* ../moon_orchestrator/dist
# kill moon_orchestrator if needed and restart it
Problems that may arise
-----------------------
If the moon_orchestrator doesn't want to start
(with, for example, the following error: `docker.errors.APIError: 409 Client Error: Conflict`),
check if the router and interface containers still exist and kill and delete them:
docker kill moon_interface
docker kill moon_router
docker rm moon_interface
docker rm moon_router
If the moon_orchestrator complains that it cannot request the RabbitMQ server,
check if the messenger server is up and running:
docker ps
# you must see the messenger running here
# if not, restart it
docker run -dti --net=moon --hostname messenger --name messenger --link messenger:messenger \
-e RABBITMQ_DEFAULT_USER=moon -e RABBITMQ_DEFAULT_PASS=password -e RABBITMQ_NODENAME=rabbit@messenger \
-e RABBITMQ_DEFAULT_VHOST=moon -p 5671:5671 -p 5672:5672 rabbitmq:3-management
Configure DB
------------
Relaunch Keystone docker
~~~~~~~~~~~~~~~~~~~~~~~~
If error of `get_keystone_projects()`, then relaunch the Keystone docker, and wait 40 seconds!!!
docker rm -f keystone
docker run -dti --net moon --name keystone --hostname=keystone -e DB_HOST=db -e DB_PASSWORD_ROOT=p4sswOrd1 -p 35357:35357 -p 5000:5000 keystone:mitaka
Add default data in DB
~~~~~~~~~~~~~~~~~~~~~~
Pre-fill the DB with a RBAC policy
cd ${MOON_HOME}/moon_interface/tests/apitests
python3 populate_default_values.py scenario/ rbac.py
|