DIB element to support cinder local attach/detach functionality

This element adds python-brick-cinderclient-ext to the make customized image
to support cinder local attach/detach functionality. Currently it has the
dependency on known bug<https://launchpad.net/bugs/1623549>, which would be
resolved with next release of python-brick-cinderclient-ext.

Change-Id: Idfe83bafa2843c781c18b83f1a3aece3ae852f78
This commit is contained in:
Anshul Jain 2016-10-13 08:52:10 +00:00
parent 2e0f812efa
commit 34bdc7df90
5 changed files with 86 additions and 0 deletions

View File

@ -0,0 +1,34 @@
python-brickclient
==================
* This element is aimed for providing cinder local attach/detach functionality.
* Currently the feature has a dependency on a known bug
"https://launchpad.net/bugs/1623549", which has been resolved and will be part
of the upstream with the next release of python-brick-cinderclient-ext.
Note: Current version of python-brick-cinderclient-ext i.e. 0.2.0 requires and update
to be made in Line32 fo below script.
/usr/share/python-brickclient/venv/lib/python2.7/site-packages/brick_cinderclient_ext/__init__.py
update "brick-python-cinderclient-ext" to "python-brick-cinderclient-ext".
* Usage:
Pass the below shell script to parameter 'user-data' and set 'config-drive=true'
at the time of provisioning the node via nova-boot to make cinder local
attach/detach commands talk to your cloud controller.
[Example of Config Drive Script]
#!/bin/bash
FILE="/etc/bash.bashrc"
[ ! -f "$FILE" ] && touch "$FILE"
echo 'export OS_AUTH_URL="http://<controller_ip>:5000/v2.0"' >> "$FILE"
echo 'export OS_PASSWORD="password"' >> "$FILE"
echo 'export OS_USERNAME="demo"' >> "$FILE"
echo 'export OS_TENANT_NAME="demo"' >> "$FILE"
echo 'export OS_PROJECT_NAME="demo"' >> "$FILE"
exec bash
To attach: /usr/share/python-brickclient/venv/bin/cinder local-attach <volume_id>
To detach: /usr/share/python-brickclient/venv/bin/cinder local-detach <volume_id>
* Alternatively, the same action can be completed manually at the node which does
not require setting up of config drive such as:
/usr/share/python-brickclient/venv/bin/cinder --os-username demo --os-password \
password --os-tenant-name demo --os-project-name demo \
--os-auth-url=http://<controller_ip>:5000/v2.0 local-attach <volume_id>

View File

@ -0,0 +1,2 @@
package-installs
pip-and-virtualenv

View File

@ -0,0 +1,3 @@
libssl-dev:
libffi-dev:
python-dev:

View File

@ -0,0 +1,14 @@
{
"family": {
"redhat": {
"python-dev": "python2-devel",
"libssl-dev": "openssl-devel",
"libffi-dev": "libffi-devel"
}
},
"default": {
"python-dev": "python-dev",
"libssl-dev": "libssl-dev",
"libffi-dev": "libffi-dev"
}
}

View File

@ -0,0 +1,33 @@
#!/bin/bash
#
# Copyright 2016 Hewlett Packard Enterprise Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
if [ ${DIB_DEBUG_TRACE:-1} -gt 0 ]; then
set -x
fi
set -eu
set -o pipefail
PBCDIR=/usr/share/python-brickclient
mkdir $PBCDIR
# create the virtual environment
virtualenv $PBCDIR/venv
# Install the required packages inside virtual env
$PBCDIR/venv/bin/pip install python-brick-cinderclient-ext
ln -s $PBCDIR/venv/bin/python-brickclient /usr/local/bin/python-brickclient