From 51546cdb6cc846d9390844443fc5eecc4d44124b Mon Sep 17 00:00:00 2001 From: Jon-Paul Sullivan Date: Tue, 9 Sep 2014 10:58:44 +0100 Subject: [PATCH] Enable git install of os-cloud-config Add the ability to use a locally patched os-cloud-config in image installs. Change-Id: Ibebcdc187e9decfd0ff0fddc33dd2c5fc37ee5c9 --- elements/os-cloud-config/element-deps | 1 + .../10-os-cloud-config-install-options.bash | 4 ++ .../90-os-cloud-config | 12 +++--- .../91-os-cloud-config-links | 1 + .../90-os-cloud-config | 41 +++++++++++++++++++ .../91-os-cloud-config-links | 6 +++ .../source-repository-os-cloud-config | 1 + 7 files changed, 60 insertions(+), 6 deletions(-) create mode 120000 elements/os-cloud-config/install.d/os-cloud-config-pip-install/91-os-cloud-config-links create mode 100755 elements/os-cloud-config/install.d/os-cloud-config-source-install/90-os-cloud-config create mode 100755 elements/os-cloud-config/install.d/os-cloud-config-source-install/91-os-cloud-config-links create mode 100644 elements/os-cloud-config/source-repository-os-cloud-config diff --git a/elements/os-cloud-config/element-deps b/elements/os-cloud-config/element-deps index 9770f9ba6..6e2fcb089 100644 --- a/elements/os-cloud-config/element-deps +++ b/elements/os-cloud-config/element-deps @@ -1,2 +1,3 @@ pip-and-virtualenv pip-manifest +source-repositories diff --git a/elements/os-cloud-config/environment.d/10-os-cloud-config-install-options.bash b/elements/os-cloud-config/environment.d/10-os-cloud-config-install-options.bash index 65aae5777..de0e24458 100644 --- a/elements/os-cloud-config/environment.d/10-os-cloud-config-install-options.bash +++ b/elements/os-cloud-config/environment.d/10-os-cloud-config-install-options.bash @@ -1,3 +1,7 @@ #!/bin/bash export DIB_INSTALLTYPE_os_cloud_config="${DIB_INSTALLTYPE_os_cloud_config:-"pip"}" + +if [ -z "${OS_CLOUD_CONFIG_VENV_DIR:-}" ]; then + export OS_CLOUD_CONFIG_VENV_DIR="${OPENSTACK_VENV_DIR:-"/opt/stack/venvs/os-cloud-config"}" +fi diff --git a/elements/os-cloud-config/install.d/os-cloud-config-pip-install/90-os-cloud-config b/elements/os-cloud-config/install.d/os-cloud-config-pip-install/90-os-cloud-config index b78e99a5e..fc69b4fdb 100755 --- a/elements/os-cloud-config/install.d/os-cloud-config-pip-install/90-os-cloud-config +++ b/elements/os-cloud-config/install.d/os-cloud-config-pip-install/90-os-cloud-config @@ -3,11 +3,10 @@ set -eux set -o pipefail manifest=$(get-pip-manifest os-cloud-config) -VENV=/opt/stack/venvs/os-cloud-config -virtualenv --setuptools $VENV +virtualenv --setuptools ${OS_CLOUD_CONFIG_VENV_DIR} set +u -source ${VENV}/bin/activate +source ${OS_CLOUD_CONFIG_VENV_DIR}/bin/activate set -u if [ -n "$manifest" ]; then @@ -17,10 +16,11 @@ else # doesn't manage correctly HTTPS sockets when downloading pbr from # https://pypi.python.org/simple/ if using http_proxy and https_proxy # envvars - ${VENV}/bin/pip install -U 'setuptools>=1.0' + ${OS_CLOUD_CONFIG_VENV_DIR}/bin/pip install -U 'setuptools>=1.0' # bug #1293812 : Avoid easy_install triggering on pbr. - ${VENV}/bin/pip install -U 'pbr>=0.6,<1.0' - ${VENV}/bin/pip install --install-option="--install-scripts=/usr/local/bin" -U os-cloud-config + ${OS_CLOUD_CONFIG_VENV_DIR}/bin/pip install -U 'pbr>=0.6,<1.0' + ${OS_CLOUD_CONFIG_VENV_DIR}/bin/pip install \ + --install-option="--install-scripts=/usr/local/bin" -U os-cloud-config fi # Write the manifest of what was installed diff --git a/elements/os-cloud-config/install.d/os-cloud-config-pip-install/91-os-cloud-config-links b/elements/os-cloud-config/install.d/os-cloud-config-pip-install/91-os-cloud-config-links new file mode 120000 index 000000000..d731be2c0 --- /dev/null +++ b/elements/os-cloud-config/install.d/os-cloud-config-pip-install/91-os-cloud-config-links @@ -0,0 +1 @@ +../os-cloud-config-source-install/91-os-cloud-config-links \ No newline at end of file diff --git a/elements/os-cloud-config/install.d/os-cloud-config-source-install/90-os-cloud-config b/elements/os-cloud-config/install.d/os-cloud-config-source-install/90-os-cloud-config new file mode 100755 index 000000000..f574710a0 --- /dev/null +++ b/elements/os-cloud-config/install.d/os-cloud-config-source-install/90-os-cloud-config @@ -0,0 +1,41 @@ +#!/bin/bash +set -eux + +manifest=$(get-pip-manifest os-cloud-config) + +virtualenv --setuptools ${OS_CLOUD_CONFIG_VENV_DIR} +set +u +source ${OS_CLOUD_CONFIG_VENV_DIR}/bin/activate +set -u + +if [ -n "$manifest" ]; then + use-pip-manifest $manifest +else + # bug #1201253 : virtualenv-1.10.1 embeds setuptools-0.9.8, which + # doesn't manage correctly HTTPS sockets when downloading pbr from + # https://pypi.python.org/simple/ if using http_proxy and https_proxy + # envvars + ${OS_CLOUD_CONFIG_VENV_DIR}/bin/pip install -U 'setuptools>=1.0' + # bug #1293812 : Avoid easy_install triggering on pbr. + ${OS_CLOUD_CONFIG_VENV_DIR}/bin/pip install -U 'pbr>=0.6,<1.0' + if [ -e /opt/stack/os-cloud-config/requirements.txt ]; then + reqs=/opt/stack/os-cloud-config/requirements.txt + elif [ -e /opt/stack/os-cloud-config/tools/pip-requires ]; then + reqs=/opt/stack/os-cloud-config/tools/pip-requires + else + reqs="" + fi + if [ -n "$reqs" ] ; then + pip install -r $reqs + fi +fi + +# All reqs are installed, install from source (dev versions are not installed from manifests) +pip install /opt/stack/os-cloud-config + +# Write the manifest of what was installed +write-pip-manifest os-cloud-config + +set +u +deactivate +set -u diff --git a/elements/os-cloud-config/install.d/os-cloud-config-source-install/91-os-cloud-config-links b/elements/os-cloud-config/install.d/os-cloud-config-source-install/91-os-cloud-config-links new file mode 100755 index 000000000..9a6b431e8 --- /dev/null +++ b/elements/os-cloud-config/install.d/os-cloud-config-source-install/91-os-cloud-config-links @@ -0,0 +1,6 @@ +#!/bin/bash +set -eux + +ln -s ${OS_CLOUD_CONFIG_VENV_DIR}/bin/init-keystone /usr/local/bin/init-keystone +ln -s ${OS_CLOUD_CONFIG_VENV_DIR}/bin/generate-keystone-pki /usr/local/bin/generate-keystone-pki +ln -s ${OS_CLOUD_CONFIG_VENV_DIR}/bin/register-nodes /usr/local/bin/register-nodes diff --git a/elements/os-cloud-config/source-repository-os-cloud-config b/elements/os-cloud-config/source-repository-os-cloud-config new file mode 100644 index 000000000..9d1670263 --- /dev/null +++ b/elements/os-cloud-config/source-repository-os-cloud-config @@ -0,0 +1 @@ +os-cloud-config git /opt/stack/os-cloud-config https://git.openstack.org/openstack/os-cloud-config