| ... | ... |
@@ -170,6 +170,30 @@ Libraries from Git |
| 170 | 170 |
|
| 171 | 171 |
LIBS_FROM_GIT=python-keystoneclient,oslo.config |
| 172 | 172 |
|
| 173 |
+Virtual Environments |
|
| 174 |
+-------------------- |
|
| 175 |
+ |
|
| 176 |
+ | *Default: ``USE_VENV=False``* |
|
| 177 |
+ | Enable the use of Python virtual environments by setting ``USE_VENV`` |
|
| 178 |
+ to ``True``. This will enable the creation of venvs for each project |
|
| 179 |
+ that is defined in the ``PROJECT_VENV`` array. |
|
| 180 |
+ |
|
| 181 |
+ | *Default: ``PROJECT_VENV['<project>']='<project-dir>.venv'* |
|
| 182 |
+ | Each entry in the ``PROJECT_VENV`` array contains the directory name |
|
| 183 |
+ of a venv to be used for the project. The array index is the project |
|
| 184 |
+ name. Multiple projects can use the same venv if desired. |
|
| 185 |
+ |
|
| 186 |
+ :: |
|
| 187 |
+ |
|
| 188 |
+ PROJECT_VENV["glance"]=${GLANCE_DIR}.venv
|
|
| 189 |
+ |
|
| 190 |
+ | *Default: ``ADDITIONAL_VENV_PACKAGES=""``* |
|
| 191 |
+ | A comma-separated list of additional packages to be installed into each |
|
| 192 |
+ venv. Often projects will not have certain packages listed in its |
|
| 193 |
+ ``requirements.txt`` file because they are 'optional' requirements, |
|
| 194 |
+ i.e. only needed for certain configurations. By default, the enabled |
|
| 195 |
+ databases will have their Python bindings added when they are enabled. |
|
| 196 |
+ |
|
| 173 | 197 |
Enable Logging |
| 174 | 198 |
-------------- |
| 175 | 199 |
|
| ... | ... |
@@ -211,6 +211,8 @@ Tools |
| 211 | 211 |
----- |
| 212 | 212 |
|
| 213 | 213 |
* `tools/build\_docs.sh <tools/build_docs.sh.html>`__ |
| 214 |
+* `tools/build\_venv.sh <tools/build_venv.sh.html>`__ |
|
| 215 |
+* `tools/build\_wheels.sh <tools/build_wheels.sh.html>`__ |
|
| 214 | 216 |
* `tools/create-stack-user.sh <tools/create-stack-user.sh.html>`__ |
| 215 | 217 |
* `tools/create\_userrc.sh <tools/create_userrc.sh.html>`__ |
| 216 | 218 |
* `tools/fixup\_stuff.sh <tools/fixup_stuff.sh.html>`__ |
| ... | ... |
@@ -109,6 +109,11 @@ function install_database {
|
| 109 | 109 |
install_database_$DATABASE_TYPE |
| 110 | 110 |
} |
| 111 | 111 |
|
| 112 |
+# Install the database Python packages |
|
| 113 |
+function install_database_python {
|
|
| 114 |
+ install_database_python_$DATABASE_TYPE |
|
| 115 |
+} |
|
| 116 |
+ |
|
| 112 | 117 |
# Configure and start the database |
| 113 | 118 |
function configure_database {
|
| 114 | 119 |
configure_database_$DATABASE_TYPE |
| ... | ... |
@@ -151,9 +151,12 @@ EOF |
| 151 | 151 |
else |
| 152 | 152 |
exit_distro_not_supported "mysql installation" |
| 153 | 153 |
fi |
| 154 |
+} |
|
| 154 | 155 |
|
| 156 |
+function install_database_python_mysql {
|
|
| 155 | 157 |
# Install Python client module |
| 156 | 158 |
pip_install MySQL-python |
| 159 |
+ ADDITIONAL_VENV_PACKAGES+=",MySQL-python" |
|
| 157 | 160 |
} |
| 158 | 161 |
|
| 159 | 162 |
function database_connection_url_mysql {
|
| ... | ... |
@@ -100,9 +100,12 @@ EOF |
| 100 | 100 |
else |
| 101 | 101 |
exit_distro_not_supported "postgresql installation" |
| 102 | 102 |
fi |
| 103 |
+} |
|
| 103 | 104 |
|
| 105 |
+function install_database_python_postgresql {
|
|
| 104 | 106 |
# Install Python client module |
| 105 | 107 |
pip_install psycopg2 |
| 108 |
+ ADDITIONAL_VENV_PACKAGES+=",psycopg2" |
|
| 106 | 109 |
} |
| 107 | 110 |
|
| 108 | 111 |
function database_connection_url_postgresql {
|
| ... | ... |
@@ -16,13 +16,17 @@ |
| 16 | 16 |
function stack_install_service {
|
| 17 | 17 |
local service=$1 |
| 18 | 18 |
if type install_${service} >/dev/null 2>&1; then
|
| 19 |
- if [[ -n ${PROJECT_VENV[$service]:-} ]]; then
|
|
| 19 |
+ if [[ ${USE_VENV} = True && -n ${PROJECT_VENV[$service]:-} ]]; then
|
|
| 20 | 20 |
rm -rf ${PROJECT_VENV[$service]}
|
| 21 |
- source $TOP_DIR/tools/build_venv.sh ${PROJECT_VENV[$service]}
|
|
| 21 |
+ source $TOP_DIR/tools/build_venv.sh ${PROJECT_VENV[$service]} ${ADDITIONAL_VENV_PACKAGES//,/ }
|
|
| 22 | 22 |
export PIP_VIRTUAL_ENV=${PROJECT_VENV[$service]:-}
|
| 23 |
+ |
|
| 24 |
+ # Install other OpenStack prereqs that might come from source repos |
|
| 25 |
+ install_oslo |
|
| 26 |
+ install_keystonemiddleware |
|
| 23 | 27 |
fi |
| 24 | 28 |
install_${service}
|
| 25 |
- if [[ -n ${PROJECT_VENV[$service]:-} ]]; then
|
|
| 29 |
+ if [[ ${USE_VENV} = True && -n ${PROJECT_VENV[$service]:-} ]]; then
|
|
| 26 | 30 |
unset PIP_VIRTUAL_ENV |
| 27 | 31 |
fi |
| 28 | 32 |
fi |
| ... | ... |
@@ -104,6 +104,16 @@ elif [[ -f $RC_DIR/.localrc.auto ]]; then |
| 104 | 104 |
source $RC_DIR/.localrc.auto |
| 105 | 105 |
fi |
| 106 | 106 |
|
| 107 |
+# Enable use of Python virtual environments. Individual project use of |
|
| 108 |
+# venvs are controlled by the PROJECT_VENV array; every project with |
|
| 109 |
+# an entry in the array will be installed into the named venv. |
|
| 110 |
+# By default this will put each project into its own venv. |
|
| 111 |
+USE_VENV=$(trueorfalse False USE_VENV) |
|
| 112 |
+ |
|
| 113 |
+# Add packages that need to be installed into a venv but are not in any |
|
| 114 |
+# requirmenets files here, in a comma-separated list |
|
| 115 |
+ADDITIONAL_VENV_PACKAGES=${ADITIONAL_VENV_PACKAGES:-""}
|
|
| 116 |
+ |
|
| 107 | 117 |
# Configure wheel cache location |
| 108 | 118 |
export WHEELHOUSE=${WHEELHOUSE:-$DEST/.wheelhouse}
|
| 109 | 119 |
export PIP_WHEEL_DIR=${PIP_WHEEL_DIR:-$WHEELHOUSE}
|