Merge "Change tosca-parser and heat-translator install"

This commit is contained in:
Zuul 2020-12-19 10:29:52 +00:00 committed by Gerrit Code Review
commit 4558f9ad37
8 changed files with 648 additions and 4 deletions

View File

@ -0,0 +1,16 @@
#!/bin/bash
# TODO(yasufum) Remove it after tosca-parser and heat-translator have its own
# devstack script. It's because for installing them from the latest git
# repo instead of stable pip packages.
# Get a customized `upper-constraints.txt` locally, tosca-parser and
# heat-translator are removed for passing tox jobs. In addition, remove nouse
# packages.
function download_upper_constraints_file {
curl --location https://releases.openstack.org/constraints/upper/master \
| sed '/tosca-parser/d' | sed '/heat-translator/d' \
| sed '/python-saharaclient/d' \
> upper-constraints.txt
}
download_upper_constraints_file

View File

@ -499,3 +499,26 @@ function configure_maintenance_event_types {
echo "Configure maintenance event types to $event_definitions_file" echo "Configure maintenance event types to $event_definitions_file"
cat $maintenance_events_file >> $event_definitions_file cat $maintenance_events_file >> $event_definitions_file
} }
# Install pip package from local git repositry.
function install_package_local_repo {
# Name of package, such as `tosca-parser`.
local pkg_name=$1
# (optional) URL of git repo, it's required if the package is not under
# `https://opendev.org/openstack/`.
local git_url=$2
local repo_dir=$DEST/$pkg_name
if [[ $git_url == "" ]]; then
# Expect the repo is under opendev
local git_url=https://opendev.org/openstack/$pkg_name
fi
if [ ! -d $repo_dir ]; then
git clone $git_url $repo_dir
fi
# Install local package with `pip install -e local_dir`.
setup_develop $repo_dir
}

View File

@ -15,6 +15,15 @@ if is_service_enabled tacker; then
echo_summary "Installing Tacker" echo_summary "Installing Tacker"
install_tacker install_tacker
# NOTE(yasufum) We don't use pip packages of tosca-parser and
# heat-translator but cloned git repo for usnig the latest revision
# for development.
# If you install pip packages instead, comment out here, and activate
# entries in `requirements.txt` and `lower-constraints.txt`.
install_package_local_repo tosca-parser
install_package_local_repo heat-translator
. $DEST/tacker/devstack/lib/download_upper_consts
elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
# Configure after the other layer 1 and 2 services have been configured # Configure after the other layer 1 and 2 services have been configured
echo_summary "Configuring Tacker" echo_summary "Configuring Tacker"

View File

@ -34,7 +34,6 @@ futurist==2.1.0
glance-store==2.4.0 glance-store==2.4.0
google-auth==1.4.1 google-auth==1.4.1
greenlet==0.4.15 greenlet==0.4.15
heat-translator==2.0.0
idna==2.6 idna==2.6
imagesize==1.0.0 imagesize==1.0.0
ipaddress==1.0.19 ipaddress==1.0.19
@ -142,7 +141,6 @@ testresources==2.0.1
testscenarios==0.5.0 testscenarios==0.5.0
testtools==2.2.0 testtools==2.2.0
tooz==1.58.0 tooz==1.58.0
tosca-parser==1.6.1
traceback2==1.4.0 traceback2==1.4.0
unittest2==1.1.0 unittest2==1.1.0
urllib3==1.24.2 urllib3==1.24.2
@ -154,3 +152,11 @@ WebOb==1.7.1
websocket-client==0.47.0 websocket-client==0.47.0
WebTest==2.0.27 WebTest==2.0.27
wrapt==1.10.11 wrapt==1.10.11
# TODO(yasufum) Remove following comments after those two packages have devstack script.
# NOTE(yasufum) We don't install tosca-parser and heat-translator of stable,
# but the latest revision from git repo for development.
# If you install packages, comment out two lines of `install_package_gitrepo` in
# `devstack/plugin.sh` in addition to activate following lines.
#heat-translator==2.0.0 # Apache-2.0
#tosca-parser==1.6.1 # Apache-2.0

8
requirements-extra.txt Normal file
View File

@ -0,0 +1,8 @@
# This file is used as an input for pip while runnign tox jobs in addition to
# `requirements.txt`. The reason why separated from `requirements.txt' is
# because the syntax of `-e git+https://...` cannot be understood in job
# `tox -e lower-constraints` and it's failed if it's defined in
# `requirements.txt`.
-e git+https://opendev.org/openstack/tosca-parser.git#egg=tosca-parser # Apache-2.0
-e git+https://opendev.org/openstack/heat-translator.git#egg=heat-translator # Apache-2.0

