Browse Source

Change tosca-parser and heat-translator install

With devstack, tosca-parser and heat-translator of stable version are
installed via pip as listed in `requirements.txt`. However, we usually
use devsatck for deploying development env, and it's recommended to get
the latest division sometimes. On the other hand, there are not so many
cases using stable ones actually.

This update includes several tricks as following, but most of them are
no need if the two packages have its own devstack script. So, we should
remove the tricks after that as described in TODOs added in the update.

NOTE: As described below, we should update upper-constraints.txt as
following example and upload it to tacker's repo everytime [1] is
updated for the change.

  $ bash devstack/lib/download_upper_consts

* Install packages from cloned git repos in `/opt/stack/` as similar
  to other packages.

* Comment out entries of the two packages in `requirements.txt` and
  `lower-constraints.txt` because no need to install them from here,
  but activate it if you install stable packages.

* To pass tox jobs, add files below.

  * upper-constraints.txt: The two packages are removed from official
    constraints file [1] to skip checking version of stable. This file
    is refreshed everytime running `stack.sh` to catch up the official.

  * requirements-extra.txt: Install the packages from git repo. Without
    separating it from `requirements.txt`, `tox -e lower-constraints`
    is failed.

* Update params in `tox.ini` to activate the modifications above.

[1] https://releases.openstack.org/constraints/upper/master

Signed-off-by: Yasufumi Ogawa <yasufum.o@gmail.com>
Change-Id: I776137215ea06c8ac54612d13a663349c2e7db7d
changes/96/765296/10
Yasufumi Ogawa 1 year ago
parent
commit
500d2eb780
  1. 16
      devstack/lib/download_upper_consts
  2. 23
      devstack/lib/tacker
  3. 9
      devstack/plugin.sh
  4. 10
      lower-constraints.txt
  5. 8
      requirements-extra.txt
  6. 10
      requirements.txt
  7. 10
      tox.ini
  8. 566
      upper-constraints.txt

16
devstack/lib/download_upper_consts

@ -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

23
devstack/lib/tacker

@ -489,3 +489,26 @@ function configure_maintenance_event_types {
echo "Configure maintenance event types to $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
}

9
devstack/plugin.sh

@ -15,6 +15,15 @@ if is_service_enabled tacker; then
echo_summary "Installing 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
# Configure after the other layer 1 and 2 services have been configured
echo_summary "Configuring Tacker"

10
lower-constraints.txt

@ -34,7 +34,6 @@ futurist==2.1.0
glance-store==2.4.0
google-auth==1.4.1
greenlet==0.4.15
heat-translator==2.0.0
idna==2.6
imagesize==1.0.0
ipaddress==1.0.19
@ -142,7 +141,6 @@ testresources==2.0.1
testscenarios==0.5.0
testtools==2.2.0
tooz==1.58.0
tosca-parser==1.6.1
traceback2==1.4.0
unittest2==1.1.0
urllib3==1.24.2
@ -154,3 +152,11 @@ WebOb==1.7.1
websocket-client==0.47.0
WebTest==2.0.27
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

@ -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

10
requirements.txt

@ -40,8 +40,6 @@ openstacksdk>=0.44.0 # Apache-2.0
python-neutronclient>=6.7.0 # Apache-2.0
python-novaclient>=9.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
paramiko>=2.7.1 # LGPLv2.1+
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>=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

@ -6,10 +6,16 @@ ignore_basepython_conflict = True
[testenv]
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}
OS_LOG_CAPTURE={env:OS_LOG_CAPTURE:true}
OS_STDOUT_CAPTURE={env:OS_STDOUT_CAPTURE:true}
OS_STDERR_CAPTURE={env:OS_STDERR_CAPTURE:true}
UPPER_CONSTRAINTS_FILE={toxinidir}/upper-constraints.txt
passenv = UPPER_CONSTRAINTS_FILE
usedevelop = True
whitelist_externals = rm
@ -18,6 +24,7 @@ install_command =
deps =
-c{env:UPPER_CONSTRAINTS_FILE:https://releases.openstack.org/constraints/upper/master}
-r{toxinidir}/requirements.txt
-r{toxinidir}/requirements-extra.txt
-r{toxinidir}/test-requirements.txt
commands =
stestr run --slowest --concurrency 1 {posargs}
@ -58,6 +65,7 @@ commands = python ./tools/check_i18n.py ./tacker
[testenv:docs]
deps = -r{toxinidir}/doc/requirements.txt
-r{toxinidir}/requirements-extra.txt
commands =
sphinx-build -W -b html doc/source doc/build/html
oslopolicy-sample-generator --config-file=etc/tacker-policy-generator.conf
@ -77,6 +85,7 @@ commands =
[testenv:cover]
setenv =
PYTHON=coverage run --source tacker --parallel-mode
UPPER_CONSTRAINTS_FILE={toxinidir}/upper-constraints.txt
commands =
stestr run {posargs}
coverage combine
@ -117,6 +126,7 @@ deps =
-c{toxinidir}/lower-constraints.txt
-r{toxinidir}/test-requirements.txt
-r{toxinidir}/requirements.txt
-r{toxinidir}/requirements-extra.txt
[testenv:bindep]
# Do not install any requirements. We want this to be fast and work even if

566
upper-constraints.txt

@ -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
Loading…
Cancel
Save