# The order of packages is significant, because pip processes them in the order
# of appearance. Changing the order has an impact on the overall integration
# process, which may cause wedges in the gate later.
pbr>=0.11,<2.0
anyjson>=0.3.3
httplib2>=0.7.5
jsonschema>=2.0.0,<3.0.0
testtools>=0.9.36,!=1.2.0
boto>=2.32.1
paramiko>=1.13.0
netaddr>=0.7.12
testrepository>=0.0.18
pyOpenSSL>=0.11
oslo.concurrency>=1.8.0         # Apache-2.0
oslo.config>=1.11.0  # Apache-2.0
oslo.i18n>=1.5.0  # Apache-2.0
oslo.log>=1.0.0  # Apache-2.0
oslo.serialization>=1.4.0               # Apache-2.0
oslo.utils>=1.4.0                       # Apache-2.0
six>=1.9.0
iso8601>=0.1.9
fixtures>=0.3.14
testscenarios>=0.4
tempest-lib>=0.5.0
PyYAML>=3.1.0