View File

@ -40,8 +40,6 @@ openstacksdk>=0.44.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0 python-neutronclient>=6.7.0 # Apache-2.0
python-novaclient>=9.1.0 # Apache-2.0 python-novaclient>=9.1.0 # Apache-2.0
rfc3986>=1.1.0 # Apache-2.0 rfc3986>=1.1.0 # Apache-2.0
tosca-parser>=1.6.1 # Apache-2.0
heat-translator>=2.0.0 # Apache-2.0
cryptography>=2.7 # BSD/Apache-2.0 cryptography>=2.7 # BSD/Apache-2.0
paramiko>=2.7.1 # LGPLv2.1+ paramiko>=2.7.1 # LGPLv2.1+
pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2) pyroute2>=0.4.21;sys_platform!='win32' # Apache-2.0 (+ dual licensed GPL2)
@ -55,3 +53,11 @@ PyYAML>=5.1 # MIT
# Glance Store # Glance Store
glance-store>=2.4.0 # Apache-2.0 glance-store>=2.4.0 # Apache-2.0
# TODO(yasufum) Remove following comments after those two packages have devstack script.
# NOTE(yasufum) We don't install tosca-parser and heat-translator of stable,
# but the latest revision from git repo for development.
# If you install packages, comment out two lines of `install_package_gitrepo` in
# `devstack/plugin.sh` in addition to activate following lines.
#heat-translator>=2.0.0 # Apache-2.0
#tosca-parser>=1.6.1 # Apache-2.0

10
tox.ini
View File

