diff options
author | Yifei Xue <xueyifei@huawei.com> | 2017-08-15 11:40:26 +0800 |
---|---|---|
committer | Yifei Xue <xueyifei@huawei.com> | 2017-08-31 15:33:56 +0800 |
commit | 8c978370a123dccc0b93ee9bd2ba46f8167a2cc2 (patch) | |
tree | fe3b398de2de17e5c30ceea456dbe123bc1e6f69 /deploy/adapters/ansible/roles/config-osa/files | |
parent | 760c966b5095fb0cfe0a2ac4014a337531a8df1d (diff) |
Support offline deployment for nosdn no feature scenario
JIRA: -
Add a repo docker which includes ubuntu PPA and python packages
used for offline deployment.
Change-Id: Iad9b0df7f33f5a7ab974c5deffb408fc93b3f3ad
Signed-off-by: Yifei Xue <xueyifei@huawei.com>
Diffstat (limited to 'deploy/adapters/ansible/roles/config-osa/files')
3 files changed, 547 insertions, 0 deletions
diff --git a/deploy/adapters/ansible/roles/config-osa/files/apt.conf b/deploy/adapters/ansible/roles/config-osa/files/apt.conf new file mode 100644 index 00000000..afe7ab9e --- /dev/null +++ b/deploy/adapters/ansible/roles/config-osa/files/apt.conf @@ -0,0 +1,3 @@ +APT::Get::Assume-Yes "true"; +APT::Get::force-yes "true"; +APT::Get::AllowUnauthenticated "true"; diff --git a/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh new file mode 100644 index 00000000..c598027f --- /dev/null +++ b/deploy/adapters/ansible/roles/config-osa/files/op-venv-script.sh @@ -0,0 +1,230 @@ +#!/usr/local/env bash + +set -ev + +function venv_create { + VENV_PATH="$1" + VENV_FILE="$2" + ROLE_VENV_WITH_INDEX="$3" + VENV_VALUES="$4" + + # If the venv working directory already exists remove it + [[ -d "/tmp/${VENV_PATH}" ]] && rm -rf "/tmp/${VENV_PATH}" + + # If the pip build directory already exists remove it + [[ -d "/tmp/${VENV_FILE}" ]] && rm -rf "/tmp/${VENV_FILE}" + + # Create the virtualenv shell + /usr/local/bin/virtualenv --always-copy --extra-search-dir /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --never-download "${VENV_PATH}" + + # Create the pip build directory + mkdir -p "/tmp/${VENV_FILE}" + + # Activate the python virtual environment for good measure + source "${VENV_PATH}/bin/activate" + + # Run the pip install within the venv and specify a specific build directory which + # resolves pip locking issues when run in parallel. + + if [ "${ROLE_VENV_WITH_INDEX}" = false ]; then + ${VENV_PATH}/bin/pip install --build "/tmp/${VENV_FILE}" --timeout 120 --find-links /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --log /var/log/repo/repo_venv_builder.log --no-index ${VENV_VALUES} + + + else + ${VENV_PATH}/bin/pip install --build "/tmp/${VENV_FILE}" --timeout 120 --find-links /var/www/repo/os-releases/15.1.4/ubuntu-16.04-x86_64 --log /var/log/repo/repo_venv_builder.log ${VENV_VALUES} + + fi + + # Deactivate the venv for good measure + deactivate + + # Find and remove all of the python pyc files + find "${VENV_PATH}" -type f -name '*.pyc' -delete + + # Create the archive + tar czf "${VENV_FILE}.tgz" -C "${VENV_PATH}" . + + # Create a checksum file for the archive + sha1sum "${VENV_FILE}.tgz" | awk '{print $1}' > "${VENV_FILE}.checksum" + + # Remove the working directories + rm -rf "${VENV_PATH}" + rm -rf "/tmp/${VENV_FILE}" +} + +# First operation is to sort and set the known os_* roles and create a unique dict. +# NOTE: this is a Jinja loop and will not be rendered within the script. For debugging +# purposes the group data will be rendered as a comment. +# venv to build os_glance +# * packages within the os_glance venv: [u'glance', u'keystonemiddleware', u'os-brick', u'pycrypto', u'pymysql', u'python-cinderclient', u'python-glanceclient', u'python-keystoneclient', u'python-memcached', u'python-swiftclient', u'warlock'] +# venv to build os_ceilometer +# * packages within the os_ceilometer venv: [u'ceilometer', u'ceilometermiddleware', u'gnocchiclient', u'libvirt-python', u'pycrypto', u'pymongo', u'pymysql', u'python-ceilometerclient', u'python-memcached', u'tooz', u'warlock'] +# venv to build os_heat +# * packages within the os_heat venv: [u'heat', u'keystonemiddleware', u'pycrypto', u'pymysql', u'python-ceilometerclient', u'python-cinderclient', u'python-glanceclient', u'python-heatclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'python-openstackclient', u'python-swiftclient', u'python-troveclient'] +# venv to build os_aodh +# * packages within the os_aodh venv: [u'aodh[mysql]', u'ceilometermiddleware', u'gnocchiclient', u'pycrypto', u'pymysql', u'python-ceilometerclient', u'python-memcached', u'warlock'] +# venv to build os_neutron +# * packages within the os_neutron venv: [u'cliff', u'configobj', u'keystonemiddleware', u'neutron', u'pycrypto', u'pymysql', u'python-glanceclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'repoze.lru'] +# venv to build os_cinder +# * packages within the os_cinder venv: [u'cinder', u'ecdsa', u'httplib2', u'keystonemiddleware', u'pycrypto', u'pymysql', u'python-cinderclient', u'python-keystoneclient', u'python-memcached'] +# venv to build os_tempest +# * packages within the os_tempest venv: [u'junitxml', u'nose', u'python-ceilometerclient', u'python-cinderclient', u'python-glanceclient', u'python-heatclient', u'python-keystoneclient', u'python-memcached', u'python-neutronclient', u'python-novaclient', u'python-openstackclient', u'python-saharaclient', u'python-subunit', u'python-swiftclient', u'tempest'] +# venv to build os_keystone +# * packages within the os_keystone venv: [u'argparse', u'keystone', u'keystonemiddleware', u'ldappool', u'lxml', u'oslo.log', u'oslo.middleware', u'pbr', u'pycrypto', u'pymysql', u'pysaml2', u'python-keystoneclient', u'python-ldap', u'python-memcached', u'python-openstackclient', u'repoze.lru', u'uwsgi'] +# venv to build os_gnocchi +# * packages within the os_gnocchi venv: [u'gnocchi[mysql,file,swift,ceph]', u'gnocchiclient', u'keystonemiddleware', u'pycrypto', u'python-memcached'] +# venv to build os_rally +# * packages within the os_rally venv: [u'pymysql', u'rally', u'setuptools'] +# venv to build os_nova +# * packages within the os_nova venv: [u'libvirt-python', u'nova-powervm', u'pyasn1-modules', u'keystonemiddleware', u'nova', u'pycrypto', u'pymysql', u'python-keystoneclient', u'python-memcached', u'python-novaclient', u'python-ironicclient', u'uwsgi', u'websockify', u'nova-lxd', u'pylxd', u'pyopenssl'] +# venv to build os_horizon +# * packages within the os_horizon venv: [u'designate_dashboard', u'django-appconf', u'django-openstack-auth', u'greenlet', u'horizon', u'ironic-ui', u'keystonemiddleware', u'magnum-ui', u'mysql-python', u'neutron-lbaas-dashboard', u'oslo.config', u'ply', u'pycrypto', u'pymysql', u'python-keystoneclient', u'python-memcached', u'sahara_dashboard', u'trove_dashboard'] + +PID=() +# Run the venv create. This will loop over all of the os_group role packages and create a python virtual env. +# Venv creation is done parallel at a count of the known "ansible_processor_count" or using a default of 5. +# This loop will enter the venv build directory and create tagged venvs in a distribution directory +# If the venv archive already exists the creation process will be skipped +pushd "/var/www/repo/venvs/15.1.4/ubuntu-16.04-x86_64" + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/heat" +ROLE_VENV_FILE="heat-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "heat keystonemiddleware pycrypto pymysql python-ceilometerclient python-cinderclient python-glanceclient python-heatclient python-keystoneclient python-memcached python-neutronclient python-novaclient python-openstackclient python-swiftclient python-troveclient" & + pid[1]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/nova" +ROLE_VENV_FILE="nova-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "libvirt-python nova-powervm pyasn1-modules keystonemiddleware nova pycrypto pymysql python-keystoneclient python-memcached python-novaclient python-ironicclient uwsgi websockify nova-lxd pylxd pyopenssl" & + pid[2]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/keystone" +ROLE_VENV_FILE="keystone-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "argparse keystone keystonemiddleware ldappool lxml oslo.log oslo.middleware pbr pycrypto pymysql pysaml2 python-keystoneclient python-ldap python-memcached python-openstackclient repoze.lru uwsgi" & + pid[3]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +#ROLE_VENV_WITH_INDEX=true +#ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/rally" +#ROLE_VENV_FILE="rally-15.1.4-x86_64" +#if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then +# venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "pbr pymysql rally setuptools" & +# pid[4]=$! +#fi +#unset ROLE_VENV_PATH +#unset ROLE_VENV_FILE +#unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/gnocchi" +ROLE_VENV_FILE="gnocchi-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "gnocchi[mysql,file,swift,ceph] gnocchiclient keystonemiddleware pycrypto python-memcached" & + pid[5]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/aodh" +ROLE_VENV_FILE="aodh-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "aodh[mysql] ceilometermiddleware gnocchiclient pycrypto pymysql python-ceilometerclient python-memcached warlock" & + pid[6]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/neutron" +ROLE_VENV_FILE="neutron-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "cliff configobj keystonemiddleware neutron pycrypto pymysql python-glanceclient python-keystoneclient python-memcached python-neutronclient python-novaclient repoze.lru" & + pid[7]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/cinder" +ROLE_VENV_FILE="cinder-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "cinder ecdsa httplib2 keystonemiddleware pycrypto pymysql python-cinderclient python-keystoneclient python-memcached" & + pid[8]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX +for job_pid in ${!pid[@]}; do + wait ${pid[$job_pid]} || exit 99 +done + + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/glance" +ROLE_VENV_FILE="glance-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "glance keystonemiddleware os-brick pycrypto pymysql python-cinderclient python-glanceclient python-keystoneclient python-memcached python-swiftclient warlock" & + pid[9]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +#ROLE_VENV_WITH_INDEX=true +#ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/tempest" +#ROLE_VENV_FILE="tempest-15.1.4-x86_64" +#if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then +# venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "junitxml nose python-ceilometerclient python-cinderclient python-glanceclient python-heatclient python-keystoneclient python-memcached python-neutronclient python-novaclient python-openstackclient python-saharaclient python-subunit python-swiftclient tempest" & +# pid[10]=$! +#fi +#unset ROLE_VENV_PATH +#unset ROLE_VENV_FILE +#unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/horizon" +ROLE_VENV_FILE="horizon-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "designate_dashboard django-appconf django-openstack-auth greenlet horizon ironic-ui keystonemiddleware magnum-ui mysql-python neutron-lbaas-dashboard oslo.config ply pycrypto pymysql python-keystoneclient python-memcached sahara_dashboard trove_dashboard" & + pid[11]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX + +ROLE_VENV_WITH_INDEX=false +ROLE_VENV_PATH="/tmp/openstack-venv-builder/venvs/ceilometer" +ROLE_VENV_FILE="ceilometer-15.1.4-x86_64" +if [ ! -f "${ROLE_VENV_FILE}.tgz" ];then + venv_create "${ROLE_VENV_PATH}" "${ROLE_VENV_FILE}" "${ROLE_VENV_WITH_INDEX}" "ceilometer ceilometermiddleware gnocchiclient libvirt-python pycrypto pymongo pymysql python-ceilometerclient python-memcached tooz warlock" & + pid[12]=$! +fi +unset ROLE_VENV_PATH +unset ROLE_VENV_FILE +unset ROLE_VENV_WITH_INDEX +for job_pid in ${!pid[@]}; do + wait ${pid[$job_pid]} || exit 99 +done + +popd + diff --git a/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt new file mode 100644 index 00000000..56067a6c --- /dev/null +++ b/deploy/adapters/ansible/roles/config-osa/files/requirements_absolute_requirements.txt @@ -0,0 +1,314 @@ +alabaster==0.7.9 +alembic==0.8.10 +amqp==1.4.9 +ansible==2.3.2.0 +anyjson==0.3.3 +aodh==4.0.1.dev5 +aodhclient==0.8.0 +appdirs==1.4.3 +argparse==1.4.0 +automaton==1.7.0 +babel==2.3.4 +beautifulsoup4==4.5.3 +boto==2.45.0 +cachetools==2.0.0 +cassandra_driver==3.7.1 +castellan==0.5.0 +ceilometer==8.0.2.dev15 +ceilometermiddleware==1.0.2 +cffi==1.9.1 +cinder==10.0.2.dev24 +cliff==2.4.0 +cmd2==0.6.9 +configobj==5.0.6 +contextlib2==0.5.4 +cotyledon==1.6.8 +crc16==0.1.1 +croniter==0.3.14 +cryptography==1.7.1 +cursive==0.1.1 +cython==0.26 +datrie==0.7.1 +debtcollector==1.11.0 +decorator==4.0.11 +designate_dashboard==4.0.1.dev3 +django==1.8.17 +django_appconf==1.0.2 +django_babel==0.5.1 +django_compressor==2.1 +django_openstack_auth==3.1.1 +django_pyscss==2.0.2 +dnspython==1.15.0 +docutils==0.12 +dogpile.cache==0.6.2 +dragonflow==3.0.1.dev41 +ecdsa==0.13 +enum34==1.1.6 +eventlet==0.19.0 +extras==1.0.0 +fasteners==0.14.1 +felix==1.4.4 +fixtures==3.0.0 +funcsigs==1.0.2 +functools32==3.2.3.post2 +futures==3.0.5 +futurist==0.21.0 +gevent==1.2.1 +glance==14.0.1.dev5 +glance_store==0.20.0 +gnocchi==3.1.4 +gnocchiclient==3.0.0 +google_api_python_client==1.6.1 +greenlet==0.4.11 +heat==8.0.2.dev4 +horizon==11.0.2.dev21 +httplib2==0.9.2 +idna==2.2 +ijson==2.3 +ipaddress==1.0.18 +ironic_ui==2.2.1.dev6 +iso8601==0.1.11 +jinja2==2.8.1 +jmespath==0.9.0 +jsonpatch==1.15 +jsonpath_rw==1.4.0 +jsonpath_rw_ext==1.0.0 +jsonpointer==1.10 +jsonschema==2.5.1 +junitxml==0.7 +kafka_python==1.3.2 +kazoo==2.2.1 +keystone==11.0.1 +keystoneauth1==2.18.0 +keystonemiddleware==4.14.0 +kombu==3.0.37 +ldappool==2.0.0 +libvirt_python==2.5.0 +linecache2==1.0.0 +logutils==0.3.3 +lxc_python2==0.1 +lxml==3.7.2 +lz4==0.8.2 +magnum_ui==2.2.1.dev4 +mako==1.0.6 +markupsafe==0.23 +microversion_parse==0.1.4 +monotonic==1.2 +msgpack_python==0.4.8 +munch==2.2.0 +murano_pkg_check==0.3.0 +mysql_python==1.2.5 +ndg_httpsclient==0.4.2 +netaddr==0.7.19 +netifaces==0.10.5 +networking_calico==1.3.2.dev3 +networkx==1.11 +neutron==10.0.2.dev45 +neutron_dynamic_routing==10.0.1.dev8 +neutron_fwaas==10.0.2.dev3 +neutron_lbaas==10.0.1 +neutron_lbaas_dashboard==2.0.1.dev7 +neutron_lib==1.1.0 +neutron_vpnaas==10.0.1.dev5 +nose==1.3.7 +nova==15.0.4 +nova_lxd==15.0.1 +nova_powervm==4.0.1.dev9 +numpy==1.12.0 +oauth2client==3.0.0 +oauthlib==2.0.1 +openstacksdk==0.9.13 +os_brick==1.11.0 +osc_lib==1.3.0 +os_client_config==1.26.0 +os_faults==0.1.9 +oslo.cache==1.17.0 +oslo.concurrency==3.18.0 +oslo.config==3.22.0 +oslo.context==2.12.1 +oslo.db==4.17.0 +oslo.i18n==3.12.0 +oslo.log==3.20.1 +oslo.messaging==5.17.1 +oslo.middleware==3.23.1 +oslo.policy==1.18.0 +oslo.privsep==1.16.0 +oslo.reports==1.17.0 +oslo.rootwrap==5.4.0 +oslo.serialization==2.16.0 +oslo.service==1.19.0 +oslo.utils==3.22.0 +oslo.versionedobjects==1.21.0 +oslo.vmware==2.17.0 +osprofiler==1.5.0 +os_testr==0.8.0 +os_vif==1.4.0 +os_win==1.4.1 +os_xenapi==0.1.1 +ovs==2.6.1 +pandas==0.20.3 +paramiko==2.1.1 +passlib==1.7.0 +paste==2.0.3 +pastedeploy==1.5.2 +pathlib==1.0.1 +pbr==1.10.0 +pecan==1.2.1 +pika==0.10.0 +pika_pool==0.1.3 +pint==0.7.2 +pip==9.0.1 +ply==3.9 +positional==1.1.1 +posix_spawn==0.2.post7 +prettytable==0.7.2 +prometheus_client==0.0.20 +psutil==5.0.1 +pyasn1==0.1.9 +pyasn1_modules==0.0.8 +pycadf==2.5.0 +pycparser==2.17 +pycrypto==2.6.1 +pyghmi==1.0.16 +pygments==2.2.0 +pyinotify==0.9.6 +pyldap==2.4.28 +pylxd==2.2.2 +pymongo==3.4.0 +pymysql==0.7.9 +pyopenssl==16.2.0 +pyparsing==2.1.10 +pypowervm==1.0.0.4 +pyroute2==0.4.12 +pysaml2==4.0.2 +pyscss==1.3.4 +pysmi==0.0.7 +pysnmp==4.3.2 +python_barbicanclient==4.2.0 +python_ceilometerclient==2.8.1 +python_cinderclient==1.11.0 +python_dateutil==2.6.0 +python_designateclient==2.6.0 +python_editor==1.0.3 +python_etcd==0.4.4 +python_glanceclient==2.6.0 +python_heatclient==1.8.0 +python_ironicclient==1.11.1 +python_keystoneclient==3.10.0 +python_ldap==2.4.41 +python_magnumclient==2.5.0 +python_manilaclient==1.14.0 +python_memcached==1.58 +python_mimeparse==1.6.0 +python_mistralclient==3.0.0 +python_monascaclient==1.5.0 +python_muranoclient==0.12.0 +python_neutronclient==6.1.0 +python_novaclient==7.1.0 +python_openstackclient==3.8.1 +python_saharaclient==1.1.0 +python_senlinclient==1.2.0 +python_subunit==1.2.0 +python_swiftclient==3.3.0 +python_troveclient==2.8.0 +python_watcherclient==1.0.0 +python_zaqarclient==1.4.0 +pytz==2016.10 +pyudev==0.21.0 +pyyaml==3.12 +pyzmq==16.0.2 +rally==0.8.2.dev10 +rcssmin==1.0.6 +repoze.lru==0.6 +repoze.who==2.3 +requests==2.12.5 +requestsexceptions==1.1.3 +requests_unixsocket==0.1.5 +retrying==1.3.3 +rfc3986==0.4.1 +rjsmin==1.0.12 +routes==2.4.1 +rsa==3.4.2 +rtslib_fb==2.1.62 +ryu==4.10 +sahara_dashboard==6.0.1.dev7 +scipy==0.18.1 +semantic_version==2.6.0 +setproctitle==1.1.10 +setuptools==33.1.1 +shade==1.22.2 +simplegeneric==0.8.1 +simplejson==3.10.0 +singledispatch==3.4.0.3 +six==1.10.0 +snowballstemmer==1.2.1 +sphinx==1.3.6 +sphinx_rtd_theme==0.1.9 +sqlalchemy==1.0.17 +sqlalchemy_migrate==0.10.0 +sqlalchemy_utils==0.32.12 +sqlparse==0.2.2 +statsd==3.2.1 +stevedore==1.20.0 +suds_jurko==0.6 +taskflow==2.9.0 +tempest==14.0.1.dev142 +tempita==0.5.2 +tenacity==3.7.1 +testrepository==0.0.20 +testtools==2.2.0 +tinyrpc==0.5 +tooz==1.48.0 +traceback2==1.4.0 +trollius==2.1 +trove_dashboard==8.0.1.dev1 +ujson==1.35 +unicodecsv==0.14.1 +unittest2==1.1.0 +uritemplate==3.0.0 +urllib3==1.20 +uwsgi==2.0.15 +virtualenv==15.1.0 +virtualenv_tools==1.0 +voluptuous==0.9.3 +waitress==1.0.1 +warlock==1.2.0 +weakrefmethod==1.0.3 +webob==1.6.3 +websockify==0.8.0 +webtest==2.0.24 +werkzeug==0.11.15 +wheel==0.29.0 +wrapt==1.10.8 +ws4py==0.3.4 +wsme==0.9.1 +xstatic==1.0.1 +xstatic_angular==1.5.8.0 +xstatic_angular_bootstrap==2.2.0.0 +xstatic_angular_fileupload==12.0.4.0 +xstatic_angular_gettext==2.3.8.0 +xstatic_angular_lrdragndrop==1.0.2.2 +xstatic_angular_schema_form==0.8.13.0 +xstatic_bootstrap_datepicker==1.3.1.0 +xstatic_bootstrap_scss==3.3.7.1 +xstatic_bootswatch==3.3.7.0 +xstatic_d3==3.5.17.0 +xstatic_font_awesome==4.7.0.0 +xstatic_hogan==2.0.0.2 +xstatic_jasmine==2.4.1.1 +xstatic_jquery==1.10.2.1 +xstatic_jquery_migrate==1.2.1.1 +xstatic_jquery.quicksearch==2.0.3.1 +xstatic_jquery.tablesorter==2.14.5.1 +xstatic_jquery_ui==1.12.0.1 +xstatic_jsencrypt==2.3.1.1 +xstatic_mdi==1.4.57.0 +xstatic_objectpath==1.2.1.0 +xstatic_rickshaw==1.5.0.0 +xstatic_roboto_fontface==0.5.0.0 +xstatic_smart_table==1.4.13.2 +xstatic_spin==1.2.5.2 +xstatic_term.js==0.0.7.0 +xstatic_tv4==1.2.7.0 +yaql==1.1.3 +zope.interface==4.3.3 |