@ -6,10 +6,16 @@ ignore_basepython_conflict = True
[testenv] [testenv]
basepython = python3 basepython = python3
# TODO(yasufum) Remove following definitions after tosca-parser and
# heat-translator have its own devstack scripts.
# * `UPPER_CONSTRAINTS_FILE` in setenv
# * `-r{toxinidir}/requirements-extra.txt` in [testenv], [testenv:docs] and
# [testenv:lower-constraints] sections.
setenv = VIRTUAL_ENV={envdir} setenv = VIRTUAL_ENV={envdir}
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true} OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true} OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true} OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
UPPER_CONSTRAINTS_FILE={toxinidir}/upper-constraints.txt
passenv = UPPER_CONSTRAINTS_FILE passenv = UPPER_CONSTRAINTS_FILE
usedevelop = True usedevelop = True
whitelist_externals = rm whitelist_externals = rm
@ -18,6 +24,7 @@ install_command =
deps = deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master} -c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt -r{toxinidir}/requirements.txt
-r{toxinidir}/requirements-extra.txt
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt
commands = commands =
stestr run --slowest --concurrency 1 {posargs} stestr run --slowest --concurrency 1 {posargs}
@ -58,6 +65,7 @@ commands = python ./tools/check_i18n.py ./tacker
[testenv:docs] [testenv:docs]
deps = -r{toxinidir}/doc/requirements.txt deps = -r{toxinidir}/doc/requirements.txt
-r{toxinidir}/requirements-extra.txt
commands = commands =
sphinx-build -W -b html doc/source doc/build/html sphinx-build -W -b html doc/source doc/build/html
oslopolicy-sample-generator --config-file=etc/tacker-policy-generator.conf oslopolicy-sample-generator --config-file=etc/tacker-policy-generator.conf
@ -77,6 +85,7 @@ commands =
[testenv:cover] [testenv:cover]
setenv = setenv =
PYTHON=coverage run --source tacker --parallel-mode PYTHON=coverage run --source tacker --parallel-mode
UPPER_CONSTRAINTS_FILE={toxinidir}/upper-constraints.txt
commands = commands =
stestr run {posargs} stestr run {posargs}
coverage combine coverage combine
@ -117,6 +126,7 @@ deps =
-c{toxinidir}/lower-constraints.txt -c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt -r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt -r{toxinidir}/requirements.txt
-r{toxinidir}/requirements-extra.txt
[testenv:bindep] [testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if # Do not install any requirements. We want this to be fast and work even if

566
upper-constraints.txt Normal file
View File

@ -0,0 +1,566 @@
ntlm-auth===1.5.0
voluptuous===0.12.0
chardet===3.0.4
enum-compat===0.0.3
rsa===4.6
restructuredtext-lint===1.3.2
netmiko===3.3.2
sshtunnel===0.3.1
PasteDeploy===2.1.1
typing===3.7.4.3
Routes===2.5.1
rtslib-fb===2.1.74
oslo.limit===1.2.1
smmap===3.0.4
confget===2.3.4
XStatic-Angular-Bootstrap===2.5.0.0
WebOb===1.8.6
sphinxcontrib-actdiag===2.0.0
pecan===1.3.3
ryu===4.34
os-api-ref===2.1.0
python-ldap===3.3.1
oslo.concurrency===4.3.1
websocket-client===0.57.0
osprofiler===3.4.0
os-resource-classes===1.0.0
tabulate===0.8.7
python-ironic-inspector-client===4.4.0
lxml===4.6.2
vintage===0.4.1
ntc-templates===1.6.0
rst2txt===1.1.0
setproctitle===1.2.1
pytest===6.1.2
python-slugify===4.0.1
cursive===0.2.2
oslo.service===2.4.0
django-appconf===1.0.4
pykerberos===1.2.1
certifi===2020.11.8
sphinxcontrib-nwdiag===2.0.0
rbd-iscsi-client===0.1.8
requests-aws===0.1.8
alabaster===0.7.12
pbr===5.5.1
munch===2.5.0
waiting===1.4.1
attrs===20.3.0
microversion-parse===1.0.1
Pint===0.16.1
oslo.i18n===5.0.1
jsonpath-rw-ext===1.2.2
python-mistralclient===4.1.1
oslo.context===3.1.1
python-senlinclient===2.2.0
rcssmin===1.0.6
pycadf===3.1.1
grpcio===1.34.0
pysendfile===2.0.1
sniffio===1.2.0
fixtures===3.0.0
neutron-lib===2.7.0
XStatic-FileSaver===1.3.2.0
storage-interfaces===1.0.4
persist-queue===0.5.1
pystache===0.5.4
XStatic-Font-Awesome===4.7.0.0
nose===1.3.7
nosehtmloutput===0.0.7
waitress===1.4.4
os-refresh-config===10.4.0
pysnmp===4.4.12
Mako===1.1.3
pyScss===1.3.7
sphinxcontrib-htmlhelp===1.0.3
XStatic-jQuery===1.12.4.1
ddt===1.4.1
XStatic-Graphlib===2.1.7.0
pyserial===3.5
infi.dtypes.wwn===0.1.1
python-freezerclient===4.1.0
os-xenapi===0.3.4
python-vitrageclient===4.2.0
nosexcover===1.0.11
krest===1.3.2
psycopg2===2.8.6
networkx===2.5
bashate===2.0.0
XStatic-Angular===1.5.8.0
pyngus===2.3.1
Pillow===8.0.1
zuul-sphinx===0.5.0
python-mimeparse===1.6.0
tripleo-common===13.0.0
Tempita===0.5.2
ply===3.11
google-api-core===1.23.0
requests-toolbelt===0.9.1
simplejson===3.17.2
suds-jurko===0.6
immutables===0.14;python_version=='3.6'
python-swiftclient===3.11.0
pyOpenSSL===20.0.0
monasca-common===3.2.0
zeroconf===0.28.6
scipy===1.5.4
mypy-extensions===0.4.3
rsd-lib===1.2.0
XStatic-Jasmine===2.4.1.2
googleapis-common-protos===1.52.0
python-glanceclient===3.2.2
pyinotify===0.9.6
debtcollector===2.2.0
requests-unixsocket===0.2.0
croniter===0.3.36
octavia-lib===2.2.0
python-watcherclient===3.1.1
MarkupSafe===1.1.1
pypowervm===1.1.24
doc8===0.8.1
pymongo===3.11.2
python-cloudkittyclient===4.1.0
soupsieve===2.0.1
sqlparse===0.4.1
oslotest===4.4.1
jsonpointer===2.0
defusedxml===0.6.0
netaddr===0.8.0
pyghmi===1.5.19
sphinxcontrib-blockdiag===2.0.0
thrift===0.13.0
gnocchiclient===7.0.6
wcwidth===0.2.5
sphinxcontrib.datatemplates===0.7.2
jsonpath-rw===1.4.0
prettytable===0.7.2
vine===5.0.0
taskflow===4.5.0
traceback2===1.4.0
arrow===0.17.0
semantic-version===2.8.5
virtualbmc===2.2.0
deprecation===2.1.0
SQLAlchemy===1.3.20
pyroute2===0.5.14
google-auth===1.23.0
kazoo===2.8.0
XStatic-roboto-fontface===0.5.0.0
pyudev===0.22.0
eventlet===0.29.1
openstack-doc-tools===3.3.0
oslo.messaging===12.6.0
oslo.metrics===0.1.0
jira===2.0.0
extras===1.0.0
PyJWT===1.7.1
XStatic-lodash===4.16.4.2
zVMCloudConnector===1.4.1
paramiko===2.7.2
ifaddr===0.1.7
reno===3.2.0
imagesize===1.2.0
pydot===1.4.1
urllib3===1.26.2
graphviz===0.15
PyKMIP===0.10.0
whereto===0.4.0
pywbem===1.1.2
python-subunit===1.4.0
tornado===6.1
pycparser===2.20
mock===3.0.5
PyYAML===5.3.1
beautifulsoup4===4.9.3
os-net-config===13.0.0
ovs===2.13.0
cryptography===3.2.1
httpcore===0.12.2
URLObject===2.4.3
nocasedict===1.0.1
psycopg2-binary===2.8.6
openstack-release-test===3.3.1
validations-libs===1.0.4
pylxd===2.2.11
pycryptodomex===3.9.9
anyjson===0.3.3
requests-mock===1.8.0
os-apply-config===11.3.0
prometheus-client===0.9.0
oslosphinx===4.18.0
gunicorn===20.0.4
storpool===5.5.0
textfsm===1.1.0
python-3parclient===4.2.11
unittest2===1.1.0
django-compressor===2.4
libvirt-python===6.10.0
python-zunclient===4.1.1
tzlocal===2.1
sphinxcontrib-jsmath===1.0.1
python-novaclient===17.2.1
pact===1.12.0
bcrypt===3.2.0
os-client-config===2.1.0
XStatic-Angular-Gettext===2.4.1.0
h11===0.11.0
Pygments===2.7.2
XStatic-Hogan===2.0.0.3
XStatic-objectpath===1.2.1.0
python-manilaclient===2.4.0
sphinxcontrib-serializinghtml===1.1.4
requests===2.25.0
snowballstemmer===2.0.0
Jinja2===2.11.2
XStatic-Bootstrap-SCSS===3.4.1.0
pyzabbix===0.8.2
ptyprocess===0.6.0
threadloop===1.0.2
amqp===5.0.2
websockify===0.9.0
XStatic-JQuery.quicksearch===2.0.3.2
mpmath===1.1.0
python-binary-memcached===0.30.1
django-debreach===2.0.1
sphinx-feature-classification===1.1.0
XStatic-JQuery-Migrate===1.2.1.2
pytest-html===3.1.0
appdirs===1.4.4
tinyrpc===1.0.4
google-auth-httplib2===0.0.4
daiquiri===3.0.0
influxdb===5.3.1
funcparserlib===0.3.6
passlib===1.7.4
dib-utils===0.0.11
cliff===3.5.0
os-brick===4.1.0
ansible-runner===1.4.6
scp===0.13.3
python-zaqarclient===2.0.1
lockfile===0.12.2
ldappool===2.4.1
termcolor===1.1.0
joblib===0.17.0
google-api-python-client===1.12.8
castellan===3.7.0
oslo.versionedobjects===2.4.0
enmerkar===0.7.1
webcolors===1.11.1
aodhclient===2.1.1
autobahn===20.7.1
SQLAlchemy-Utils===0.36.8
retryz===0.1.9
pluggy===0.13.1
coverage===5.3
freezegun===1.0.0
toml===0.10.0
pyperclip===1.8.1
cassandra-driver===3.24.0
XStatic-Angular-Schema-Form===0.8.13.0
gabbi===2.0.4
nwdiag===2.0.0
XStatic-bootswatch===3.3.7.0
pytest-xdist===2.1.0
XStatic-JS-Yaml===3.8.1.0
XStatic-term.js===0.0.7.0
oslo.log===4.4.0
nodeenv===1.5.0
gossip===2.4.0
importlib-metadata===3.1.1;python_version=='3.6'
python-searchlightclient===2.1.1
oslo.middleware===4.1.1
apipkg===1.5
XStatic-mdi===1.6.50.2
django-pyscss===2.0.2
uritemplate===3.0.1
docutils===0.15.2
threadpoolctl===2.1.0
os-ken===1.3.0
ujson===4.0.1
selenium===3.141.0
python-glareclient===0.5.3
mypy===0.790
mistral-lib===2.4.0
dogtag-pki===10.7.4.1
XStatic-Angular-UUID===0.0.4.0
purestorage===1.19.0
sphinxcontrib-seqdiag===2.0.0
os-win===5.3.0
capacity===1.3.14
retrying===1.3.3
XStatic-Dagre===0.6.4.1
pydotplus===2.0.2
boto3===1.16.30
jeepney===0.6.0
stestr===3.1.0
oslo.serialization===4.0.1
warlock===1.3.3
exabgp===4.2.11
sphinxcontrib-httpdomain===1.7.0
metalsmith===1.3.0
s3transfer===0.3.3
text-unidecode===1.3
sphinxcontrib-svg2pdfconverter===1.1.0
murano-pkg-check===0.3.0
oslo.vmware===3.7.0
XStatic-moment===2.8.4.3
sqlalchemy-migrate===0.13.0
gitdb===4.0.5
python-monascaclient===2.2.1
ldap3===2.8.1
natsort===7.1.0
requests-ntlm===1.1.0
automaton===2.2.0
os-service-types===1.7.0
keyring===21.5.0
testscenarios===0.5.0
sphinxcontrib-pecanwsme===0.10.0
sadisplay===0.4.9
infinisdk===161.1.3
packaging===20.4
XStatic-Dagre-D3===0.4.17.0
nose-exclude===0.5.0
psutil===5.7.3
py===1.9.0
txaio===20.4.1
elasticsearch===2.4.1
django-nose===1.4.7
XStatic-JQuery.TableSorter===2.14.5.2
pifpaf===3.0.0
pysmi===0.3.4
blockdiag===2.0.1
testtools===2.4.0
infi.dtypes.iqn===0.4.0
XStatic-tv4===1.2.7.0
XStatic-JSEncrypt===2.3.1.1
python-cinderclient===7.2.0
keystonemiddleware===9.2.0
django-formtools===2.2
django-pymemcache===1.0.0
python-ceilometerclient===2.9.0
XStatic-Spin===1.2.5.3
tap-as-a-service===7.0.0
os-traits===2.4.0
SecretStorage===3.3.0
opentracing===2.4.0
XStatic-Rickshaw===1.5.1.0
iso8601===0.1.13
tooz===2.8.0
linecache2===1.0.0
oauth2client===4.1.3
idna===2.10
python-karborclient===2.1.0
yamlloader===0.5.5
protobuf===3.14.0
sushy===3.5.0
python-neutronclient===7.2.1
pika===1.1.0
oslo.cache===2.6.1
WebTest===2.0.35
openstack.nose-plugin===0.11
os-collect-config===11.0.1
edgegrid-python===1.1.1
python-qpid-proton===0.33.0
python-octaviaclient===2.2.0
pysaml2===6.3.1
requests-oauthlib===1.3.0
oslo.reports===2.2.0
bitmath===1.3.3.1
ceilometermiddleware===2.1.0
python-nss===1.0.1
testrepository===0.0.20
sympy===1.7
Logbook===1.5.3
PyNaCl===1.4.0
osc-lib===2.3.0
python-consul===1.1.0
seqdiag===2.0.0
numpy===1.19.4
msgpack===1.0.0
Sphinx===3.3.1
oslo.config===8.4.0
tempest===25.0.0
openstackdocstheme===2.2.7
osc-placement===2.1.0
zake===0.2.2
python-rsdclient===1.0.2
flux===1.3.5
python-solumclient===3.2.0
PyMySQL===0.10.1
uhashring===1.2
kubernetes===12.0.1
httplib2===0.18.1
betamax===0.8.1
construct===2.10.56
pytest-metadata===1.11.0
pyparsing===2.4.7
geomet===0.2.1.post1
distlib===0.3.1
XStatic-Moment-Timezone===0.5.22.0
dogpile.cache===1.1.1
python-barbicanclient===5.0.1
salt===3002.2
api-object-schema===2.0.0
WSME===0.10.0
proboscis===1.2.6.0
oslo.upgradecheck===1.3.0
stevedore===3.3.0
pywinrm===0.4.1
botocore===1.19.30
xmltodict===0.12.0
pyasn1===0.4.8
oslo.rootwrap===6.2.0
Django===2.2.17
pexpect===4.8.0
contextvars===2.4;python_version=='3.6'
cmd2===1.4.0
python-json-logger===2.0.1
redis===3.5.3
jmespath===0.10.0
click===7.1.2
XStatic-smart-table===1.4.13.2
kuryr-lib===2.2.0
scrypt===0.8.17
jsonpatch===1.28
python-daemon===2.2.4
typed-ast===1.4.1
os-testr===2.0.0
cotyledon===1.7.3
xattr===0.9.7
systemd-python===234
python-memcached===1.59
openstacksdk===0.52.0
six===1.15.0
dulwich===0.20.14
dfs-sdk===1.2.26
sentinels===1.0.0
kombu===5.0.2
distro===1.5.0
zstd===1.4.5.1
yaql===1.1.3
requestsexceptions===1.4.0
testresources===2.0.1
falcon===2.0.0
etcd3gw===0.2.5
Flask-RESTful===0.3.8
GitPython===3.1.11
python-ironicclient===4.4.0
XStatic===1.0.2
XStatic-Angular-FileUpload===12.0.4.0
python-openstackclient===5.4.0
pyzmq===20.0.0
nocaselist===1.0.3
oslo.db===8.4.0
simplegeneric===0.8.1
python-pcre===0.7
yappi===1.3.2
dataclasses===0.8;python_version=='3.6'
abclient===0.2.3
pymemcache===3.3.0
wrapt===1.12.1
oslo.privsep===2.4.0
sphinxcontrib-apidoc===0.3.0
oslo.policy===3.6.0
python-muranoclient===2.1.1
hvac===0.10.5
pyeclib===1.6.0
wsgi-intercept===1.9.2
ndg-httpsclient===0.5.1
pyrsistent===0.17.3
repoze.lru===0.7
rfc3986===1.4.0
tenacity===6.2.0
python-designateclient===4.1.0
future===0.18.2
Paste===3.5.0
pytest-django===4.1.0
jaeger-client===4.3.0
XStatic-Json2yaml===0.1.1.0
boto===2.49.0
os-vif===2.3.0
mitba===1.1.1
python-masakariclient===6.2.0
Werkzeug===1.0.1
pyasn1-modules===0.2.8
APScheduler===3.6.3
monotonic===1.5
python-troveclient===6.0.1
etcd3===0.12.0
cachez===0.1.2
XStatic-Bootstrap-Datepicker===1.4.0.0
CouchDB===1.2
netifaces===0.10.9
cachetools===4.1.1
ws4py===0.5.1
sphinxcontrib-qthelp===1.0.3
keystoneauth1===4.3.0
statsd===3.3.0
XenAPI===2.14
importlib-resources===3.3.0;python_version=='3.6'
python-keystoneclient===4.2.0
ceilometer===15.0.0
diskimage-builder===3.4.0
python-magnumclient===3.3.0
docker===4.4.0
storops===1.2.8
XStatic-Angular-lrdragndrop===1.0.2.4
ovsdbapp===1.7.0
aniso8601===8.1.0
rjsmin===1.1.0
icalendar===4.0.7
decorator===4.4.2
cffi===1.14.4
futurist===2.3.0
jsonschema===3.2.0
sphinxcontrib-devhelp===1.0.2
python-blazarclient===3.1.1
alembic===1.4.3
execnet===1.7.1
glance-store===2.4.0
sphinxcontrib-programoutput===0.16
storpool.spopenstack===3.0.0
sphinx-testing===1.0.1
dnspython===1.16.0
oauthlib===3.1.0
Babel===2.9.0
logutils===0.3.5
zipp===3.4.0
greenlet===0.4.17
XStatic-Angular-Vis===4.16.0.0
iniconfig===1.1.1
confluent-kafka===1.5.0
xvfbwrapper===0.2.9
Flask===1.1.2
httpx===0.16.1
sqlalchemy-filters===0.12.0
marathon===0.13.0
sphinxcontrib-runcmd===0.2.0
confspirator===0.2.2
fasteners===0.14.1
sortedcontainers===2.3.0
filelock===3.0.12
python-tackerclient===1.4.0
python-heatclient===2.3.0
kafka-python===2.0.2
oslo.utils===4.7.0
python-editor===1.0.4
gitdb2===4.0.2
requests-kerberos===0.12.0
itsdangerous===1.1.0
XStatic-jquery-ui===1.12.1.1
monasca-statsd===2.1.0
python-dateutil===2.8.1
typing-extensions===3.7.4.3
virtualenv===20.2.1
colorama===0.4.4
confetti===2.5.3
ironic-lib===4.4.0
pytz===2020.4
pytest-forked===1.3.0
XStatic-D3===3.5.17.0
actdiag===2.0.0
sysv-ipc===1.0.1
sphinxcontrib-applehelp===1.0.2
scikit-learn===0.23.2
setuptools===50.3.2