summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Thode <prometheanfire@gentoo.org>2016-09-29 16:42:45 -0500
committerMatthew Thode <prometheanfire@gentoo.org>2016-09-29 22:43:40 -0500
commit19adfded88fa698aa49dd5310b231e9cb57a3ff5 (patch)
tree1f7c14336a06f1350c52b08df7a9d1c9e3cbf612
parentsci-libs/blas-reference: ebuild maintenance, cleanup (diff)
downloadgentoo-19adfded88fa698aa49dd5310b231e9cb57a3ff5.tar.gz
gentoo-19adfded88fa698aa49dd5310b231e9cb57a3ff5.tar.bz2
gentoo-19adfded88fa698aa49dd5310b231e9cb57a3ff5.zip
add initial support for newton (keystone)
dropped py3.3 and updated most (maybe all) to eapi6
-rw-r--r--dev-python/bandit/Manifest1
-rw-r--r--dev-python/bandit/bandit-1.1.0.ebuild53
-rw-r--r--dev-python/dogpile-cache/Manifest1
-rw-r--r--dev-python/dogpile-cache/dogpile-cache-0.6.2.ebuild36
-rw-r--r--dev-python/fixtures/Manifest1
-rw-r--r--dev-python/fixtures/fixtures-3.0.0.ebuild32
-rw-r--r--dev-python/keystoneauth/Manifest1
-rw-r--r--dev-python/keystoneauth/keystoneauth-2.12.1.ebuild28
-rw-r--r--dev-python/keystonemiddleware/Manifest1
-rw-r--r--dev-python/keystonemiddleware/files/CVE-2015-7546_2.3.2.patch596
-rw-r--r--dev-python/keystonemiddleware/keystonemiddleware-4.9.0.ebuild84
-rw-r--r--dev-python/ldappool/Manifest1
-rw-r--r--dev-python/ldappool/ldappool-2.0.0.ebuild24
-rw-r--r--dev-python/oauthlib/Manifest1
-rw-r--r--dev-python/oauthlib/oauthlib-1.1.2.ebuild36
-rw-r--r--dev-python/oslo-cache/Manifest1
-rw-r--r--dev-python/oslo-cache/oslo-cache-1.14.0.ebuild40
-rw-r--r--dev-python/oslo-concurrency/Manifest1
-rw-r--r--dev-python/oslo-concurrency/oslo-concurrency-3.14.0.ebuild60
-rw-r--r--dev-python/oslo-config/Manifest1
-rw-r--r--dev-python/oslo-config/oslo-config-3.14.0.ebuild75
-rw-r--r--dev-python/oslo-context/Manifest1
-rw-r--r--dev-python/oslo-context/oslo-context-2.9.0.ebuild49
-rw-r--r--dev-python/oslo-db/Manifest1
-rw-r--r--dev-python/oslo-db/oslo-db-4.13.3.ebuild55
-rw-r--r--dev-python/oslo-i18n/Manifest2
-rw-r--r--dev-python/oslo-i18n/oslo-i18n-3.9.0.ebuild (renamed from dev-python/oslo-i18n/oslo-i18n-1.4.0.ebuild)38
-rw-r--r--dev-python/oslo-log/Manifest1
-rw-r--r--dev-python/oslo-log/oslo-log-3.16.0.ebuild60
-rw-r--r--dev-python/oslo-log/oslo-log-3.3.0.ebuild4
-rw-r--r--dev-python/oslo-messaging/Manifest1
-rw-r--r--dev-python/oslo-messaging/oslo-messaging-4.6.1.ebuild4
-rw-r--r--dev-python/oslo-messaging/oslo-messaging-5.10.0.ebuild56
-rw-r--r--dev-python/oslo-middleware/Manifest1
-rw-r--r--dev-python/oslo-middleware/oslo-middleware-3.19.0.ebuild57
-rw-r--r--dev-python/oslo-policy/Manifest1
-rw-r--r--dev-python/oslo-policy/oslo-policy-1.14.0.ebuild52
-rw-r--r--dev-python/oslo-serialization/Manifest1
-rw-r--r--dev-python/oslo-serialization/oslo-serialization-2.13.0.ebuild75
-rw-r--r--dev-python/oslo-service/Manifest1
-rw-r--r--dev-python/oslo-service/oslo-service-1.16.0.ebuild63
-rw-r--r--dev-python/oslo-utils/Manifest1
-rw-r--r--dev-python/oslo-utils/oslo-utils-3.16.0.ebuild97
-rw-r--r--dev-python/osprofiler/Manifest1
-rw-r--r--dev-python/osprofiler/osprofiler-1.4.0.ebuild29
-rw-r--r--dev-python/paste/Manifest1
-rw-r--r--dev-python/paste/paste-2.0.3.ebuild73
-rw-r--r--dev-python/positional/Manifest1
-rw-r--r--dev-python/positional/positional-1.1.1.ebuild22
-rw-r--r--dev-python/pyasn1-modules/pyasn1-modules-0.0.8.ebuild2
-rw-r--r--dev-python/pycadf/Manifest1
-rw-r--r--dev-python/pycadf/pycadf-2.4.0.ebuild64
-rw-r--r--dev-python/pyldap/Manifest1
-rw-r--r--dev-python/pyldap/pyldap-2.4.25.1.ebuild75
-rw-r--r--dev-python/pymysql/Manifest1
-rw-r--r--dev-python/pymysql/pymysql-0.7.6.ebuild32
-rw-r--r--dev-python/pysaml2/Manifest1
-rw-r--r--dev-python/pysaml2/pysaml2-4.0.2.ebuild34
-rw-r--r--dev-python/python-keystoneclient/Manifest1
-rw-r--r--dev-python/python-keystoneclient/python-keystoneclient-3.5.0.ebuild55
-rw-r--r--dev-python/reno/Manifest1
-rw-r--r--dev-python/reno/reno-1.8.0.ebuild28
-rw-r--r--dev-python/requests/Manifest1
-rw-r--r--dev-python/requests/requests-2.11.1.ebuild55
-rw-r--r--dev-python/rfc3986/Manifest1
-rw-r--r--dev-python/rfc3986/rfc3986-0.4.1.ebuild28
-rw-r--r--dev-python/routes/Manifest1
-rw-r--r--dev-python/routes/routes-2.3.1.ebuild56
-rw-r--r--dev-python/stevedore/Manifest1
-rw-r--r--dev-python/stevedore/stevedore-1.17.1.ebuild63
-rw-r--r--dev-python/urllib3/urllib3-1.14.ebuild2
-rw-r--r--sys-auth/keystone/keystone-2016.2.9999.ebuild166
72 files changed, 1872 insertions, 620 deletions
diff --git a/dev-python/bandit/Manifest b/dev-python/bandit/Manifest
index 9095d569d0d1..835e8b3fd358 100644
--- a/dev-python/bandit/Manifest
+++ b/dev-python/bandit/Manifest
@@ -1,2 +1,3 @@
DIST bandit-0.13.2.tar.gz 68888 SHA256 ef78c4dda20f758f95aca467fbb6609a696b6df13104d324b329b1bca963e30d SHA512 0809b7bca2f88e579760c7dcd3fedd1bdd394930eb0cd203ec24d75a18cc8007fa0db304a378f2d99d9cfd5e8b1f34a4ebe427a4bcb5daadf3d29acf0a26da42 WHIRLPOOL c91c140a79816d55f46b4b81e8554e2e36ff47b217da0258cc8ca220b59fd1b0622bd938956280ee111ee994cee81a442da3148fc1be9f0ff8c7d1ea2cdc305d
DIST bandit-1.0.1.tar.gz 130662 SHA256 3d3a88bf82375cd18ab889c2bf86dcf840798c74a1a6b8d3015071d9ebf2dcd7 SHA512 47e82de934d1f7b28d4d9acbc33b7cd704bab9332b1ef5815e8f6f8b6c99763b758716782ae0a6b0a7db393e0ec6d619c9c3c70e2e645f23dff28b0de04250d2 WHIRLPOOL f0df1e05bce8c6ee0909ceae6bba0c5f7591a229f99c7c38a726460fb363720a28d87fc47aaa197d00b84c01b3b570a61da82c1902f4b4611b332e2b6d0fb9ad
+DIST bandit-1.1.0.tar.gz 135333 SHA256 b5a011ab77bb9d9f7aca349732db7b9789ebe86a57a9cb49314abcb41161a15e SHA512 0344be4c98b4f1df056761f7735fa0b23dc234c64ca0090d3e665899905eaac9d49750a7ebe6f7f9e4c39d07f3c2cb0d653cc65c0e56dfadac0caeac5799af94 WHIRLPOOL 3df6eb26693d2d0b40ebbcb6774e2a0bba2cda8fad62952467a3b18b1cf538758fefeb2b2281c0c3c5d5de5674ab177ed38263c50451c250502b740df8f1545b
diff --git a/dev-python/bandit/bandit-1.1.0.ebuild b/dev-python/bandit/bandit-1.1.0.ebuild
new file mode 100644
index 000000000000..723b7be190c4
--- /dev/null
+++ b/dev-python/bandit/bandit-1.1.0.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1
+
+DESCRIPTION="A security linter from OpenStack Security"
+HOMEPAGE="https://openstack.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND=">=dev-python/pbr-1.8.0[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/hacking-0.9.2[${PYTHON_USEDEP}]
+ <dev-python/hacking-0.10[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ dev-python/beautifulsoup:4[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/git-python-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]"
+
+python_test() {
+ testr init
+ testr run || die
+}
diff --git a/dev-python/dogpile-cache/Manifest b/dev-python/dogpile-cache/Manifest
index 39163965d582..1a702001453f 100644
--- a/dev-python/dogpile-cache/Manifest
+++ b/dev-python/dogpile-cache/Manifest
@@ -1 +1,2 @@
DIST dogpile.cache-0.6.1.tar.gz 324046 SHA256 69b52dc56bb52d974e9e9fb2764e1311abcd1fd625de07b4e5c05550ac9b40c0 SHA512 c4743a88688d8f596469f2b3adf0cd862dd32891ae8c50d0c0421a984dfec872cbbecf936f704cf4351ae26b3ab4a26ae3b416f7c7f2ce3c41f8da2c9223178b WHIRLPOOL 3e9d4f8475efd34786f8722a9073cbb434bef8a8f5ada22e0309b143fda2a3909af91d69fb2092f6443a1e4ede9650529afbae2514c1374739582eecf05e1ffc
+DIST dogpile.cache-0.6.2.tar.gz 329762 SHA256 73793471af07af6dc5b3ee015abfaca4220caaa34c615537f5ab007ed150726d SHA512 5882e0a355db0bec9c1a0836034481d39008051ff42f48c85679ac70a42c6366d1bcbd01ecd3ca868d7ad725197e626e52b004d62269827e2605a4ecd491ce99 WHIRLPOOL c88f0c503b157c65aae4881b7339c7af7f5b5b045d812220e59736fc78737ae7004bbc0595b5cfed590e5b7d76331b156fa0f28805981bee49ff666a3172ee78
diff --git a/dev-python/dogpile-cache/dogpile-cache-0.6.2.ebuild b/dev-python/dogpile-cache/dogpile-cache-0.6.2.ebuild
new file mode 100644
index 000000000000..78c103a5df65
--- /dev/null
+++ b/dev-python/dogpile-cache/dogpile-cache-0.6.2.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python{2_7,3_3,3_4,3_5} )
+
+inherit distutils-r1
+
+DESCRIPTION="A locking API for expiring values while a single thread generates a new value."
+HOMEPAGE="https://bitbucket.org/zzzeek/dogpile.cache"
+SRC_URI="mirror://pypi/${PN:0:1}/dogpile.cache/dogpile.cache-${PV}.tar.gz"
+S="${WORKDIR}/dogpile.cache-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+RDEPEND=""
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ test? ( dev-python/pytest[${PYTHON_USEDEP}]
+ dev-python/pytest-cov[${PYTHON_USEDEP}]
+ dev-python/mock[${PYTHON_USEDEP}]
+ dev-python/mako[${PYTHON_USEDEP}] )"
+
+# This time half the doc files are missing; Do you want them? toss a coin
+
+python_test() {
+ # crikey. testsuite written for py3, 5 tests fail under py2.7
+ if [[ "${EPYTHON}" != "python2.7" ]]; then
+ nosetests || die "test failed under ${EPYTHON}"
+ else
+ einfo "testsuite restricted for python2.7"
+ fi
+}
diff --git a/dev-python/fixtures/Manifest b/dev-python/fixtures/Manifest
index f1a48cf2fb95..755b8d7b9283 100644
--- a/dev-python/fixtures/Manifest
+++ b/dev-python/fixtures/Manifest
@@ -1 +1,2 @@
DIST fixtures-1.4.0.tar.gz 50411 SHA256 3e1c61753d0fafc1429591d33ad6b828a0673a200eae63dd6ac0685479db5d36 SHA512 62e314821ea507ab5c1465fb626c29c91430b36ae4670fd05a3aa7180452989c393d35ab623da3646b25cf671a84861ab68d9529d04ae759c0d38efca7c7d8cf WHIRLPOOL ad2b0ebf50a01aad4ec6924511eb3d174ebf4ac11306ed2873896380456a20e3fc5b7d84791035cffdc77561664f09f04935ef73246554110df756d8213d469a
+DIST fixtures-3.0.0.tar.gz 56629 SHA256 fcf0d60234f1544da717a9738325812de1f42c2fa085e2d9252d8fff5712b2ef SHA512 e52ba864c42d15a8baa60583761006b2dd78e3cd5f3f043f5702346aef428b933d62e8fa5889b7cb4196e4072acc5df3b7ffa39702a1b782887bdc109299b695 WHIRLPOOL 93f92dc2da126cfd175ec44a783d94b57d0ecfb168887d5117fc723129ecf6dca04ce3aa7186ff9f1c6053b3b7615b1cd961c9d365fca44557fe43f29e87b19e
diff --git a/dev-python/fixtures/fixtures-3.0.0.ebuild b/dev-python/fixtures/fixtures-3.0.0.ebuild
new file mode 100644
index 000000000000..fcd4444cb7e8
--- /dev/null
+++ b/dev-python/fixtures/fixtures-3.0.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} pypy pypy3 )
+
+inherit distutils-r1
+
+DESCRIPTION="Fixtures, reusable state for writing clean tests and more"
+HOMEPAGE="https://launchpad.net/python-fixtures https://pypi.python.org/pypi/fixtures"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="|| ( Apache-2.0 BSD )"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
+IUSE="test"
+
+# nose not listed but provides coverage output of tests
+# run of test files by python lacks any output except on fail
+RDEPEND="
+ >=dev-python/pbr-0.11[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+ >=dev-python/testtools-0.9.22[${PYTHON_USEDEP}]"
+DEPEND="${RDEPEND}
+ test? ( dev-python/mock[${PYTHON_USEDEP}] )"
+#DISTUTILS_IN_SOURCE_BUILD=1
+
+python_test() {
+ emake check
+}
diff --git a/dev-python/keystoneauth/Manifest b/dev-python/keystoneauth/Manifest
index 020aed13bd51..22348e430b36 100644
--- a/dev-python/keystoneauth/Manifest
+++ b/dev-python/keystoneauth/Manifest
@@ -1 +1,2 @@
+DIST keystoneauth1-2.12.1.tar.gz 174620 SHA256 939d89d2998368670f3aad736b7489b6186cceacc5e36623daebab2c07baacf0 SHA512 ce8ecbbc246bf68d1c256754c6637f5477ebac0648065e54e3a63f921349c61c18bbe5f81c817b1fbb7eaed01948ef3b73f0f1e214f1af75f0203be4a8011508 WHIRLPOOL 2f75d5b52499129621268011c22572496704c6796c973d7f627fff6fc4ab2a05b3cf8f67edd8299b1cbc8529352a86cf7e6f71a0b89bdc1da24b4fa7cd5465df
DIST keystoneauth1-2.4.1.tar.gz 150586 SHA256 61a2f4cf374b55f10a0d8250a532ccb93dff2ea81994ced15b2a34af055d4e78 SHA512 f9e8fcea7b23001b907d643d5bf67fc4779c8729cca213b3240ef988eda9de1212b15c2031f6fd8b431aafac85e773346eda71e0b414fe967728611b6817fb05 WHIRLPOOL 42644ede5c0db10ffe77ef106d78764dcb49d455dbc09e3660160b9d7a9eb3453118f6777469f9779e2fca34eb9e09cf3ef759f2f27cc38b8dca8520b9febd43
diff --git a/dev-python/keystoneauth/keystoneauth-2.12.1.ebuild b/dev-python/keystoneauth/keystoneauth-2.12.1.ebuild
new file mode 100644
index 000000000000..4364126c8458
--- /dev/null
+++ b/dev-python/keystoneauth/keystoneauth-2.12.1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="This package contains tools for authenticating to an OpenStack-based cloud."
+HOMEPAGE="https://github.com/openstack/keystoneauth"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}1/${PN}1-${PV}.tar.gz"
+S="${WORKDIR}/${PN}1-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+CDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}"
+RDEPEND="${CDEPEND}
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/positional-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]"
diff --git a/dev-python/keystonemiddleware/Manifest b/dev-python/keystonemiddleware/Manifest
index 9807f7ec0002..28b9d8a8fee5 100644
--- a/dev-python/keystonemiddleware/Manifest
+++ b/dev-python/keystonemiddleware/Manifest
@@ -1 +1,2 @@
DIST keystonemiddleware-4.4.1.tar.gz 194711 SHA256 dff35f0e4acb77f34c9c880bd4f456bbe26a1c4701815d82e8c27ff74a5dfb52 SHA512 c04383836740222d49324cb5f25f8b156424abaa74ac9482a2deb2e1d54cc6d990a864451a075bc12c3d7d38da7235f236e8a8cfb4c3748953c14a4505eeb99f WHIRLPOOL 76a96e6140752cd8eb1d060591c5dec1181abf873c82595be89d9597e3c3e5d3344739fab6b8d0058ae2ab47863e5169d4bbcb4a83f46a24dea042c0ccfac8d0
+DIST keystonemiddleware-4.9.0.tar.gz 198244 SHA256 5d92ef9321a49f06c59d53a92fecc572c559d054abd7f5b7ce5945916770b993 SHA512 0b8870e93bfba3c385cac4515f86a15cc72371f1274db284560d4ecb0e6f4f50064b093a91060728051a2d0732ae7c40a9d2d2dd8b0cfa29ca527b6dceba9e80 WHIRLPOOL 6fd48a653bbe6d5d7d2c40a97dd46310489a153a55e5096d007a54dfd944e22c0f758715e100138f46fbbada241cce5da94338c89be3b293c2142f6cc328ac54
diff --git a/dev-python/keystonemiddleware/files/CVE-2015-7546_2.3.2.patch b/dev-python/keystonemiddleware/files/CVE-2015-7546_2.3.2.patch
deleted file mode 100644
index fa20d325696b..000000000000
--- a/dev-python/keystonemiddleware/files/CVE-2015-7546_2.3.2.patch
+++ /dev/null
@@ -1,596 +0,0 @@
-From 9167afaafc216c63fdc875e737bc379400e94059 Mon Sep 17 00:00:00 2001
-From: Brant Knudson <bknudson@us.ibm.com>
-Date: Tue, 1 Dec 2015 16:08:00 -0600
-Subject: [PATCH] auth_token verify revocation by audit_id
-
-If the revocation list includes audit_ids, then when doing offline
-validation also validate the token isn't revoked by audit_id.
-
-Backport notes:
-- test_auth_token_middleware was refactored with commit 9cbd47b to
- check responses differently, so the test changed to use the old
- method.
-- reno was not supported so the release note is removed.
-
-Closes-Bug: 1490804
-Change-Id: I483bc57bd38eb81a0905bcaf94e4ea82604919d6
-(cherry picked from commit 96ab58e6863c92575ada57615b19652e502adfd8)
----
- examples/pki/cms/auth_token_scoped.json | 5 +-
- examples/pki/cms/auth_token_scoped.pem | 148 ++++++++--------
- examples/pki/cms/auth_token_scoped.pkiz | 2 +-
- examples/pki/cms/auth_v3_token_scoped.json | 3 +
- examples/pki/cms/auth_v3_token_scoped.pem | 190 +++++++++++----------
- examples/pki/cms/auth_v3_token_scoped.pkiz | 2 +-
- keystonemiddleware/auth_token/__init__.py | 12 ++
- keystonemiddleware/auth_token/_revocations.py | 22 +++
- .../unit/auth_token/test_auth_token_middleware.py | 24 +++
- .../tests/unit/auth_token/test_revocations.py | 47 ++++-
- 10 files changed, 281 insertions(+), 174 deletions(-)
-
-diff --git a/examples/pki/cms/auth_token_scoped.json b/examples/pki/cms/auth_token_scoped.json
-index 698e01d..cf18fa1 100644
---- a/examples/pki/cms/auth_token_scoped.json
-+++ b/examples/pki/cms/auth_token_scoped.json
-@@ -8,7 +8,10 @@
- "enabled": true,
- "description": null,
- "name": "tenant_name1"
-- }
-+ },
-+ "audit_ids": [
-+ "SLIXlXQUQZWUi9VJrqdXqA"
-+ ]
- },
- "serviceCatalog": [
- {
-diff --git a/examples/pki/cms/auth_token_scoped.pem b/examples/pki/cms/auth_token_scoped.pem
-index 4a5b3a2..68f5049 100644
---- a/examples/pki/cms/auth_token_scoped.pem
-+++ b/examples/pki/cms/auth_token_scoped.pem
-@@ -1,75 +1,77 @@
- -----BEGIN CMS-----
--MIINhwYJKoZIhvcNAQcCoIINeDCCDXQCAQExCTAHBgUrDgMCGjCCC5QGCSqGSIb3
--DQEHAaCCC4UEgguBew0KICAgICJhY2Nlc3MiOiB7DQogICAgICAgICJ0b2tlbiI6
--IHsNCiAgICAgICAgICAgICJleHBpcmVzIjogIjIwMzgtMDEtMThUMjE6MTQ6MDda
--IiwNCiAgICAgICAgICAgICJpZCI6ICJwbGFjZWhvbGRlciIsDQogICAgICAgICAg
--ICAidGVuYW50Ijogew0KICAgICAgICAgICAgICAgICJpZCI6ICJ0ZW5hbnRfaWQx
--IiwNCiAgICAgICAgICAgICAgICAiZW5hYmxlZCI6IHRydWUsDQogICAgICAgICAg
--ICAgICAgImRlc2NyaXB0aW9uIjogbnVsbCwNCiAgICAgICAgICAgICAgICAibmFt
--ZSI6ICJ0ZW5hbnRfbmFtZTEiDQogICAgICAgICAgICB9DQogICAgICAgIH0sDQog
--ICAgICAgICJzZXJ2aWNlQ2F0YWxvZyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAg
--ICAgICAgICAgICAiZW5kcG9pbnRzX2xpbmtzIjogW10sDQogICAgICAgICAgICAg
--ICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
--ICAgICAgICAgICAgICAgICAgImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6
--ODc3Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAg
--ICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIsDQogICAg
--ICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4w
--LjAuMTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwN
--CiAgICAgICAgICAgICAgICAgICAgICAgICJwdWJsaWNVUkwiOiAiaHR0cDovLzEy
--Ny4wLjAuMTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdh
--Ig0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgXSwNCiAg
--ICAgICAgICAgICAgICAidHlwZSI6ICJ2b2x1bWUiLA0KICAgICAgICAgICAgICAg
--ICJuYW1lIjogInZvbHVtZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7
--DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAg
--ICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsN
--CiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3
--LjAuMC4xOjkyOTIvdjEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lv
--biI6ICJyZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVy
--bmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAg
--ICAgICAgICAgICAgICAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5
--Mi92MSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0s
--DQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAg
--ICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAg
--ICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAg
--ICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAg
--IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8v
--MTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2
--NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lv
--bk9uZSIsDQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAi
--aHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBm
--Y2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY1VS
--TCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVl
--OGE2MGZjZjg5YmI2NjE3YSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAg
--ICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiY29tcHV0ZSIs
--DQogICAgICAgICAgICAgICAgIm5hbWUiOiAibm92YSINCiAgICAgICAgICAgIH0s
--DQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5r
--cyI6IFtdLA0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAg
--ICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVS
--TCI6ICJodHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YyLjAiLA0KICAgICAgICAgICAg
--ICAgICAgICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiLA0KICAgICAgICAgICAg
--ICAgICAgICAgICAgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUz
--NTcvdjIuMCIsDQogICAgICAgICAgICAgICAgICAgICAgICAicHVibGljVVJMIjog
--Imh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIg0KICAgICAgICAgICAgICAgICAg
--ICB9DQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICAidHlwZSI6
--ICJpZGVudGl0eSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAia2V5c3RvbmUi
--DQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJ1c2VyIjogew0K
--ICAgICAgICAgICAgInVzZXJuYW1lIjogInVzZXJfbmFtZTEiLA0KICAgICAgICAg
--ICAgInJvbGVzX2xpbmtzIjogWw0KICAgICAgICAgICAgICAgICJyb2xlMSIsDQog
--ICAgICAgICAgICAgICAgInJvbGUyIg0KICAgICAgICAgICAgXSwNCiAgICAgICAg
--ICAgICJpZCI6ICJ1c2VyX2lkMSIsDQogICAgICAgICAgICAicm9sZXMiOiBbDQog
--ICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJy
--b2xlMSINCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAg
--ICAgICAgICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICAg
--ICAgfQ0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJuYW1lIjogInVzZXJf
--bmFtZTEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHKMIIBxgIBATCBpDCBnjEK
--MAgGA1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlT
--dW5ueXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUx
--JTAjBgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMT
--C1NlbGYgU2lnbmVkAgERMAcGBSsOAwIaMA0GCSqGSIb3DQEBAQUABIIBAGFaC8Po
--svBez6wHfGxgqtX+Zk7kFH0xu/JA7fWp8L5e1k1q+wsSII/P6rATOXR8BSPwifat
--mKRan9kzerLeb3A5g07VphvHfVkDEVaeihi33bpt7140ELSKu/ogWQPtasjBM9Eb
--M9pS4N5NCtZ0erE5DgX//IRfrHFdZuhIbwlmei72692PV7Q70t/rbaH8ofIrH7Rz
--Z1Kuvj0+7tELgd52wy5YnU0e879OEj+2qUk30TvqRG9jdKxLSanmR/8dSA2eNNgO
--oHrtXc4EmpWFbP6yVxNwK3dQ6OvU4virV1YW5+De2ApLt+IeojaVPGnDPfsRvY5x
--t0eIwpDqkgvkRP8=
-+MIIN5QYJKoZIhvcNAQcCoIIN1jCCDdICAQExDTALBglghkgBZQMEAgEwggvqBgkq
-+hkiG9w0BBwGgggvbBIIL13sNCiAgICAiYWNjZXNzIjogew0KICAgICAgICAidG9r
-+ZW4iOiB7DQogICAgICAgICAgICAiZXhwaXJlcyI6ICIyMDM4LTAxLTE4VDIxOjE0
-+OjA3WiIsDQogICAgICAgICAgICAiaWQiOiAicGxhY2Vob2xkZXIiLA0KICAgICAg
-+ICAgICAgInRlbmFudCI6IHsNCiAgICAgICAgICAgICAgICAiaWQiOiAidGVuYW50
-+X2lkMSIsDQogICAgICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLA0KICAgICAg
-+ICAgICAgICAgICJkZXNjcmlwdGlvbiI6IG51bGwsDQogICAgICAgICAgICAgICAg
-+Im5hbWUiOiAidGVuYW50X25hbWUxIg0KICAgICAgICAgICAgfSwNCiAgICAgICAg
-+ICAgICJhdWRpdF9pZHMiOiBbDQogICAgICAgICAgICAgICAgIlNMSVhsWFFVUVpX
-+VWk5VkpycWRYcUEiDQogICAgICAgICAgICBdDQogICAgICAgIH0sDQogICAgICAg
-+ICJzZXJ2aWNlQ2F0YWxvZyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg
-+ICAgICAiZW5kcG9pbnRzX2xpbmtzIjogW10sDQogICAgICAgICAgICAgICAgImVu
-+ZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAg
-+ICAgICAgICAgICAgImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92
-+MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAg
-+ICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIsDQogICAgICAgICAg
-+ICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo4
-+Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwNCiAgICAg
-+ICAgICAgICAgICAgICAgICAgICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAu
-+MTo4Nzc2L3YxLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIg0KICAg
-+ICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgXSwNCiAgICAgICAg
-+ICAgICAgICAidHlwZSI6ICJ2b2x1bWUiLA0KICAgICAgICAgICAgICAgICJuYW1l
-+IjogInZvbHVtZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAg
-+ICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAgICAgICAg
-+ICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAg
-+ICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4x
-+OjkyOTIvdjEiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJy
-+ZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVybmFsVVJM
-+IjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAgICAgICAg
-+ICAgICAgICAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIN
-+CiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0sDQogICAg
-+ICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAgICAgICJu
-+YW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQog
-+ICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtdLA0KICAgICAgICAg
-+ICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAg
-+ICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAu
-+MC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIs
-+DQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSIs
-+DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJuYWxVUkwiOiAiaHR0cDov
-+LzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJi
-+NjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInB1YmxpY1VSTCI6ICJo
-+dHRwOi8vMTI3LjAuMC4xOjg3NzQvdjEuMS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZj
-+Zjg5YmI2NjE3YSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
-+ICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiY29tcHV0ZSIsDQogICAg
-+ICAgICAgICAgICAgIm5hbWUiOiAibm92YSINCiAgICAgICAgICAgIH0sDQogICAg
-+ICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50c19saW5rcyI6IFtd
-+LA0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAg
-+ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJhZG1pblVSTCI6ICJo
-+dHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YyLjAiLA0KICAgICAgICAgICAgICAgICAg
-+ICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiLA0KICAgICAgICAgICAgICAgICAg
-+ICAgICAgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUzNTcvdjIu
-+MCIsDQogICAgICAgICAgICAgICAgICAgICAgICAicHVibGljVVJMIjogImh0dHA6
-+Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIg0KICAgICAgICAgICAgICAgICAgICB9DQog
-+ICAgICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICAgICAidHlwZSI6ICJpZGVu
-+dGl0eSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAia2V5c3RvbmUiDQogICAg
-+ICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJ1c2VyIjogew0KICAgICAg
-+ICAgICAgInVzZXJuYW1lIjogInVzZXJfbmFtZTEiLA0KICAgICAgICAgICAgInJv
-+bGVzX2xpbmtzIjogWw0KICAgICAgICAgICAgICAgICJyb2xlMSIsDQogICAgICAg
-+ICAgICAgICAgInJvbGUyIg0KICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJp
-+ZCI6ICJ1c2VyX2lkMSIsDQogICAgICAgICAgICAicm9sZXMiOiBbDQogICAgICAg
-+ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJyb2xlMSIN
-+CiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIHsNCiAgICAgICAg
-+ICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICAgICAgfQ0K
-+ICAgICAgICAgICAgXSwNCiAgICAgICAgICAgICJuYW1lIjogInVzZXJfbmFtZTEi
-+DQogICAgICAgIH0NCiAgICB9DQp9DQoxggHOMIIBygIBATCBpDCBnjEKMAgGA1UE
-+BRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTdW5ueXZh
-+bGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUxJTAjBgkq
-+hkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMTC1NlbGYg
-+U2lnbmVkAgERMAsGCWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQCgtkCXRzS8
-+s7WjZCsKDhMt6q5JQIm7x6EMKCBaOABQG9EOVIAyqfoJDdjDtz9rZEPO3UVTpPkg
-+VjtA0QV97qT8bX55AcCkk7kBRDOKTtco5GOGwjMxL+GWbIwWiB7DKIP4RA6NLZtF
-+WxUbLBY+OgBSiayuHqSx+Rd08QC9oHf25wRkTNp3VFPxtAleDmASzdAoIafoS+FB
-+Po+9WuTaGdeya7S+ms4SSyXf9cdMKGv010R/aMINWUWaBrkB4wlespYLmKH/XzwS
-+pENRIdbI9XHEOYTWKqul5tucA3p21IA24ND6acl9CXHr3KeqXpRwclSZ38Kg/23T
-+92D+SowEjlGf
- -----END CMS-----
-diff --git a/examples/pki/cms/auth_token_scoped.pkiz b/examples/pki/cms/auth_token_scoped.pkiz
-index 34d7706..cbfc082 100644
---- a/examples/pki/cms/auth_token_scoped.pkiz
-+++ b/examples/pki/cms/auth_token_scoped.pkiz
-@@ -1 +1 @@
--PKIZ_eJylVst2ozgU3OsrZp_Tx4CNY5biaRFLGMx7ZyDGYMBObJ5fPwInpyedzkxmhhUIqVS36t4r_fhBH1HREPlDwrvx4wfACK1bM9CfziE6NjGBZiyd6dg1lyRxuZCgqXSSDddi6rzKKZa0cTxeaNLuRduhaA5kU1nDPR2MVkqaeo_PvX4MOFLEc5wZmfiIKvpehZeAc-XAt46RJlQoP6fe_JpFpXoD4Q4tkaRzEdexkedkGwlmocefYk24RJU1vE8OPOu293jXObUUGGb7tcXE8rkBm0HpSb9oNzmssX1ekCHmNvOg2wwBE-RhibkwCzjM4sEciOcsAjtow5KUhlxkQR5wANvJEWVtiiq9CLmiibKJUR96ySXi-G1U3lnR3ZnQ1-vA6z6wACON_8MCjDR-shDZoOwuAevubGlick7WVmtkqwbbaD5tIC06I0_nZAiaJFcaQHIrI2UwhKWeB4MzEBmzoX08klwsAy5YGJ6ekTzoCKdkB5e5UlDm2ReLUVxUhQ2I1u6NOjH-KKLSaiOuqJM1OURaUe_vVka-Txeu77a9uVZFmloHnJOBf2vbL3rxAOenfhTsvzoBvkL-CPy1uOCjuqfesNGo7mfByuIWeEkxAZZuHa7FZmQEYla40pfXuKfI6i057NqU1gOlyb4t5JukVL5McfBNscbkYqbkot7_1XrwT96PO8elW-09ob57_yb0SahH-wGNc6RUxCV_jNTvZKA5alTj3YojGuJAmFMyJcmJjRk8uIWhKRzWwjzMUz4oEUdyZR7cE61NPJ3qRb5VTL-N93fhgr_N9ZI0kS-yifa50fhcd4nK2wAmO1hW2Ei0fY060K400eNcPp5bzXsWfpXu4BsWDlQflvQCh7NF-2vKjy7svtt9fgcOPqN_t6k4LZZhA5Ic0QFd8HfjYouPtTcNPKug8V6S9elLAUctwCjg2-KGCjdlG62F4nktXmgGTpNQjlo8pDcsKzdsHx2cK0tsm0ssJ3twp013K9U6GSnTzkN3O9IwinD6tvrEc0Z7fxbY-3xVqME4iO-Zdgp9ksdl0SbaW1PReDbS2vHfJbzrwYzgNIzD3jM7VDH3Wnj72dI-l4fesYk0WhuZLoyxJz492rI7s7gUrnSTD_0SUE_pAue9pY3vPSqYXyi7A7X1MDVV-71CRzCcgRHlQwN5B6w-deKenp8Fzt4dm0DvGny1C41zsnQKoxAuoUzrxWcFHCCxp8c8jAMJ0PO_Tfdmm4aLTsohElPiitCxoe100gD1-3dgw8K1sXltJTOQXdNESqvLpq3sABahBllHETusO3O3jqqCoylcYAu1CpwmPyltsY01t3bmFr07XDvFhts78NUGknIrnn3C0Fqgdjotav96WzmJ6jF8Df1iSDTawhyxGYHiO1AdzfUKYMtslXTaSVbamx16XYlUcgkpYEgjUj5cbyAR09PL8ZRpQsuINHwVQLij9yBp74o5-3C9beMjRm4RGubu5K2F9HGJocPh_HJ7OM-zk36Nb-eHw2sxnGZ74rvrAqi2wSpx1jJyNWd7CHM1LftoqJiSh-nGUy32Js_OzhI1jmuXPJJmF9hh5aytDpquHbdgGGbIvIVPr71BcFdDy7fk2ZFJ92m33szIIMlu-IIEf-UzJFJOwolZRZ1hz-ONETD7_AwstzFmO7fpltxy63KH5wd0qXbBIt7HrOs-YWgF-_PT7CF9KnouPykraZg9YN1WOdW_7O0ckPm5UMNs268OL8QpD24qFNvu8eHFEjtI2uct79Qmn3P8cWWacap2kXw1ZCHP4Gzj16QE2-r1YrVQqwweOk_ybmMdDF83-GVNIJjuogqRf95L_wRcTpJ3
-\ No newline at end of file
-+PKIZ_eJylVkuXojgY3edXzL5OnwLUKlnMgrdBwAJDgOx4KK-gVimC_PoJWFVdM93z6DNuNEFu7nfv98i3b-wjawZ0flPs7bj4BmwIV8s8MtdHAotr6khuqhzZ3nxQFFlcKpKr9SqSLDmneVHnMnFtTcq1Ls_DmZzXr6CoS0PsOFnujJxtHmUI9cXqXEaBU5HQGWB1zHc3k0uEC01K-ATZMxIWXRyaNL3BJwAVeLNVe24hqbeQNscq7DeVxm0qaRaU8AwV80QU9qJidomhVyQoronh0fT-jAMkWBTJwS03pfwMG9xGgXkmwbTm0gOmliKV8bSWyswYny-4UKC1vZ0AWhAFPB1pwoNHk0ZvM11sx733P9QsjCptaJcZ9DqFYCz4xOjFETgKcQ3i0NvHgTfFGtxMhDQaJXrhYazHmMenDSbr9KDXwUqXIeWnF1MB37KGVsR3CpAZ-jkR0pFywsRiLLwuEWibreyPvYIY_CmheIvuWhyzlddtyuXVRnAGrEpqbWXOhMtnzhBds0q7OpVXOk00kMasosEfHNXmCSoKp5KbSIjmm8AsnSrqHUErwUSpwYc4ENu7FiYlAou3Flty1-GUMH3Shomt_8gCjDT-Dwsw0phYrHCZGLTC2LQnJk3BZSvpybote7tKxwM6q9KeNmo6c0pRsLdLwTGgAEjFzmmcykE2Zw-YbgxNsA1SkSpfRA0UnEqbRVtTDLddPuYJWcnXmOVCyotn9v0GxnSE-iUbWWQr2rG4xxiFROj5JPAndiw_Ln_d3zPA0TXwq7Z916u-bRC8AiZY-X-cAH-H_An8L-KCT3URXNiTun8v2M_0AhO9QD-8U20_i6vJzqzyKsIALeVeqZ-AdyC2p9cgCWj7n7xXRnbz3hoiLqpIYwukjASbB_bgDk7gzyMUdaRxmo1Ky6hij1BWwLL7Lmg5CXcjQXZKhMVL0twtBiMlEo7Ue-zX3dQ44pXHperxag3azbmNLJjA6Dh3hpSzZlFvfUl18F8q7p_cAL8S78_CBZ_xHvjJHtYj69QQx8QZQqE_Jc3l3q14bmqiu1B-d8m5JqHMs470Q763yYwwQPbC2MK_AE5As7Hlexem3aQZ-AfRBlahvHNj4ZTz7ieObEdHwFdLfsGRT3DwHV3mo6Y_Rfy_VaHf2arEagWytSmCX8n7aUqx4cJmBLf7YbA0F7oLHTYDF_TDkSx0xhE2zcPp91jOrJlMU2pcU_EO8D6Fbqzb0D8zOLM-IZ4J-ugZ429Y3lnTejwYwAMemHBsOrn9u9JseOJPy77YOx1gf1bnnc1k4wfyHnN_Lul38AmEsdiHvGhHUB4qRZHS43h36EAeu11O5r1SSVDOHSxLPpKQ3yuDZN7XEZIoRrZ77hQ3UrHrQq0zVRdpW1uWDCDxvib3tunPcJscqMBygNoe7DRp-vNa6-hLypT3Z14RCedeQ9LLHfiMFO1CwYfy9tbvYPf1qlPLekHeSEiHzGDN1ZevI1B6B2Lpbh5sz-2Alk8nqVp3QSToG6g7J8IACYtI-8ndSHW_HqLJQHYlLc81aX3lauEoClh6VuT6CVmW_Xx4cUKMVpistrF-8znERbl2fHvMwv1Zg7ipXuENxJolYFGlM8EwxIGkw0pI51zZPri711NwFfOy9-h2eDMzXGe6HAtPSqjDtyZSZq0lXBUA-dVBNQ9FszxyDqe-1DG0sq2P0nb_-vCoLDptv3s43RpcnC1-vVPWh6J_uR7D1-xVklHsgVJt1t5DSq3mbKql9HradSuMTCoWQ_HywKdLk7-01l5nbWlbqI8WXjxrwgYhdFwe0MF9AUVO9lb9XD9JQ2Ku-TjaCYawm8_np5i1w2pmP9qSdKH5rttzT12SxPlSXOs3xXe0U6N6BnD2jNsSSlK1ffBnwirm-se3_a7NcLsk-e-_g-lCqznq98vtH9MPoOI=
-\ No newline at end of file
-diff --git a/examples/pki/cms/auth_v3_token_scoped.json b/examples/pki/cms/auth_v3_token_scoped.json
-index 082c1b1..9020745 100644
---- a/examples/pki/cms/auth_v3_token_scoped.json
-+++ b/examples/pki/cms/auth_v3_token_scoped.json
-@@ -1,5 +1,8 @@
- {
- "token": {
-+ "audit_ids": [
-+ "SLIXlXQUQZWUi9VJrqdXqA"
-+ ],
- "methods": [
- "password"
- ],
-diff --git a/examples/pki/cms/auth_v3_token_scoped.pem b/examples/pki/cms/auth_v3_token_scoped.pem
-index e11cf03..e83e7a0 100644
---- a/examples/pki/cms/auth_v3_token_scoped.pem
-+++ b/examples/pki/cms/auth_v3_token_scoped.pem
-@@ -1,98 +1,100 @@
- -----BEGIN CMS-----
--MIIR5gYJKoZIhvcNAQcCoIIR1zCCEdMCAQExCTAHBgUrDgMCGjCCD/MGCSqGSIb3
--DQEHAaCCD+QEgg/gew0KICAgICJ0b2tlbiI6IHsNCiAgICAgICAgIm1ldGhvZHMi
--OiBbDQogICAgICAgICAgICAicGFzc3dvcmQiDQogICAgICAgIF0sDQogICAgICAg
--ICJyb2xlcyI6IFsNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAibmFt
--ZSI6ICJyb2xlMSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAg
--ICAgICAgICAgICAgIm5hbWUiOiAicm9sZTIiDQogICAgICAgICAgICB9DQogICAg
--ICAgIF0sDQogICAgICAgICJleHBpcmVzX2F0IjogIjIwMzgtMDEtMThUMjE6MTQ6
--MDdaIiwNCiAgICAgICAgInByb2plY3QiOiB7DQogICAgICAgICAgICAiaWQiOiAi
--dGVuYW50X2lkMSIsDQogICAgICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAg
--ICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFt
--ZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
--ImVuYWJsZWQiOiB0cnVlLA0KICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogbnVs
--bCwNCiAgICAgICAgICAgICJuYW1lIjogInRlbmFudF9uYW1lMSINCiAgICAgICAg
--fSwNCiAgICAgICAgImNhdGFsb2ciOiBbDQogICAgICAgICAgICB7DQogICAgICAg
--ICAgICAgICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0K
--ICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJhZG1pbiIsDQog
--ICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6
--ODc3Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAg
--ICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAg
--ICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAg
--ICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJpbnRlcm5hbCIsDQogICAg
--ICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3
--Ni92MS82NGI2ZjNmYmNjNTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAg
--ICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAg
--ICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAg
--ICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAg
--ICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEv
--NjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAg
--ICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAg
--ICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0
--eXBlIjogInZvbHVtZSIsDQogICAgICAgICAgICAgICAgIm5hbWUiOiAidm9sdW1l
--Ig0KICAgICAgICAgICAgfSwNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAg
--ICAiZW5kcG9pbnRzIjogWw0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAg
--ICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImFkbWluIiwNCiAgICAgICAg
--ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3Yx
--IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25l
--Ig0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7
--DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFs
--IiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4w
--LjAuMTo5MjkyL3YxIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24i
--OiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAg
--ICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNl
--IjogInB1YmxpYyIsDQogICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0
--dHA6Ly8xMjcuMC4wLjE6OTI5Mi92MSIsDQogICAgICAgICAgICAgICAgICAgICAg
--ICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfQ0K
--ICAgICAgICAgICAgICAgIF0sDQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1h
--Z2UiLA0KICAgICAgICAgICAgICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAg
--ICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50
-+MIISOAYJKoZIhvcNAQcCoIISKTCCEiUCAQExDTALBglghkgBZQMEAgEwghA9Bgkq
-+hkiG9w0BBwGgghAuBIIQKnsNCiAgICAidG9rZW4iOiB7DQogICAgICAgICJhdWRp
-+dF9pZHMiOiBbDQogICAgICAgICAgICAiU0xJWGxYUVVRWldVaTlWSnJxZFhxQSIN
-+CiAgICAgICAgXSwNCiAgICAgICAgIm1ldGhvZHMiOiBbDQogICAgICAgICAgICAi
-+cGFzc3dvcmQiDQogICAgICAgIF0sDQogICAgICAgICJyb2xlcyI6IFsNCiAgICAg
-+ICAgICAgIHsNCiAgICAgICAgICAgICAgICAibmFtZSI6ICJyb2xlMSINCiAgICAg
-+ICAgICAgIH0sDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgIm5hbWUi
-+OiAicm9sZTIiDQogICAgICAgICAgICB9DQogICAgICAgIF0sDQogICAgICAgICJl
-+eHBpcmVzX2F0IjogIjIwMzgtMDEtMThUMjE6MTQ6MDdaIiwNCiAgICAgICAgInBy
-+b2plY3QiOiB7DQogICAgICAgICAgICAiaWQiOiAidGVuYW50X2lkMSIsDQogICAg
-+ICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAgICAgICAgICJpZCI6ICJkb21h
-+aW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFtZSI6ICJkb21haW5fbmFtZTEi
-+DQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgImVuYWJsZWQiOiB0cnVlLA0K
-+ICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogbnVsbCwNCiAgICAgICAgICAgICJu
-+YW1lIjogInRlbmFudF9uYW1lMSINCiAgICAgICAgfSwNCiAgICAgICAgImNhdGFs
-+b2ciOiBbDQogICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50
- cyI6IFsNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAg
- ICAgICAgImludGVyZmFjZSI6ICJhZG1pbiIsDQogICAgICAgICAgICAgICAgICAg
--ICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NC92MS4xLzY0YjZmM2Zi
--Y2M1MzQzNWU4YTYwZmNmODliYjY2MTdhIiwNCiAgICAgICAgICAgICAgICAgICAg
--ICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9
--LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAg
--ICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAg
--ICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJj
--YzUzNDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAg
--ICAgInJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0s
--DQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
--ICJpbnRlcmZhY2UiOiAicHVibGljIiwNCiAgICAgICAgICAgICAgICAgICAgICAg
--ICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUz
--NDM1ZThhNjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAg
--InJlZ2lvbiI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAg
--ICAgICAgICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogImNvbXB1
--dGUiLA0KICAgICAgICAgICAgICAgICJuYW1lIjogIm5vdmEiDQogICAgICAgICAg
--ICB9LA0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMi
--OiBbDQogICAgICAgICAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAg
--ICAgICJpbnRlcmZhY2UiOiAiYWRtaW4iLA0KICAgICAgICAgICAgICAgICAgICAg
--ICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjM1MzU3L3YzIiwNCiAgICAgICAg
--ICAgICAgICAgICAgICAgICJyZWdpb24iOiAiUmVnaW9uT25lIg0KICAgICAgICAg
--ICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAg
--ICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAg
--ICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTozNTM1Ny92
--MyIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogIlJlZ2lvbk9u
--ZSINCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAg
--ew0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMi
--LA0KICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAu
--MC4xOjUwMDAvdjMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6
--ICJSZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
--ICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogImlkZW50aXR5IiwNCiAg
--ICAgICAgICAgICAgICAibmFtZSI6ICJrZXlzdG9uZSINCiAgICAgICAgICAgIH0N
--CiAgICAgICAgXSwNCiAgICAgICAgInVzZXIiOiB7DQogICAgICAgICAgICAiZG9t
--YWluIjogew0KICAgICAgICAgICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAg
--ICAgICAgICAgICAgICAibmFtZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAg
--ICB9LA0KICAgICAgICAgICAgIm5hbWUiOiAidXNlcl9uYW1lMSIsDQogICAgICAg
--ICAgICAiaWQiOiAidXNlcl9pZDEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHK
--MIIBxgIBATCBpDCBnjEKMAgGA1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgT
--AkNBMRIwEAYDVQQHEwlTdW5ueXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8G
--A1UECxMIS2V5c3RvbmUxJTAjBgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFj
--ay5vcmcxFDASBgNVBAMTC1NlbGYgU2lnbmVkAgERMAcGBSsOAwIaMA0GCSqGSIb3
--DQEBAQUABIIBAMq7ffe3ft88hD0EXJfWqkoEGcnal6NmTuLAiCOeQjDxR5TEIx0x
--HanKHWAG7Ko/97KgKAAFwOq3hhnbbKbKq7Z3brUNPXNRwBd3RusUrsLQOWwwKAsF
--acD8a4XXx6oC8dTsuFivDtMNb1JvBRIWcZXznOtn/bkFcvVhOQ+Af93c9xPBUpMq
--1667DbVKWRJEsMrcf5r7wYRQBtAKZU3CAjbNDighdTJWwF7TIWZycnF3OHYmu5J2
--wvcuB8ex+xRvf1lw1qnb3lC43A4M1KqhnHPpWUrpmAFnzAcYwc7ts2iCqD/UwVBP
--YcXU8kk8bY6leNJKR9xjHcIfW8SnREZVbXA=
-+ICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS82NGI2ZjNmYmNj
-+NTM0MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAg
-+ICAicmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfSwN
-+CiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAg
-+ImludGVyZmFjZSI6ICJpbnRlcm5hbCIsDQogICAgICAgICAgICAgICAgICAgICAg
-+ICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS82NGI2ZjNmYmNjNTM0
-+MzVlOGE2MGZjZjg5YmI2NjE3YSIsDQogICAgICAgICAgICAgICAgICAgICAgICAi
-+cmVnaW9uIjogInJlZ2lvbk9uZSINCiAgICAgICAgICAgICAgICAgICAgfSwNCiAg
-+ICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgImlu
-+dGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInVy
-+bCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvNjRiNmYzZmJjYzUzNDM1ZThh
-+NjBmY2Y4OWJiNjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lv
-+biI6ICJyZWdpb25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAg
-+ICAgICAgICBdLA0KICAgICAgICAgICAgICAgICJ0eXBlIjogInZvbHVtZSIsDQog
-+ICAgICAgICAgICAgICAgIm5hbWUiOiAidm9sdW1lIg0KICAgICAgICAgICAgfSwN
-+CiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAiZW5kcG9pbnRzIjogWw0K
-+ICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAi
-+aW50ZXJmYWNlIjogImFkbWluIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1
-+cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3YxIiwNCiAgICAgICAgICAgICAg
-+ICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAgICAgICAgICAgICAg
-+ICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAg
-+ICAgICAgICAiaW50ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAg
-+ICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyL3YxIiwNCiAg
-+ICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVnaW9uT25lIg0KICAg
-+ICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICB7DQogICAg
-+ICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogInB1YmxpYyIsDQogICAg
-+ICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6Ly8xMjcuMC4wLjE6OTI5
-+Mi92MSIsDQogICAgICAgICAgICAgICAgICAgICAgICAicmVnaW9uIjogInJlZ2lv
-+bk9uZSINCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIF0s
-+DQogICAgICAgICAgICAgICAgInR5cGUiOiAiaW1hZ2UiLA0KICAgICAgICAgICAg
-+ICAgICJuYW1lIjogImdsYW5jZSINCiAgICAgICAgICAgIH0sDQogICAgICAgICAg
-+ICB7DQogICAgICAgICAgICAgICAgImVuZHBvaW50cyI6IFsNCiAgICAgICAgICAg
-+ICAgICAgICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZSI6
-+ICJhZG1pbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAidXJsIjogImh0dHA6
-+Ly8xMjcuMC4wLjE6ODc3NC92MS4xLzY0YjZmM2ZiY2M1MzQzNWU4YTYwZmNmODli
-+YjY2MTdhIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJyZWdpb24iOiAicmVn
-+aW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAg
-+ICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50ZXJmYWNlIjogImlu
-+dGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDov
-+LzEyNy4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJi
-+NjYxN2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdp
-+b25PbmUiDQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAg
-+ICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UiOiAicHVi
-+bGljIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiAiaHR0cDovLzEy
-+Ny4wLjAuMTo4Nzc0L3YxLjEvNjRiNmYzZmJjYzUzNDM1ZThhNjBmY2Y4OWJiNjYx
-+N2EiLA0KICAgICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJyZWdpb25P
-+bmUiDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0K
-+ICAgICAgICAgICAgICAgICJ0eXBlIjogImNvbXB1dGUiLA0KICAgICAgICAgICAg
-+ICAgICJuYW1lIjogIm5vdmEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
-+ew0KICAgICAgICAgICAgICAgICJlbmRwb2ludHMiOiBbDQogICAgICAgICAgICAg
-+ICAgICAgIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2UiOiAi
-+YWRtaW4iLA0KICAgICAgICAgICAgICAgICAgICAgICAgInVybCI6ICJodHRwOi8v
-+MTI3LjAuMC4xOjM1MzU3L3YzIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJy
-+ZWdpb24iOiAiUmVnaW9uT25lIg0KICAgICAgICAgICAgICAgICAgICB9LA0KICAg
-+ICAgICAgICAgICAgICAgICB7DQogICAgICAgICAgICAgICAgICAgICAgICAiaW50
-+ZXJmYWNlIjogImludGVybmFsIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICJ1
-+cmwiOiAiaHR0cDovLzEyNy4wLjAuMTozNTM1Ny92MyIsDQogICAgICAgICAgICAg
-+ICAgICAgICAgICAicmVnaW9uIjogIlJlZ2lvbk9uZSINCiAgICAgICAgICAgICAg
-+ICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgew0KICAgICAgICAgICAgICAg
-+ICAgICAgICAgImludGVyZmFjZSI6ICJwdWJsaWMiLA0KICAgICAgICAgICAgICAg
-+ICAgICAgICAgInVybCI6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjMiLA0KICAg
-+ICAgICAgICAgICAgICAgICAgICAgInJlZ2lvbiI6ICJSZWdpb25PbmUiDQogICAg
-+ICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBdLA0KICAgICAgICAg
-+ICAgICAgICJ0eXBlIjogImlkZW50aXR5IiwNCiAgICAgICAgICAgICAgICAibmFt
-+ZSI6ICJrZXlzdG9uZSINCiAgICAgICAgICAgIH0NCiAgICAgICAgXSwNCiAgICAg
-+ICAgInVzZXIiOiB7DQogICAgICAgICAgICAiZG9tYWluIjogew0KICAgICAgICAg
-+ICAgICAgICJpZCI6ICJkb21haW5faWQxIiwNCiAgICAgICAgICAgICAgICAibmFt
-+ZSI6ICJkb21haW5fbmFtZTEiDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAg
-+Im5hbWUiOiAidXNlcl9uYW1lMSIsDQogICAgICAgICAgICAiaWQiOiAidXNlcl9p
-+ZDEiDQogICAgICAgIH0NCiAgICB9DQp9DQoxggHOMIIBygIBATCBpDCBnjEKMAgG
-+A1UEBRMBNTELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAkNBMRIwEAYDVQQHEwlTdW5u
-+eXZhbGUxEjAQBgNVBAoTCU9wZW5TdGFjazERMA8GA1UECxMIS2V5c3RvbmUxJTAj
-+BgkqhkiG9w0BCQEWFmtleXN0b25lQG9wZW5zdGFjay5vcmcxFDASBgNVBAMTC1Nl
-+bGYgU2lnbmVkAgERMAsGCWCGSAFlAwQCATANBgkqhkiG9w0BAQEFAASCAQBBvzoh
-+0iSPMQhuRCAtTG3cPhyewvf554MPjbGQnu8mYmmfyxl7gMmWkTAmyckAsSv4mS6/
-+4SQj9WCn4T1lFkhUz7WWjCwt6fWWp3mzF8Nl/kMsJKDwlxDGbPzsyewXIUsw11sz
-+q/Qxs7qGxQ1vYWnaWQ3hC3oZw7cOswKRJicdP439iVPvfqR9CDbK55sPP+ewZRgQ
-+YJ3Uc/xDizxepudFJj9+VHKceA37/sVK0ataNe2uHLHwVBYPwOppMckP169QBw8x
-+QYh9h+kcOAyZ5psiUzCpLKnlMiYDrVcTGxnTeiVHxKXxj/MERNhR1Y4lEr0ZHJ+p
-+Y6p3FBP2VUCefaRh
- -----END CMS-----
-diff --git a/examples/pki/cms/auth_v3_token_scoped.pkiz b/examples/pki/cms/auth_v3_token_scoped.pkiz
-index d687c03..74f8f63 100644
---- a/examples/pki/cms/auth_v3_token_scoped.pkiz
-+++ b/examples/pki/cms/auth_v3_token_scoped.pkiz
-@@ -1 +1 @@
--PKIZ_eJy9V8lyo0gQvddXzN3RYUCgNoc-FItYTCGBEEvdWCwWscjWwvL1UyDJ3W577J6YiFGEDlUFmS_zvcxKvn0jP0FWNPMvEa3HxTeANE1X2kB_bLCWnWMTWrHYkD1JEkXRSkVoyZ3oQFVINy9SikSlEEWhTxVx_aystWgGJEtWYUg2u52cprH71OtUxBzLKNfmmnrIY1U_h5VbJOJljRX-GHjlSSualDx7AoFHl-NCq-xz5C32Ucmfxj201g6aqO_x-KKo7yKGzkKP24ae1Wk1NZ6VUbXIQaS4u9FAouo0XrfEEJdF3iZf5jBPFJcY4yifmfY6LR_P7TJmzD70BSr0-BMYX45q9xCJ42E5GdNqe7R-Shb8Hktyvh0N1_qZOBvGc292yMn5Ea-1OSBQ-ojpCGSdN0Th-68I4oo_YEfLt-4E-Yh9u4kY-2Kk19vANweQMHyPRT0xRJhjP2tDXy9jms-mpIlajyTEGg7sDEdmXUnrloVMLQs48_IpRwUIfDuLFL7-HRo5ZAgyekQzGfe4Xazw-6i2X8NIfP0ALgxkVKLCudE_dKiIT0hkW6OQ50spnpk5z6D1A2MqGoMLswoqszAdRKHBLZeKzACk4AIXKRdUGmMW8iy40kc8lXGFs4C55CPw7GPosROauHLrkYHROSDZLTFTnqMdf8K3RNZuH134bxLVbpf5wxk52swo4IiO5CGdmUNwTgr5DMzCzgmwAVd6EQybwZQQjZ0sMwuhCpiAXXp6bhZBZzLy5J2IicK-XgWeWV4QVOWJCKYnyTtMQrkhyicEPfaSfcRwq6jaTHog8qXjqp3CClWbArHUnI1B7s1-TByB6DSsOcSMMQs6YwiooMAVYnAeMIhGgzWY3oYNnKDFlVktpTIHQUGOnCS7yPSCBleL4kplm3j6IfTQu-TdkIJb8vxJrjYXK9c6ICpMxkIbC0d9o486UhankZ3RKPgngXyqD0fj0KQP7QD-DecfUQ6-5nzXE48j5_8fjRwiXkca_4QZ8FmMvzMTenSGmVckU-u7ViN3Tir507L9J1bAa9mKIy3sH6nvV_GBD2LMsELvo0vHuSaRvba4S7gOw70KDHwpmi_Qgc_gfYDuKjrSeMULQvAVxK8Qgv-SwBEh-Lfl-7tGwE0kAcMfY9Wl8AcXTMi4XDwjd2f1vsWDPy1hNPZLJyZFhd4UFbhVlVYtdtF4bb8vqPVnBQXGivqgoIg3RJs9SW7_8T1xRTDOB-37hJV_fleAn41j0yIJvovxNcRaoIOq2wf9W4mDEc7mjYDo6aZO1LK9qQ-TQSNRSurplT53wL5GQhlb2m20uc5Ev3Tf17Fm2nNuLc2acnCblYDPlLvLcAF_fZmOGbd_O9rcppfRu36dlWgebB1FhHHTpqmqwFQWkKbsyP8JWU0rwkByLWshtzKNrEMrWtNakVvd3QyygeBOAZDeyKKARIuSO7mAlpCargBjR3RNOqo4LiHNlsBfIwEq07MZ0p2ZUEalSZEEvwBky63UTpYNuc0M7JdDohD6HLlEInodKMk8qUM78H7K2oURMQSi-mLJqMisNMgbJGiTJ9ghY8O4B5wLTuglJ-xZIiTOhDZYPLasBLOmlaxABz9HXFkQLEimVRnmJ3OlLmcvbKSdqMYrmzCrm95WXJ12CpbiH4Ln1O5ZzC2aZ6DndyU-zU7DXS1QL_Ndjdd-JsAIqbs9v3To5N5fB9zLshOf-uql6beRHX3H4Xy_hxWW6AqsHh-d7_NktVXtxxXTR2yhoe3cWAcs_bxqnxTBqRUha-onmROWuZpIXC05Em0v1vaB1bI50P2ZKjyrfXi33B4XFO47K4lXsKyFx7vW2Id3ZyKK9OUQMH7ztHPNY-vcQ38ZZliW5ORlDQYlpPYnVmg1NNNgWvIzt33g7oXy0LVwkMU8rNSu3g6ORWFa9GAxHL1NWqSxkdqqeL4HK0GEBs73RVma-_uGClnlMehWZR49Gdvvq8UiiqvZ1jZ0-OMHmD4xZFP6-bnxN6RCLsw=
-\ No newline at end of file
-+PKIZ_eJy9V0tzozoT3etX3H1qKoBNEhbfgpexMJKNjXloZyDmJWwnNs9f_wnsSWYyuXUzc6uuq7yQQN2n-_RpNd--sZ-iGxD_paLNsPgGEISmIwfm4khgWkdYtiP1yPZWjqqqTqHKtt5qjmwpCU3SIlGIjXQ50ZskiddKUryAtMgMqeEUpTEStqkqEM5Xh3MWG9Ir8abZMlMeYcnT2EhrMkfDOoQHJY0meBJOzAJAyp2hanah0NKogw9wdmEHxDT0tuxlOYtK6UwcPdtvmuS5M6vA4ynMjwk8mHVobDsAD3xsqXJG_LTZ-SaNeCmNVWZIhR3S0NRy5NZy9KmrwXaZ69wylydeBgenDTP-AoiHucEis16EAp_u3mDTYvRUruvQm51CKp2IpmeDs7CcXchmcMJCuB4S9-PmDSosXQbVPBPPHoxx0cGlw8HduJZZfobnIucLtABoM8L5IbY1ZcaqeCaNe7fnBfFxHpW0iQ1ahxnzboh8aLQSGCwHwowLvLYmb0l0KzJXaoaMe08srZjnjpSz_AY_JQZ_AuE1IXxUNiO83XzNRdqxtnq9w920sXK5Qs5xivtIsCZBa_UBF-SkRAJhjhEPUG_32NtOAydoSInLpUazIGePnDiFWTPQRYlwg83oJl58CgVxFZbbMV-AZf8UsrijkqSBcOV-gE78IS_NmPXYN89XRlIunssPVvfUojyqkDptgJXrD0uN1VUmCWjzJGADCiTHZVDiHDuIQ71Ll4YuIIPkJE_EoIQCzvVJcE1uB66Qpreqcw87T6ocQaTwwCp0fv6Opgw8fGNJ4YOyPQXdNXfgT5P3PXfgj5Lnjvrhnn2FgissUodzdyjPD0X1fd-ULFX5tD7A3xXIF-tDBCgvuiHGr3D-GeXgdzgfKXegiEbK_yMaxX8KEXxGzTUEegm8mI4Hf2hxRGjTsMRvCFkIYhEZ0pCcfjjoTT6BXc6K0KPVFYXbhWPLM4_xfN2AZfZUIwdORsjqlPW9ZIJ7u45zvfqKNsBHcfxuUt8KibWx82cQ_wkh-F35fkQIfpf3j7SDT-TLjfLN9Rrn64xh60lp5kG_7bGGeOKkKc6VMhCC6dIzM4DzoMXC9cL4nrTb1XUtmkKqBjX6w31xWIuRca2HQJAu0dzlwC8SLsU6Lt_uQnZHrJtQYIm-XawfBQVGa976MlxpXxETGkJxIsYCGt8HP8GmP8O-NpFf-sUNAStvFZ7BF5oG84h43DEJd79SCbZ_IOEfHYJPPPJIkxtGZf-JhDcfmyv4IOGCqZPb-Wvxo4x3gitGEzYrvEufjwS3A_9muBjOgF-Hi3evsY9pRH-aE07kKrTR-23AGOhiteC7BYO-33m3xtKZjqPTIJyla9ed7VzePS1dsogOs8KbzxRIeWnvGCqQoymb-eYLNvspCBoF-z8j-9iocqC5tj3TG51H9rlR7XFt6I3pbnvdQnJhyPxWB6qCVJvTWz2XbSXBriJHjupiPixFMWY9goW2QYo8vqymyHQmCg0pZhMNfkVrvQFaM1q29Ca1iE97NmBW7BBFKjLUzYuxgeFEs3VTXgfeOxOuHA6GDpgDgyWrlDrS61ukwNGT3CJrK7hnkinOzosrNq2pMvOmNoEZQAJlb6spMlSQzBngBy-KbG9lNuoqsl45jyd9AeeC-HheWe3ZcDV83l82hJcKyxTugoXTmR29W7ggfMi9NIj3U057PbLunu_O-6Pf76PznSIHxJRq4e7OOIWL7KTwPgcP9f2rd7_dRKUwebBCDmgngUi2KFhknc5gFhThttK4Je6NbWFO4GIz0T3rsfJW4mql2yo1yqqtlZnzjLO21O874K2f7p-3F08ISRVMDf_iXbz5PD_K8sTuT0er8oTnKn5NWsdHyHVR99DQbfas-vv01XjSVsATVN47Wg1furyTLmYXI0p8ob7Xl6tjv6sXjplX6K40Nz4WV013XF_UIgmX3fSurGfTwwJ0j4vLEa_um-eE7-4VWqYvq8eX-zbZTFYPl2htaOZRdlYzh4P_A-M3io619--V_wMk2UFA
-\ No newline at end of file
-diff --git a/keystonemiddleware/auth_token/__init__.py b/keystonemiddleware/auth_token/__init__.py
-index a8afeb2..be268da 100644
---- a/keystonemiddleware/auth_token/__init__.py
-+++ b/keystonemiddleware/auth_token/__init__.py
-@@ -883,6 +883,18 @@ class AuthProtocol(_BaseAuthProtocol):
- 'fallback to online validation.'))
- else:
- data = jsonutils.loads(verified)
-+
-+ audit_ids = None
-+ if 'access' in data:
-+ # It's a v2 token.
-+ audit_ids = data['access']['token'].get('audit_ids')
-+ else:
-+ # It's a v3 token
-+ audit_ids = data['token'].get('audit_ids')
-+
-+ if audit_ids:
-+ self._revocations.check_by_audit_id(audit_ids)
-+
- return data
-
- def _validate_token(self, auth_ref):
-diff --git a/keystonemiddleware/auth_token/_revocations.py b/keystonemiddleware/auth_token/_revocations.py
-index 8cc449a..a68356a 100644
---- a/keystonemiddleware/auth_token/_revocations.py
-+++ b/keystonemiddleware/auth_token/_revocations.py
-@@ -104,3 +104,25 @@ class Revocations(object):
- if self._any_revoked(token_ids):
- self._log.debug('Token is marked as having been revoked')
- raise exc.InvalidToken(_('Token has been revoked'))
-+
-+ def check_by_audit_id(self, audit_ids):
-+ """Check whether the audit_id appears in the revocation list.
-+
-+ :raises keystonemiddleware.auth_token._exceptions.InvalidToken:
-+ if the audit ID(s) appear in the revocation list.
-+
-+ """
-+ revoked_tokens = self._list.get('revoked', None)
-+ if not revoked_tokens:
-+ # There's no revoked tokens, so nothing to do.
-+ return
-+
-+ # The audit_id may not be present in the revocation events because
-+ # earlier versions of the identity server didn't provide them.
-+ revoked_ids = set(
-+ x['audit_id'] for x in revoked_tokens if 'audit_id' in x)
-+ for audit_id in audit_ids:
-+ if audit_id in revoked_ids:
-+ self._log.debug(
-+ 'Token is marked as having been revoked by audit id')
-+ raise exc.InvalidToken(_('Token has been revoked'))
-diff --git a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
-index 3fdd4a9..e729735 100644
---- a/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
-+++ b/keystonemiddleware/tests/unit/auth_token/test_auth_token_middleware.py
-@@ -896,6 +896,30 @@ class CommonAuthTokenMiddlewareTest(object):
- def test_revoked_hashed_pkiz_token(self):
- self._test_revoked_hashed_token('signed_token_scoped_pkiz')
-
-+ def test_revoked_pki_token_by_audit_id(self):
-+ # When the audit ID is in the revocation list, the token is invalid.
-+ self.set_middleware()
-+ token = self.token_dict['signed_token_scoped']
-+
-+ # Put the token audit ID in the revocation list,
-+ # the entry will have a false token ID so the token ID doesn't match.
-+ fake_token_id = uuid.uuid4().hex
-+ # The audit_id value is in examples/pki/cms/auth_*_token_scoped.json.
-+ audit_id = 'SLIXlXQUQZWUi9VJrqdXqA'
-+ revocation_list_data = {
-+ 'revoked': [
-+ {
-+ 'id': fake_token_id,
-+ 'audit_id': audit_id
-+ },
-+ ]
-+ }
-+ self.middleware._revocations._list = jsonutils.dumps(
-+ revocation_list_data)
-+
-+ resp = self.call_middleware(headers={'X-Auth-Token': token})
-+ self.assertEqual(401, resp.status_int)
-+
- def get_revocation_list_json(self, token_ids=None, mode=None):
- if token_ids is None:
- key = 'revoked_token_hash' + (('_' + mode) if mode else '')
-diff --git a/keystonemiddleware/tests/unit/auth_token/test_revocations.py b/keystonemiddleware/tests/unit/auth_token/test_revocations.py
-index cef65b8..258e195 100644
---- a/keystonemiddleware/tests/unit/auth_token/test_revocations.py
-+++ b/keystonemiddleware/tests/unit/auth_token/test_revocations.py
-@@ -27,22 +27,24 @@ from keystonemiddleware.tests.unit import utils
-
- class RevocationsTests(utils.BaseTestCase):
-
-- def _check_with_list(self, revoked_list, token_ids):
-+ def _setup_revocations(self, revoked_list):
- directory_name = '/tmp/%s' % uuid.uuid4().hex
- signing_directory = _signing_dir.SigningDirectory(directory_name)
- self.addCleanup(shutil.rmtree, directory_name)
-
- identity_server = mock.Mock()
-
-- verify_result_obj = {
-- 'revoked': list({'id': r} for r in revoked_list)
-- }
-+ verify_result_obj = {'revoked': revoked_list}
- cms_verify = mock.Mock(return_value=json.dumps(verify_result_obj))
-
- revocations = _revocations.Revocations(
- timeout=datetime.timedelta(1), signing_directory=signing_directory,
- identity_server=identity_server, cms_verify=cms_verify)
-+ return revocations
-
-+ def _check_with_list(self, revoked_list, token_ids):
-+ revoked_list = list({'id': r} for r in revoked_list)
-+ revocations = self._setup_revocations(revoked_list)
- revocations.check(token_ids)
-
- def test_check_empty_list(self):
-@@ -63,3 +65,40 @@ class RevocationsTests(utils.BaseTestCase):
- token_ids = [token_id]
- self.assertRaises(exc.InvalidToken,
- self._check_with_list, revoked_tokens, token_ids)
-+
-+ def test_check_by_audit_id_revoked(self):
-+ # When the audit ID is in the revocation list, InvalidToken is raised.
-+ audit_id = uuid.uuid4().hex
-+ revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': audit_id}]
-+ revocations = self._setup_revocations(revoked_list)
-+ self.assertRaises(exc.InvalidToken,
-+ revocations.check_by_audit_id, [audit_id])
-+
-+ def test_check_by_audit_id_chain_revoked(self):
-+ # When the token's audit chain ID is in the revocation list,
-+ # InvalidToken is raised.
-+ revoked_audit_id = uuid.uuid4().hex
-+ revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': revoked_audit_id}]
-+ revocations = self._setup_revocations(revoked_list)
-+
-+ token_audit_ids = [uuid.uuid4().hex, revoked_audit_id]
-+ self.assertRaises(exc.InvalidToken,
-+ revocations.check_by_audit_id, token_audit_ids)
-+
-+ def test_check_by_audit_id_not_revoked(self):
-+ # When the audit ID is not in the revocation list no exception.
-+ revoked_list = [{'id': uuid.uuid4().hex, 'audit_id': uuid.uuid4().hex}]
-+ revocations = self._setup_revocations(revoked_list)
-+
-+ audit_id = uuid.uuid4().hex
-+ revocations.check_by_audit_id([audit_id])
-+
-+ def test_check_by_audit_id_no_audit_ids(self):
-+ # Older identity servers don't send audit_ids in the revocation list.
-+ # When this happens, check_by_audit_id still works, just doesn't
-+ # verify anything.
-+ revoked_list = [{'id': uuid.uuid4().hex}]
-+ revocations = self._setup_revocations(revoked_list)
-+
-+ audit_id = uuid.uuid4().hex
-+ revocations.check_by_audit_id([audit_id])
---
-1.9.1
-
diff --git a/dev-python/keystonemiddleware/keystonemiddleware-4.9.0.ebuild b/dev-python/keystonemiddleware/keystonemiddleware-4.9.0.ebuild
new file mode 100644
index 000000000000..fb4cae0351d5
--- /dev/null
+++ b/dev-python/keystonemiddleware/keystonemiddleware-4.9.0.ebuild
@@ -0,0 +1,84 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="A middleware for the OpenStack Keystone API"
+HOMEPAGE="https://github.com/openstack/keystonemiddleware"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc examples test"
+
+CDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.6[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testresources-0.2.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/python-memcached-1.56[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.1.0[${PYTHON_USEDEP}]
+ )"
+
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/keystoneauth-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/positional-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/pycadf-1.1.0[${PYTHON_USEDEP}]
+ !~dev-python/pycadf-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-2.0.0[${PYTHON_USEDEP}]
+ !~dev-python/python-keystoneclient-2.1.0[${PYTHON_USEDEP}]
+ <dev-python/python-keystoneclient-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]"
+
+PATCHES=(
+)
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && emake -C doc html
+}
+
+python_test() {
+ testr init
+ testr run || die "testsuite failed under python2.7"
+ flake8 ${PN/python-/}/tests || die "run over tests folder by flake8 drew error"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ use examples && local EXAMPLES=( examples/.)
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/ldappool/Manifest b/dev-python/ldappool/Manifest
index 68a11769c06a..ea5a5b00d65d 100644
--- a/dev-python/ldappool/Manifest
+++ b/dev-python/ldappool/Manifest
@@ -1 +1,2 @@
DIST ldappool-1.0.tar.gz 6795 SHA256 1fc36c617ffa6195a738ca99ae7f2178271ebe30a5ee6d41abdb49168afb75aa SHA512 081dc08833d95bb0d3ce396cbbe697252e2b483cc3703e87f00f8af0513f9fdca4ff9c97295fb439ff1fcd404027d5922c2a6337665cfad526be3c6b83acfa53 WHIRLPOOL e5cb9b61848cb3fa7314eeeb25fd9bed89ec7e4dca50eb501f80f952ca3aab78017962c85359efbe6d741ec9b38450d78a06a287aee8e7e935db391c3856a68a
+DIST ldappool-2.0.0.tar.gz 15089 SHA256 2850274c16b3108fae9f0ce2bc327e7712f78578677c08336225b75edeb1c5f1 SHA512 824243cca712d6aef8929c74cb15f0cefbc8795cdb599d3b0cc48e8eee4a58d3db94a6642379f87ba011784c289f936a62f2aed637bb005985bbee2118d3b6ea WHIRLPOOL 9a54e41a9ff5c5236b9fcf16f61d11bd121c49f9122866c00fc82fc2e6fa2c72d4c45386f613b14ea2d20c58bd40750a90ad3c5384c8d8df6d665c7b7ccb07e0
diff --git a/dev-python/ldappool/ldappool-2.0.0.ebuild b/dev-python/ldappool/ldappool-2.0.0.ebuild
new file mode 100644
index 000000000000..e86a50dfd578
--- /dev/null
+++ b/dev-python/ldappool/ldappool-2.0.0.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="A connection pool for python-ldap"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ >=dev-python/pyldap-2.4[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/oauthlib/Manifest b/dev-python/oauthlib/Manifest
index 384af77c7f46..8d313638fcd2 100644
--- a/dev-python/oauthlib/Manifest
+++ b/dev-python/oauthlib/Manifest
@@ -1,3 +1,4 @@
DIST oauthlib-0.7.2.tar.gz 106079 SHA256 a051f04ee8ec3305055ab34d87b36c9a449375e07c7d6a05bcafa48329cac7c3 SHA512 11bcd1b0930342017c63c305029efa3cc44afb4ce786c0d0afdecc22928a9ada1356899a58e6e7332e08d1a62c3ce83889f6396234534143781635983185b974 WHIRLPOOL 55cd2df10e40e4b05518b2b830418ea8718b584348eda031a8b0281dcddf93ab5afde88a7a583bb3a0f9fd4a59272e61ff68418bb9aee469e203f0f79a01836c
DIST oauthlib-1.0.1.tar.gz 108125 SHA256 2f1999a7c11f8714a1545de033b0950da77f651ff64f271d7dd9df15dc72049b SHA512 4592ba6a146df55451f65ceab9dd049ddaba20bb0364c4cff882450b701052afc88541e6bf2a112ee18499a9c80e3b1b5e1292899ff7c861e0042c5f96b75653 WHIRLPOOL da8dad0ece0c1f9fbe486c0c23943068612b603e708fdc3c601f19203e2301c308972a50db335804bc1797f645e6355996b7cf484490a4d187d89d337b5f45ed
DIST oauthlib-1.0.3.tar.gz 109095 SHA256 ef4bfe4663ca3b97a995860c0173b967ebd98033d02f38c9e1b2cbb6c191d9ad SHA512 b5df82729edc025f262a18c012f6036f52e97a8a846eeb75e4e205928acfd6e971a58194c4a06853d6743329d397e69b94fb431047b2a17a2cb2472c889c4d4c WHIRLPOOL f63142b667eaed207504494e67de8b58d8c966c19870a2e38714fa6d264a7f57873bb30f3548f9cd0906d9f3abb5c36c9de7255d869f47ebad7662b1dba6ec16
+DIST oauthlib-1.1.2.tar.gz 111706 SHA256 0e83e91d9e77a396dc178eddba0c4abf75e465761804bfcdb20b977284bcb0bb SHA512 b8d3f485ff3c59ae708d8d26337053cff4ea870d5d76422d51316fda3df5260ff2f14ab1d74c01dcaeff671c5f528bffd9976064724f2b7ae652c71b126706b1 WHIRLPOOL 4b52314184bb69b7b2b560d45f141ff0497936f2d51161f12542f1ef66339da917000fea147e5848032b0b628679af52cdf36a6745cf2f9fc1a9383e8e486bd4
diff --git a/dev-python/oauthlib/oauthlib-1.1.2.ebuild b/dev-python/oauthlib/oauthlib-1.1.2.ebuild
new file mode 100644
index 000000000000..c72f8b950cc2
--- /dev/null
+++ b/dev-python/oauthlib/oauthlib-1.1.2.ebuild
@@ -0,0 +1,36 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1
+
+DESCRIPTION="Spec-compliant and thorough implementation of the OAuth request-signing logic"
+HOMEPAGE="https://github.com/idan/oauthlib https://pypi.python.org/pypi/oauthlib"
+SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm ~arm64 ~x86"
+IUSE="test"
+
+# optional extras hard set as RDEPs. See setup.py
+RDEPEND="
+ >=dev-python/pyjwt-1.0.0[${PYTHON_USEDEP}]
+ dev-python/blinker[${PYTHON_USEDEP}]
+ dev-python/cryptography[${PYTHON_USEDEP}]
+ "
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? ( ${RDEPEND}
+ dev-python/nose[${PYTHON_USEDEP}]
+ $(python_gen_cond_dep '>=dev-python/mock-1.0.1[${PYTHON_USEDEP}]' python2_7)
+ $(python_gen_cond_dep 'dev-python/unittest2[${PYTHON_USEDEP}]' python2_7) )
+ "
+
+python_test() {
+ nosetests || die "tests failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-cache/Manifest b/dev-python/oslo-cache/Manifest
index 4372a6ed7964..a2c4f57ae346 100644
--- a/dev-python/oslo-cache/Manifest
+++ b/dev-python/oslo-cache/Manifest
@@ -1 +1,2 @@
+DIST oslo-cache-1.14.0.tar.gz 45780 SHA256 3ba84b421f80c5a6609789cf17b1da86aab465a96e68298620e839fafec3f0be SHA512 b3638e1cec577bc3779595288ff323baef7b08e534050771ffef80aed9d61e1cb6fc9c034c753768e401f313fba8f7aa0b2f6a3354f272e2498d3972abbcdfd0 WHIRLPOOL 966bde82c0aefe8ea09e8e984ea6c769c983b5ce38d9b4a3b6e4921b66a8b261d81f8dfde4295099234da97bd887c0b00714bf454e634f356d81ba6a574557ca
DIST oslo-cache-1.6.0.tar.gz 36037 SHA256 c357671fb642822924d063b8151e132a6e7a65189c6c35c3f22c64ae0b0bdda8 SHA512 48ea43142d8221a61556ccccbb3c64e8708a1af04514b28dc22049a84d00e14253c9577d05321ef6de62ddc9120789942a82f231f1d7eeca2e5adf2d92ae04d5 WHIRLPOOL 8d06791e971fd6d9e3f49ade330b3c2ad780b162f953a5f9f04d40568efac7b38ae997f53ba315c38af59715d8be95cbab3dd3df051fa1b685b763476bbaf5a6
diff --git a/dev-python/oslo-cache/oslo-cache-1.14.0.ebuild b/dev-python/oslo-cache/oslo-cache-1.14.0.ebuild
new file mode 100644
index 000000000000..de67eb654b1e
--- /dev/null
+++ b/dev-python/oslo-cache/oslo-cache-1.14.0.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1 vcs-snapshot
+
+MY_PN=${PN/-/.}
+
+DESCRIPTION="Oslo Caching around dogpile.cache"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/dogpile-cache-0.6.1[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ sed -i '/^argparse/d' requirements.txt || die
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/oslo-concurrency/Manifest b/dev-python/oslo-concurrency/Manifest
index be5f302d13be..573fdf298222 100644
--- a/dev-python/oslo-concurrency/Manifest
+++ b/dev-python/oslo-concurrency/Manifest
@@ -1 +1,2 @@
+DIST oslo.concurrency-3.14.0.tar.gz 45148 SHA256 e76adec89e3b0444f4d3076d8568ea9caf68cf0279de5b3687a51a29d2482eaf SHA512 8bb5c147c13f60df8592314ae7894eb2a2deca1d0a27889b18f8502166065126efbfa5921a75801a1a6e1dbf618e0f9ad152938da9ab8fd3455abdcdd534f11b WHIRLPOOL 39954fc922b7ac095af1afcbc8acc34ad83188cbf3067909ad8206072880ce13e2ca65654efbf1da09fd74ffb777e42ab0c0660b2e94ff5407c2e1dfe766c02b
DIST oslo.concurrency-3.7.1.tar.gz 39914 SHA256 254a42d9f0a5f21e9d56e5fd5ca7c3e355ba22d06ea47f6eb094155242ccc0f6 SHA512 8146f22c06fd75202d0bae75a99e77a613675359cab1f6221ff68f89035b105cc6d96b6a1d8013c983a94166d826fbeaa4502fd307af9707d0a1462db678fb4f WHIRLPOOL 03c55b366199e0c7a2af895fe0ad3a769778be58382ee5a40ce1e0220f80bb6273b8615d7fc295f1e25111487772291597dfc8a54ebdbe44deff68ab94916923
diff --git a/dev-python/oslo-concurrency/oslo-concurrency-3.14.0.ebuild b/dev-python/oslo-concurrency/oslo-concurrency-3.14.0.ebuild
new file mode 100644
index 000000000000..e5fcd8ae535b
--- /dev/null
+++ b/dev-python/oslo-concurrency/oslo-concurrency-3.14.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="library for running multi-thread, multi-process applications"
+HOMEPAGE="https://pypi.python.org/pypi/oslo.concurrency"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.concurrency/oslo.concurrency-${PV}.tar.gz"
+S="${WORKDIR}/oslo.concurrency-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDPEND="
+ >=dev-python/pbr-1.6[${PYTHON_USEDEP}]
+ <dev-python/pbr-2.0[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/Babel-1.3[${PYTHON_USEDEP}]
+ virtual/python-enum34[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/fasteners-0.7[${PYTHON_USEDEP}]
+ >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
+ !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^futures/d' test-requirements.txt || die
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests tests/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-config/Manifest b/dev-python/oslo-config/Manifest
index 44674f1abbec..e29101a3c682 100644
--- a/dev-python/oslo-config/Manifest
+++ b/dev-python/oslo-config/Manifest
@@ -1 +1,2 @@
+DIST oslo-config-3.14.0.tar.gz 108240 SHA256 84ffe8ea2729384451ac0f109e255da6e68ad92437ba7954264f5f79b461045d SHA512 3eefee688d7b0f440db4632c386b2272b05a5c4f2cc76d396c8842b70c73cb9a29c3f32c9ed8eee57a84fa63407e88e6da593c8bc7517a2f6f34d69c6e2e1f61 WHIRLPOOL c53fc90f908d381bf7b82068aa6ee9340dd6f09cee5cca497390b0283450e86cc4cdc28ee2d8765e2b6cd9dc3a3b249c2fe134acf3a4eee73edcde3eda777cd1
DIST oslo-config-3.9.0.tar.gz 99255 SHA256 ec7bdf4a3d85f90cf07d2fa03a20783558ad0f490d71bd8faf50bf4ee2923df1 SHA512 c52d1ed16149a57748e81d4eed192636fc726a4f373cb5c5d7a1bcdbe43a0339f733f94a3d922aa85c6248749b69da06d6c671a152d301510603f50913176b1c WHIRLPOOL af288fc5b5c5fef3f6c5e128585355bf0624b9fc11519c679bb2d3399a67e5935510c677ef6d714c562197260081e9fbc7e8fc7b6cebcd7aa757eedf8b17eb2e
diff --git a/dev-python/oslo-config/oslo-config-3.14.0.ebuild b/dev-python/oslo-config/oslo-config-3.14.0.ebuild
new file mode 100644
index 000000000000..745ade143019
--- /dev/null
+++ b/dev-python/oslo-config/oslo-config-3.14.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1 vcs-snapshot
+
+MY_PN=${PN/-/.}
+
+DESCRIPTION="Oslo Configuration API"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE="doc test"
+
+CDEPEND=">=dev-python/pbr-1.3[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.0.1[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ )
+"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ !~dev-python/netaddr-0.7.16[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/rfc3986-0.2.0[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ sed -i '/^argparse/d' requirements.txt || die
+ use doc && esetup.py build_sphinx
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ rm -rf .testrepository || die "could not remove '.testrepository' under ${EPTYHON}"
+
+ testr init || die "testr init failed under ${EPYTHON}"
+ testr run || die "testr run failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/oslo-context/Manifest b/dev-python/oslo-context/Manifest
index d27550463e0b..602d460dd815 100644
--- a/dev-python/oslo-context/Manifest
+++ b/dev-python/oslo-context/Manifest
@@ -1 +1,2 @@
DIST oslo.context-2.2.0.tar.gz 16981 SHA256 8c9fbbf56d3f37cf00a039cac3455cffeb6588f61537e36a36ce9447c4be72ec SHA512 f4ccb7a5e652a4820fb40e538a631c11be5f978de2219dc923e18559d30625a31e0ca031f095ce2e0545290cdfdeb714fcf086add6b5a7eb2413ebd1e7a25875 WHIRLPOOL a9a5685dd62105ddaee9c48fdc96231ea700ab8821e7e918920afc1bdf1f1a0e36aa1845c9665bf753fb56d95005f69d4927b12aac9712f41f43e2d89682beaf
+DIST oslo.context-2.9.0.tar.gz 23049 SHA256 2682d59ebea3c61421bba98cd3f36dcef5416ad771b220856f14fb528ef81b39 SHA512 6aa062542953007d8cfaf05e231105865c35370a80c9b32a4faae266d07981e83ebe34790b0217d818e2bb40d82d0a7ef3ebf77c7008ce358f7b4e61f6a38ff8 WHIRLPOOL 7ab7cca5c1d5e260e5e97df7cc1a3136e6f96f8237251c3bed46ebc565a9706fcabaa8b138d14e61024d34f34e7be83da313c02e8eba502d68d9b9a1342e1cde
diff --git a/dev-python/oslo-context/oslo-context-2.9.0.ebuild b/dev-python/oslo-context/oslo-context-2.9.0.ebuild
new file mode 100644
index 000000000000..d84ca16c6406
--- /dev/null
+++ b/dev-python/oslo-context/oslo-context-2.9.0.ebuild
@@ -0,0 +1,49 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1
+
+DESCRIPTION="Helpers to maintain useful information about a request context"
+HOMEPAGE="https://pypi.python.org/pypi/oslo.context"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.context/oslo.context-${PV}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/positional-1.0.1[${PYTHON_USEDEP}]
+"
+
+S="${WORKDIR}/oslo.context-${PV}"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+# This time half the doc files are missing; Do you want them?
+python_test() {
+ nosetests tests/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-db/Manifest b/dev-python/oslo-db/Manifest
index 3391e1da7ab8..d45eb782c673 100644
--- a/dev-python/oslo-db/Manifest
+++ b/dev-python/oslo-db/Manifest
@@ -1 +1,2 @@
+DIST oslo.db-4.13.3.tar.gz 147300 SHA256 67c150a269a7752827325998aa59494b0e49205127cf3f3f78b23a07810d39fd SHA512 4bc353523ca8099b4d563fd836876e73496f77ec77fb346d1796c93684951dd29d24dda01b87606d5ee047eebe508ef5735dcea7183a0a06feb24338ab4f92e4 WHIRLPOOL 7aa2d45c84ee25e13a9004fe318e28a5f7875884f6392dd76f2a23627524dd80d7d51b30ad54f4694cb31b86544924d3c97936ab167ee6f9249071df515c77ce
DIST oslo.db-4.7.1.tar.gz 140778 SHA256 a39e091e4d06c757dd6249f121e2ae1babef595f451f7ff56110c0be718d0d8c SHA512 0df3a715ee7742ff51bcc2c291cff3076de33cb57e47fbe23ffc0649a85130a6f6a27928a1452b4087b3bacec9e8cc35e0a69fb012df494e7254b6ad7b349b59 WHIRLPOOL 4bb8751107705e46e164d47306e814d9864074e61e23220313bc5d9099d42a81545b352d960731b579eac69f02e3674cb032baafed8715e974ae2eeb59b354a7
diff --git a/dev-python/oslo-db/oslo-db-4.13.3.ebuild b/dev-python/oslo-db/oslo-db-4.13.3.ebuild
new file mode 100644
index 000000000000..306e70a4ca96
--- /dev/null
+++ b/dev-python/oslo-db/oslo-db-4.13.3.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5)
+
+inherit distutils-r1
+
+DESCRIPTION="OpenStack Common DB Code"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.db/oslo.db-${PV}.tar.gz"
+S="${WORKDIR}/oslo.db-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="+sqlite mysql postgres"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-1.6.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ >=dev-python/alembic-0.8.4[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ sqlite? (
+ || (
+ >=dev-python/sqlalchemy-1.0.10[sqlite,${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[sqlite,${PYTHON_USEDEP}]
+ )
+ )
+ mysql? (
+ dev-python/mysql-python
+ || (
+ >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ )
+ )
+ postgres? (
+ dev-python/psycopg:2
+ || (
+ >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ )
+ )
+ >=dev-python/sqlalchemy-migrate-0.9.6[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/oslo-i18n/Manifest b/dev-python/oslo-i18n/Manifest
index c6aa0c4ac039..1cd8ba5b9009 100644
--- a/dev-python/oslo-i18n/Manifest
+++ b/dev-python/oslo-i18n/Manifest
@@ -1,2 +1,2 @@
DIST oslo-i18n-3.5.0.tar.gz 36093 SHA256 5fff5f6ceabed9d09b18d83e049864c29eff038efbbe67e03fe68c49cc189f10 SHA512 156b28fa1db65a57a8db2744d72cb5db2706ec773746e676895121c0d6459f4806d826b76428841ee7124c27eba281095fa50d64cbb68f82133c41560ea15950 WHIRLPOOL 8d599b0e989c650d305c0f2ad85596971e6b0e3c5a8f8daa00ba76b9fdc8cdf5486a346343123247efc8dbaf4d7825a62b5340a957c7e7881c2483ea051e90e1
-DIST oslo.i18n-1.4.0.tar.gz 36140 SHA256 a3d64e8d2b4235a457da2c6269d8c97e867a90ba7d938fe0ed3cfc792c8c87bb SHA512 df1491bb4d98b9295c08f4b7dc18cfff2758834ff5edb9aa3bdc064e587ab475e7e060dc5212c5db1e7e2f34cc4177e5c713a4ac6908a9750f50dc6316105682 WHIRLPOOL 8e77849c0a8f3c5a7e5b314f756673f31a3464f2a65c35e8ad506fd0ce10430b2fea0fae97eaccfef258b74a24db2f86b0843575d25f3d3a84a3b19ae0c5ff12
+DIST oslo-i18n-3.9.0.tar.gz 35973 SHA256 0bcb8108cf38b9ad4feb1ee08d27e34dc358f80dc7a7fe9a5b942ebf3b07c0b5 SHA512 7c176b8ac3ef0b52b2a08a7779c59b01fd32e084b99562eb232f9894ba4c9ae0bd810721fcf6fedf8729e3fdbfebce8b6210698aa0ae9e003855c8f2d66f2b0a WHIRLPOOL 34781968918cf6e7114301f7122f9d8f516be9f2db89798e64ad4589eb78f9b4a11e0f30b034b697734cfa3508cd997f13e8afe4b4abbc970d1705b42b060842
diff --git a/dev-python/oslo-i18n/oslo-i18n-1.4.0.ebuild b/dev-python/oslo-i18n/oslo-i18n-3.9.0.ebuild
index 417a9d0c6483..53e3f7ddcfcf 100644
--- a/dev-python/oslo-i18n/oslo-i18n-1.4.0.ebuild
+++ b/dev-python/oslo-i18n/oslo-i18n-3.9.0.ebuild
@@ -1,44 +1,48 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
-EAPI=5
-PYTHON_COMPAT=( python2_7 python3_3 python3_4 )
+EAPI=6
-inherit distutils-r1
+PYTHON_COMPAT=( python{2_7,3_{3,4,5}} )
+
+inherit distutils-r1 vcs-snapshot
MY_PN=${PN/-/.}
-DESCRIPTION="oslo.i18n library"
+DESCRIPTION="Oslo i18n library"
HOMEPAGE="https://launchpad.net/oslo"
-SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz"
-S="${WORKDIR}/${MY_PN}-${PV}"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="Apache-2.0"
SLOT="0"
-KEYWORDS="amd64 x86"
+KEYWORDS="~amd64 ~arm64 ~x86"
IUSE="doc test"
+CDEPEND=">dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]"
+CRDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
DEPEND="
dev-python/setuptools[${PYTHON_USEDEP}]
- >=dev-python/pbr-0.8[${PYTHON_USEDEP}]
- <dev-python/pbr-1.0[${PYTHON_USEDEP}]
+ ${CRDEPEND}
test? (
- >=dev-python/hacking-0.9.2[${PYTHON_USEDEP}]
- <dev-python/hacking-0.10[${PYTHON_USEDEP}]
- >=dev-python/oslotest-1.2.0[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
)
doc? (
- >=dev-python/oslo-sphinx-2.2.0[${PYTHON_USEDEP}]
- >=dev-python/oslotest-1.1[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
>=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
!~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
<dev-python/sphinx-1.3[${PYTHON_USEDEP}]
)
"
RDEPEND="
- >=dev-python/Babel-1.3[${PYTHON_USEDEP}]
- >=dev-python/six-1.7.0[${PYTHON_USEDEP}]
+ ${CRDEPEND}
+ >=dev-python/Babel-2.3.4[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
"
python_compile_all() {
diff --git a/dev-python/oslo-log/Manifest b/dev-python/oslo-log/Manifest
index 347390dd94d8..88c05816eae9 100644
--- a/dev-python/oslo-log/Manifest
+++ b/dev-python/oslo-log/Manifest
@@ -1 +1,2 @@
+DIST oslo.log-3.16.0.tar.gz 62648 SHA256 aa8682697b57d7eb6224a4ceaa0b04e69f2a2dc8c0fa430b57cecc67f7293687 SHA512 dc23080d4476d55614ea8ce33b35086f92b17536bc7a72f31e0996aac79635cec81d5f23cfebf6feea7cb137d0d6d0066773a2a3a2513b48ee7a36eed7ca84d6 WHIRLPOOL a65a9921c53e3dc998772a230f911ed00a4d5c66b559561538dc12d75906cfd9e6c893595d498cfa68e3f644e2e1be509fb53ac0973dbc5e0af435b54c150a9f
DIST oslo.log-3.3.0.tar.gz 56039 SHA256 b3414b6f3b05f50571d8973543227f0d6445c297ba762262adfc28b704f8efd9 SHA512 77258a5861db25f46d1148a55990f9b708563837e5dbb2123db1074a837ffbe88b4fe3e788b23fbf2af3aa9ef1a0204d1ce3ef37215bd8265e0559f3d780f882 WHIRLPOOL 2ad46f549514b3cc098b65d3ecc7e73ccad078b3652398cc98ac32302b0ef62cf8c26b057c827cea12ac38bb38ee15c419f5e19f33d17dc18754d0e0c3100a8b
diff --git a/dev-python/oslo-log/oslo-log-3.16.0.ebuild b/dev-python/oslo-log/oslo-log-3.16.0.ebuild
new file mode 100644
index 000000000000..48f7f146e0f8
--- /dev/null
+++ b/dev-python/oslo-log/oslo-log-3.16.0.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="OpenStack logging config library, configuration for all openstack projects."
+HOMEPAGE="https://pypi.python.org/pypi/oslo.log https://github.com/openstack/oslo.log"
+SRC_URI="mirror://pypi/o/oslo.log/oslo.log-${PV}.tar.gz"
+S="${WORKDIR}/oslo.log-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pyinotify-0.9.6[${PYTHON_USEDEP}]
+ >=dev-python/python-dateutil-2.4.2[${PYTHON_USEDEP}]"
+DEPEND="
+ ${CDEPEND}
+ test? ( ${RDEPEND}
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.5.1[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.1.0[${PYTHON_USEDEP}]
+ )"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ sed -i '/^argparse/d' requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests oslo_log/tests || die "Tests fail with ${EPYTHON}"
+}
diff --git a/dev-python/oslo-log/oslo-log-3.3.0.ebuild b/dev-python/oslo-log/oslo-log-3.3.0.ebuild
index 40f9a88100f0..58688ed5c006 100644
--- a/dev-python/oslo-log/oslo-log-3.3.0.ebuild
+++ b/dev-python/oslo-log/oslo-log-3.3.0.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
@@ -8,7 +8,7 @@ PYTHON_COMPAT=( python2_7 python3_3 python3_4 python3_5 )
inherit distutils-r1
-DESCRIPTION="OpenStack logging config library provides standardized configuration for all openstack projects."
+DESCRIPTION="OpenStack logging config library, configuration for all openstack projects."
HOMEPAGE="https://pypi.python.org/pypi/oslo.log https://github.com/openstack/oslo.log"
SRC_URI="mirror://pypi/o/oslo.log/oslo.log-${PV}.tar.gz"
S="${WORKDIR}/oslo.log-${PV}"
diff --git a/dev-python/oslo-messaging/Manifest b/dev-python/oslo-messaging/Manifest
index 514b89f755a2..e4d6322b01b5 100644
--- a/dev-python/oslo-messaging/Manifest
+++ b/dev-python/oslo-messaging/Manifest
@@ -1 +1,2 @@
DIST oslo.messaging-4.6.1.tar.gz 220648 SHA256 be0499c3c2bf22f7ab3934bd2c331af6eea47f8c6508774d209a8028e9582421 SHA512 b63a3e6d68261852a09a238a404459e6f0e23b60bab863702aa044bf2256244d86bdaf86a7eda8f13a73d87d7599ffcee4a8e7ea2df230ff7a7e3f84b8279d6e WHIRLPOOL c7d9b341eb243f382db2e39b90f4b430dd75b0445322fe228e26201ae75b06fec42c27f80a1f003dbb7c03382be94b1ccca3ed96b3bfd4f14c723c496db77a5f
+DIST oslo.messaging-5.10.0.tar.gz 274071 SHA256 9abd5e90dd7bb6521f9bc083e692eeb2cc0723c3b5b8c1449e89da5491cf3055 SHA512 a66e9096635f3119607c343bca710c6d55a7540140af7c06e39892479a911718085f8712a063498979c1266adc1b7a943884adcb0c41d996d0675e46bbc52ac7 WHIRLPOOL b953fc0a3d393ce9e3118ba4077060d3012f88c745de8188da0579cceb04a318259faa97deb067f94cca0d1f62194bf0deebcaaa6976726f41b2bffb99a9152b
diff --git a/dev-python/oslo-messaging/oslo-messaging-4.6.1.ebuild b/dev-python/oslo-messaging/oslo-messaging-4.6.1.ebuild
index b075d508a3fe..417d5f6c3b79 100644
--- a/dev-python/oslo-messaging/oslo-messaging-4.6.1.ebuild
+++ b/dev-python/oslo-messaging/oslo-messaging-4.6.1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$
@@ -7,7 +7,7 @@ PYTHON_COMPAT=( python2_7 python3_3 python3_4 python3_5 )
inherit distutils-r1
-DESCRIPTION="Messaging API for RPC and notifications over a number of different messaging transports"
+DESCRIPTION="Messaging API for RPC and notifications over different messaging transports"
HOMEPAGE="https://pypi.python.org/pypi/oslo.messaging"
SRC_URI="mirror://pypi/${PN:0:1}/oslo.messaging/oslo.messaging-${PV}.tar.gz"
S="${WORKDIR}/oslo.messaging-${PV}"
diff --git a/dev-python/oslo-messaging/oslo-messaging-5.10.0.ebuild b/dev-python/oslo-messaging/oslo-messaging-5.10.0.ebuild
new file mode 100644
index 000000000000..bb165ddd6b25
--- /dev/null
+++ b/dev-python/oslo-messaging/oslo-messaging-5.10.0.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="Messaging API for RPC and notifications over different messaging transports"
+HOMEPAGE="https://pypi.python.org/pypi/oslo.messaging"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.messaging/oslo.messaging-${PV}.tar.gz"
+S="${WORKDIR}/oslo.messaging-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/futurist-0.11.0[${PYTHON_USEDEP}]
+ !~dev-python/futurist-0.15.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-service-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/monotonic-0.6[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/cachetools-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
+ >=dev-python/greenlet-0.3.2[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.1.0[${PYTHON_USEDEP}]
+ >=dev-python/py-amqp-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/py-amqp-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/kombu-3.0.25[${PYTHON_USEDEP}]
+ >=dev-python/pika-0.10.0[${PYTHON_USEDEP}]
+ >=dev-python/pika-pool-0.1.3[${PYTHON_USEDEP}]
+ virtual/python-futures[${PYTHON_USEDEP}]
+ >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
+ !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-middleware-3.0.0[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/oslo-middleware/Manifest b/dev-python/oslo-middleware/Manifest
index 1d2f55e799a7..55580693a1c6 100644
--- a/dev-python/oslo-middleware/Manifest
+++ b/dev-python/oslo-middleware/Manifest
@@ -1 +1,2 @@
+DIST oslo.middleware-3.19.0.tar.gz 41711 SHA256 f36c37b9d8f4c6eccc494172569184c3f9a4028a6401e8cf75d7656fc7b1d292 SHA512 e347f9f683b8e925286390fc84eb5aebb76b6f490d564f9273b6d53762bbd9f09dab3dc5f740ab4eb0849de00381ad71264b0d8c048629b770b8740243300e50 WHIRLPOOL aa08f79b269cc1dc2c3c54f121e2de783a9f4b13c0fc1d9be492044cd4c34f59a4b2446efab2870d1cfdaa932f41cc5075ee4bd01876edb34d94b35c2d575211
DIST oslo.middleware-3.8.0.tar.gz 39756 SHA256 2d985b238182cf70c1adbe1a041eb96eacde3106751fe2c7f1cd81d57a4dbda2 SHA512 575708b9f19938787d4d42accfbafcd63a9cee0aeb871dc0b3dd504dc4d5f97db27abfcfd7ae56dfc7d68eb670c11f93c1f79d3fd02d30247497614b3f51d80a WHIRLPOOL 2498c2a67ca83214c8512a2a86d78155638a107971d7a98a3534c625138c89f56273ab6dda437399799a6960129f4c7dfa758d2af46ede15813d7614d5db3a6d
diff --git a/dev-python/oslo-middleware/oslo-middleware-3.19.0.ebuild b/dev-python/oslo-middleware/oslo-middleware-3.19.0.ebuild
new file mode 100644
index 000000000000..a58c69a89a7b
--- /dev/null
+++ b/dev-python/oslo-middleware/oslo-middleware-3.19.0.ebuild
@@ -0,0 +1,57 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="Components injected into wsgi pipelines to intercept request/response flows."
+HOMEPAGE="https://pypi.python.org/pypi/oslo.middleware"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.middleware/oslo.middleware-${PV}.tar.gz"
+S="${WORKDIR}/oslo.middleware-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND="
+ >=dev-python/pbr-1.6[${PYTHON_USEDEP}]
+ <dev-python/pbr-2.0[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/jinja-2.8[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests tests/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-policy/Manifest b/dev-python/oslo-policy/Manifest
index d900f0070313..7c579fe73916 100644
--- a/dev-python/oslo-policy/Manifest
+++ b/dev-python/oslo-policy/Manifest
@@ -1 +1,2 @@
+DIST oslo.policy-1.14.0.tar.gz 58516 SHA256 cedbc22f191524ae2a98e42e53fe7e4adcd5e0715b4c176b9daaa9dcb85cbab9 SHA512 3cf6e3f77a82761106b0ec73570faadc5f493fbb7f139e9bd2c3114ad773d785f5d5a8d3218b624259558e73cc8122e110c685a60205cb7ef1d8580412a851c0 WHIRLPOOL 1b3eece66117f14390e8b4efee9414ec4cd715c6913a7d69b5662531f7be898aab0b60cb55cb399b0c0b2478b4751415a5bede22a21bb465606a9d88ab3c1776
DIST oslo.policy-1.6.0.tar.gz 38076 SHA256 24d5ecdf4e10f33a9fb2e8784876f73276637d8663c33f594e8efc99e179016a SHA512 468fcad020c90ce55b8f12199952f946cef6f352f3abc72b64e4538a6bd98dbf1d7ebe191600cff0e2654f97e4af3ccfc480a88c36133f33045ce37c2692a31c WHIRLPOOL b84ebb32db93710c5019dda8833129f3ccc855486655daf7b937eb3ad786b501cd51a9fdb4b55819dd414cdb3151a72b2d7ffd118c015bc1ca7b68a60c5a435d
diff --git a/dev-python/oslo-policy/oslo-policy-1.14.0.ebuild b/dev-python/oslo-policy/oslo-policy-1.14.0.ebuild
new file mode 100644
index 000000000000..eff7fe122ba2
--- /dev/null
+++ b/dev-python/oslo-policy/oslo-policy-1.14.0.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5)
+
+inherit distutils-r1
+
+DESCRIPTION="Provides support for RBAC policy enforcement across all OpenStack services."
+HOMEPAGE="https://pypi.python.org/pypi/oslo.policy"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.policy/oslo.policy-${PV}.tar.gz"
+S="${WORKDIR}/oslo.policy-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/reno-1.8.0[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+"
+
+# This time half the doc files are missing; Do you want them?
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests tests/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-serialization/Manifest b/dev-python/oslo-serialization/Manifest
index e23be6903ce7..4ebafa65c284 100644
--- a/dev-python/oslo-serialization/Manifest
+++ b/dev-python/oslo-serialization/Manifest
@@ -1 +1,2 @@
DIST oslo-serialization-1.11.0.tar.gz 20612 SHA256 b9a5b8bd4583957476464016f1c4d3ca01a30a0125acb1cd0ddd830715c88e1f SHA512 0fbe6282f26678208c22d31e6c221d63173688151b1eb228fd1dbbc184973c1039c43efa8d4f67f7f99dc3263d46021e6f0b7efcfbc4c13515d4a4d0f55cf0c2 WHIRLPOOL 3adb4c481ed8b8b789714b2d182b43cb7e948cfc49a73380c5abd3f662f00d10f8a10a41596f31c5a3ec98e75bbd170692a6fc8f720875fd4fe35d1b23df8e7a
+DIST oslo-serialization-2.13.0.tar.gz 23273 SHA256 7bfdb1c10bc24c4887407a2ac46708b1fd16e9bc2ceb6bb3805696e8cebf6566 SHA512 0cbcc650c06a7468986971c92674ebb6ad66355c05584a9bb78099bb185818cf9a61fc44a98dada6e6879037cc54596d7095069ba1ce4e7e5ceb9348ea31a493 WHIRLPOOL 2ccb79d37b132af08b8c9174394f6c006587eeb8b69a94ef5af06e1fb85180e34ff652b3ce04c372c06808cedcae92183b56b26fc044e20f51080c664b8f58c2
diff --git a/dev-python/oslo-serialization/oslo-serialization-2.13.0.ebuild b/dev-python/oslo-serialization/oslo-serialization-2.13.0.ebuild
new file mode 100644
index 000000000000..36cd8f25ad36
--- /dev/null
+++ b/dev-python/oslo-serialization/oslo-serialization-2.13.0.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1 vcs-snapshot
+
+MY_PN=${PN/-/.}
+
+DESCRIPTION="Oslo Serialization library"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc test"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/mock-1.2[${PYTHON_USEDEP}]
+ virtual/python-ipaddress[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ !~dev-python/netaddr-0.7.16[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ )
+"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2013.6[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ use doc && esetup.py build_sphinx
+}
+
+# Note: Tests fail due to requiring installation.
+#
+# Installation appears to fail due ot the use of namespace packages but root
+# cause was never truly established.
+RESTRICT="test"
+
+python_test() {
+ distutils_install_for_testing
+
+ PYTHONPATH="${TEST_DIR}/lib:${PYTHONPATH}"
+
+ rm -rf .testrepository || die "couldn't remove '.testrepository' under ${EPTYHON}"
+
+ testr init || die "testr init failed under ${EPYTHON}"
+ testr run || die "testr run failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/oslo-service/Manifest b/dev-python/oslo-service/Manifest
index 4f78ca6907fb..9bec4e50dfca 100644
--- a/dev-python/oslo-service/Manifest
+++ b/dev-python/oslo-service/Manifest
@@ -1 +1,2 @@
+DIST oslo.service-1.16.0.tar.gz 69762 SHA256 5a0d4743ece2f481fe95bf0e1be67fbfabf63adaeabca5f1acdc2a0280244fec SHA512 4ad1feb736cb678e9375c654fc728e6f58b17f01018a28576b51de8803492c21c9abac4f73cac76214f2f41ac40d29b849ca9f2fc000ddf9e3de5955f8212907 WHIRLPOOL b5689435782aafe38ce03595b99287069ededced82ef6c38d0db847fc32e75597c3a4c26564c4e39e63a0fe8728ffbf722a2760c5b9ef118914a32246ba97bd4
DIST oslo.service-1.8.0.tar.gz 66072 SHA256 cfd519945adb986f3e9e9bb01bebe1a0875ba38b1463a7deb6a7cba5a4e02d4d SHA512 f84aae9eddd4a702b289a2265bc4d53f4d0f01ebeba3c48b2614942eff6beeb3da7a978dcfccc58c9ddcc28031f358da3875926e8baece9d96bf5829a1c3b9e5 WHIRLPOOL 3da0853cb7568fbfde61e9a08cf2bbeaf741011e4768774c5e1423093adca8028861bcedf0b1451fce4c5154af17932a2944c07412d6fac3262653c8a11f4392
diff --git a/dev-python/oslo-service/oslo-service-1.16.0.ebuild b/dev-python/oslo-service/oslo-service-1.16.0.ebuild
new file mode 100644
index 000000000000..fcfaa8ddd556
--- /dev/null
+++ b/dev-python/oslo-service/oslo-service-1.16.0.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="Library for running OpenStack services"
+HOMEPAGE="https://pypi.python.org/pypi/oslo.service"
+SRC_URI="mirror://pypi/${PN:0:1}/oslo.service/oslo.service-${PV}.tar.gz"
+S="${WORKDIR}/oslo.service-${PV}"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+CDEPEND="
+ >=dev-python/pbr-1.8[${PYTHON_USEDEP}]
+ <dev-python/pbr-2.0[${PYTHON_USEDEP}]"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.1.0[${PYTHON_USEDEP}]
+ )"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
+ >=dev-python/greenlet-0.3.2[${PYTHON_USEDEP}]
+ >=dev-python/monotonic-0.6[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/pastedeploy-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/routes-1.12.3[${PYTHON_USEDEP}]
+ !~dev-python/routes-2.0[${PYTHON_USEDEP}]
+ !~dev-python/routes-2.1[$(python_gen_usedep 'python2_7')]
+ !~dev-python/routes-2.3[${PYTHON_USEDEP}]
+ dev-python/paste[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ nosetests tests/ || die "test failed under ${EPYTHON}"
+}
diff --git a/dev-python/oslo-utils/Manifest b/dev-python/oslo-utils/Manifest
index 0d117de19794..34c413483309 100644
--- a/dev-python/oslo-utils/Manifest
+++ b/dev-python/oslo-utils/Manifest
@@ -1 +1,2 @@
+DIST oslo-utils-3.16.0.tar.gz 76660 SHA256 109e018da9d95caba79c94935257d2335e5a77e65ebbff218cb9756e746630f1 SHA512 58edfeb2b7cb59bcde1b7abf87a1509c30e586051fd7fc0803f6c0a53a717c084b2bbf4d2d906261f20053e3c32189bc86ad1b615c0b9437bacb9b2075dce8ec WHIRLPOOL ade367faefe2bd08ed3656c6727374468df4d70dba4e4b37c7dba1656c057fa0dfb167a537635b66c0df9b69bce5611b0fa0f62ac8ece9f64f4caec7b8621ee7
DIST oslo-utils-3.8.0.tar.gz 70830 SHA256 c0e935b86e72facc02264271ed09dd9c5879d52452d7a1b4a116a6c7d05077aa SHA512 bd2e140f8f2c06c3b1ad8ee34071746e3987352d0ab79d91ea70716c34b4a8baa066e9731376618554b57b1b88ea570ab2f51c563c43f78a46ff7a132ed03fc5 WHIRLPOOL 865a2d438f0085c7cf50f2c29d12dcbb9f94dc1a5d7679d69a56f821029ef8f92d4f19dfa4375b302dd3848f77e35f7a168cefbd9e85bac26a680cfe3cfce9f1
diff --git a/dev-python/oslo-utils/oslo-utils-3.16.0.ebuild b/dev-python/oslo-utils/oslo-utils-3.16.0.ebuild
new file mode 100644
index 000000000000..4e965d4ff20e
--- /dev/null
+++ b/dev-python/oslo-utils/oslo-utils-3.16.0.ebuild
@@ -0,0 +1,97 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1 vcs-snapshot
+
+MY_PN=${PN/-/.}
+
+DESCRIPTION="Oslo Utility library"
+HOMEPAGE="https://launchpad.net/oslo"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_PN}-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc test"
+
+CDEPEND="
+ >=dev-python/pbr-1.6[${PYTHON_USEDEP}]
+ <dev-python/pbr-2.0[${PYTHON_USEDEP}]
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.12.0[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.0.1[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ )
+"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ virtual/python-funcsigs[${PYTHON_USEDEP}]
+ >=dev-python/iso8601-0.1.11[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/monotonic-0.6[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2013.6[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ !~dev-python/netaddr-0.7.16[${PYTHON_USEDEP}]
+ >=dev-python/netifaces-0.10.4[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/pyparsing-2.0.1[${PYTHON_USEDEP}]
+"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+}
+
+python_compile_all() {
+ use doc && esetup.py build_sphinx
+}
+
+# Note: Tests fail due to requiring installation
+#
+# Installation appears to fail due to the use of namespace packages but root
+# cause was never truly established.
+#
+# Tests fail with:
+# ImportError: No module named 'oslo.utils
+
+#RESTRICT="test"
+
+python_test() {
+ distutils_install_for_testing
+
+ cd "${TEST_DIR}"/lib || die
+
+ rm -rf .testrepository || die "couldn't remove '.testrepository' under ${EPTYHON}"
+
+ testr init || die "testr init failed under ${EPYTHON}"
+ testr run || die "testr run failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/osprofiler/Manifest b/dev-python/osprofiler/Manifest
index 71d15e52c418..b9772120b13a 100644
--- a/dev-python/osprofiler/Manifest
+++ b/dev-python/osprofiler/Manifest
@@ -1 +1,2 @@
DIST osprofiler-1.2.0.tar.gz 53375 SHA256 62447e1ed954587036e1fa62b9f7d5f9d23b585f6fd0bf7a4c3b7926880f7f0d SHA512 4c7d9ac8ed447e5b6bf8dabd37a144dad21c176e42abd20348a6f3fe2eccc9f05fa88aa04e63ea730bc9acd52c69a2949b39535363ba47e5b6ad96804fb3c0c5 WHIRLPOOL bee27edabea3ab48b742a0e220f26dc8d4595dc244ed676e402af81096daf533a2fea42ca89a3963d2d8d4eb5dba2e9e23edb8caca2b1c0eccb39956c7a82a8d
+DIST osprofiler-1.4.0.tar.gz 59906 SHA256 cda53436ffc8fc155fd220dd9bc9b2819c89f35baf62cd85f68dd5ea900f33fc SHA512 541f51b949158d7ce5ff31c8d5632a57ce557469e3277d9aae1c589377388e9f57a7abcd436c4452af544ba3d4dd3332e43b8e3594e7aa13a526f0d24360c176 WHIRLPOOL d7f7d2f5d8fd2b09d8e047f69809b7e1e21c8c2276a0a316132db47c5e18430bc866caa2fe3812173c175c1b3076c385226173eb81bb06712e0bdb50a5a2c099
diff --git a/dev-python/osprofiler/osprofiler-1.4.0.ebuild b/dev-python/osprofiler/osprofiler-1.4.0.ebuild
new file mode 100644
index 000000000000..a7d059bf0db8
--- /dev/null
+++ b/dev-python/osprofiler/osprofiler-1.4.0.ebuild
@@ -0,0 +1,29 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 python3_3 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="OpenStack Profiler Library"
+HOMEPAGE="https://launchpad.net/osprofiler"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-1.6.0[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ >=dev-python/pbr-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-messaging-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/paste/Manifest b/dev-python/paste/Manifest
index 2b6d4408db17..5c3ad8466e3c 100644
--- a/dev-python/paste/Manifest
+++ b/dev-python/paste/Manifest
@@ -1,2 +1,3 @@
DIST Paste-1.7.5.1.tar.gz 523304 SHA256 11645842ba8ec986ae8cfbe4c6cacff5c35f0f4527abf4f5581ae8b4ad49c0b6 SHA512 058a86dec41f132c22b14f3bc882d9c02c04bb0cc9ea5fc5371911698c3d7a89859742a4b806ad388c7fe37289b816db16c50bce21f56c8371293c4d91b5ccb6 WHIRLPOOL 5928a6f20c136a77576b653df34337f1eb110845b8d53d7637eeb6c792fe7f10fe622adefec382378aef16c1abee91c37e90e5fe17dbaa07046681a393f6c5c8
DIST Paste-2.0.2.tar.gz 627842 SHA256 adac3ac893a2dac6b8ffd49901377dd6819e05be3436b374d698641071daba99 SHA512 32eddeab1bab9d0b1a30848d89613b40ed02a77912f7ef5a86880e1c1a860c5637cd45114bd58cc5ac84410a569ede67e6ebd7afd2007c588433d54d6940f529 WHIRLPOOL 08c997079e632b92e592211d942298235228ec22b997d549f608552f139a941cdd47a5c2da859867c279cab0ad7f388823f1af163ed7ea8aeaaa7558407e3750
+DIST Paste-2.0.3.tar.gz 643935 SHA256 2346a347824c32641bf020c17967b49ae74d3310ec1bc9b958d4b84e2d985218 SHA512 174b06d77bc6e1d4079e8de7df40412ffda098364efd4e3f915f858be1188c8a6fb546fe4ab981ccc067ec77b7171083b2469e7db6fc3b777d5a24151c928362 WHIRLPOOL 0aa15c2c6ffdbf965f3763d296e28c75337d9e582ad8623d70a9a4df572457247d583682b7ecddc5206b1a997f22e4f46f68b013a1ca646b0d6d08559ac1447e
diff --git a/dev-python/paste/paste-2.0.3.ebuild b/dev-python/paste/paste-2.0.3.ebuild
new file mode 100644
index 000000000000..b8cc3cbc58d5
--- /dev/null
+++ b/dev-python/paste/paste-2.0.3.ebuild
@@ -0,0 +1,73 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} )
+
+inherit distutils-r1
+
+MY_PN="Paste"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Tools for using a Web Server Gateway Interface stack"
+HOMEPAGE="http://pythonpaste.org https://pypi.python.org/pypi/Paste"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~ppc ~ppc64 ~x86 ~x86-interix ~amd64-linux ~x86-linux ~x64-macos ~x86-macos ~sparc-solaris"
+IUSE="doc flup openid"
+
+RDEPEND="
+ dev-python/six[${PYTHON_USEDEP}]
+ >=dev-python/tempita-0.5.2_pre20130828[${PYTHON_USEDEP}]
+ flup? ( dev-python/flup[$(python_gen_usedep 'python2*')] )
+ openid? ( dev-python/python-openid[$(python_gen_usedep 'python2*')] )"
+DEPEND="${RDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
+
+S="${WORKDIR}/${MY_P}"
+
+python_prepare_all() {
+ # Disable failing tests.
+ rm -f tests/test_cgiapp.py || die
+ sed \
+ -e "s/test_find_file/_&/" \
+ -e "s/test_deep/_&/" \
+ -e "s/test_static_parser/_&/" \
+ -i tests/test_urlparser.py || die "sed failed"
+
+ # Remove a test that runs against the paste website.
+ rm -f tests/test_proxy.py || die
+
+ local PATCHES=(
+ "${FILESDIR}"/${PN}-1.7.5.1-fix-tests-for-pypy.patch
+ "${FILESDIR}"/${P}-unbundle-tempita.patch
+ )
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile() {
+ distutils-r1_python_compile egg_info --egg-base "${BUILD_DIR}/lib"
+}
+
+python_compile_all() {
+ use doc && esetup.py build_sphinx
+}
+
+python_test() {
+ nosetests -P -v || die "Tests fail with ${EPYTHON}"
+}
+
+python_install() {
+ distutils-r1_python_install egg_info --egg-base "${BUILD_DIR}/lib"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( "${BUILD_DIR}"/sphinx/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/positional/Manifest b/dev-python/positional/Manifest
index af74b2d438fa..ee1e44ffb24b 100644
--- a/dev-python/positional/Manifest
+++ b/dev-python/positional/Manifest
@@ -1 +1,2 @@
DIST positional-1.0.1.tar.gz 16398 SHA256 54a73f3593c6e30e9cdd0a727503b7c5dddbb75fb78bb681614b08dfde2bc444 SHA512 1071100fdc3d05520d452ef74a3294c7b16f84f41aac04ebd85fddcbbac58564e7ee836ac2a73af732b137bdf857efbfd15351e913afcdc88885d1b820183699 WHIRLPOOL 1a2a4ac9cc247f4e100f3acd55353d69b3adb79ed610bcc0a81f60816725ce66e60c258561dbbdcb98f42f11b3872873a956e6be838d0eae005918f621f2341f
+DIST positional-1.1.1.tar.gz 15987 SHA256 ef845fa46ee5a11564750aaa09dd7db059aaf39c44c901b37181e5ffa67034b0 SHA512 6bb8984c5a31081a97be3be1eff2d62747e829f7f4d1e6e973ab00e8baae3552ff996500a343b58986bb70399c99026284fd59185b3452dc2b9165e8276eefba WHIRLPOOL 99bee25ec30a1a99a8799ad8edd59fa64cdc37341242f51d865f09ae1999f5cc6b31059701737618533bf30b1deca8f1d067800c8c2b2ef83bed6c4007724445
diff --git a/dev-python/positional/positional-1.1.1.ebuild b/dev-python/positional/positional-1.1.1.ebuild
new file mode 100644
index 000000000000..10d783e49663
--- /dev/null
+++ b/dev-python/positional/positional-1.1.1.ebuild
@@ -0,0 +1,22 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 pypy )
+
+inherit distutils-r1
+
+DESCRIPTION="A decorator which enforces only some args may be passed positionally."
+HOMEPAGE="https://github.com/morganfainberg/positional"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+RDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]
+ dev-python/wrapt[${PYTHON_USEDEP}]"
diff --git a/dev-python/pyasn1-modules/pyasn1-modules-0.0.8.ebuild b/dev-python/pyasn1-modules/pyasn1-modules-0.0.8.ebuild
index 063ce707be18..2b211101b3c1 100644
--- a/dev-python/pyasn1-modules/pyasn1-modules-0.0.8.ebuild
+++ b/dev-python/pyasn1-modules/pyasn1-modules-0.0.8.ebuild
@@ -14,7 +14,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd"
IUSE=""
RDEPEND=">=dev-python/pyasn1-0.1.8[${PYTHON_USEDEP}]"
diff --git a/dev-python/pycadf/Manifest b/dev-python/pycadf/Manifest
index 27def38b0c75..81d328c8bc67 100644
--- a/dev-python/pycadf/Manifest
+++ b/dev-python/pycadf/Manifest
@@ -1 +1,2 @@
DIST pycadf-2.2.0.tar.gz 246623 SHA256 bdb3427a28d318c6ce073b54993c2f4cc9148be498b30ad1b362ade45eb4f7fb SHA512 366e30b387ec1164aa52f1f79141263ea411313ff06f72de753f316ba1c0cd1b751633cd899383ba375747903c531976938d8c0733a25340a85d2b5d61d0425d WHIRLPOOL 6e9be54670196a35fe6f0c4a95429bb24947332e7fd8aaa9d99af9a57e9174cd60befe1d2a8a1a8e2d69debae67b1d23d6369ada543dda42e906913b9efa00a2
+DIST pycadf-2.4.0.tar.gz 246975 SHA256 fb6100fd5cb9060b1baac1307b3cdeab0b4c5c363bce86dd712441b46dc9d793 SHA512 d0077d5c47115f9d1e2b20660c304b25ad0cb1437555ff5c9d676c1ae10b86f6155c20b37f30a0985440ec2074c2f21921c79315dfa4d42d38b640fad6ccac68 WHIRLPOOL 6cbb3805b6e2b8717381092e9d98298ad422d5809938f95f6785860e03a9e00e0c497a64ad903c2dbbef629c585a066de7f758ebf7334d5bfa4fc582be1fee7a
diff --git a/dev-python/pycadf/pycadf-2.4.0.ebuild b/dev-python/pycadf/pycadf-2.4.0.ebuild
new file mode 100644
index 000000000000..c5a221b029e0
--- /dev/null
+++ b/dev-python/pycadf/pycadf-2.4.0.ebuild
@@ -0,0 +1,64 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_3 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="python implementation of DMTF Cloud Audit (CADF) data model"
+HOMEPAGE="https://pypi.python.org/pypi/pycadf"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc test"
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ dev-python/pbr[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testtools-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-sphinx-3.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ )"
+# !=1.2.0 of sphinx deleted since it is not in portage anyway
+RDEPEND="
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/pytz-2013.6[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]"
+
+python_prepare_all() {
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && "${PYTHON}" setup.py build_sphinx
+}
+
+python_test() {
+ testr init || die "testr init failed under ${EPYTHON}"
+ testr run || die "testr run failed under ${EPYTHON}"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pyldap/Manifest b/dev-python/pyldap/Manifest
index af0106aec1a7..a665df9d5226 100644
--- a/dev-python/pyldap/Manifest
+++ b/dev-python/pyldap/Manifest
@@ -1,3 +1,4 @@
DIST pyldap-2.4.20.tar.gz 122175 SHA256 9f3c5679e6a2c26a852d0468c538239e458a39ee86ddbbd2f1ec5c6fc73a3755 SHA512 f29df58fa1617b8b61631ad4532fde7569dd9742d141e31c1724568c0b46ed63cbc83135089196a07e4dca22d76f05f3c5a74e9b1e8034e5673196912baa8642 WHIRLPOOL 27dcf5919b83e3236b2b18b02943080fe5f5e48e5e931f27dfae45612c075e58bd798bee1f52dde8674571f377dd99479ef0f4a4e917f8c55962cce51fc150a3
DIST pyldap-2.4.21.tar.gz 124575 SHA256 7a2b1dc31679466db11320b91bd2058574ba25ef27224967040918046ff4c450 SHA512 14aa87421017cd8ba4dc9c9787995ab28c0a656bc665c82de0eaaf4dfe312c731e98bb30f8de5200f23518e9d18d0265eed8a77c1aa58a0551e2d06dbc91a292 WHIRLPOOL 466ed66c77be629b0184efabb2ca5129e0d7d7b9a600f122b875287157c6b7ceb4af9d325c1f17e9f49233739fe8071373d900b0b435a730480eabf365178565
+DIST pyldap-2.4.25.1.tar.gz 124042 SHA256 fdc46e9cad1fd515017b6109edd8d35a5ab655daa2708743285e8356bb5c2bee SHA512 e28a13f4eca447dea3a2829c2523b103ebaa0e669d6772d24adc8e20505e552f9201ff37b1c71a904575e53739ef93e3b99a984f28d1bb0577a89e43e1b250e6 WHIRLPOOL 00389234dbb7eb4a18f65e448a5d5696812acd9a4fd5d9ff69f43a1e9ecbf29cb1cbd98b21d12178b34bab669f9eef3ec11192dcb4e9405ee1569d8ec81f689a
DIST pyldap-2.4.25.tar.gz 125234 SHA256 6a81ff791ee82fc246af724904d5d38f5fac97f5698a68e2907eaa5bb00bcc79 SHA512 23c34c0510d0e44f3d5d3af7c683ff41384c7fd06213ff50b14e43db27a1d1cdcc7c63477503f049ce7cbd1584ab1da0c0a88acb74b3ca7e05f3a841565e4713 WHIRLPOOL f537212124f2719507eee111801e985b6051d77e07a143fed5f4721ef0899ed4dd95d99eabfc3dd423401575f374448ed6b45f7546385eb983926be636d60efe
diff --git a/dev-python/pyldap/pyldap-2.4.25.1.ebuild b/dev-python/pyldap/pyldap-2.4.25.1.ebuild
new file mode 100644
index 000000000000..70e16ed42a4e
--- /dev/null
+++ b/dev-python/pyldap/pyldap-2.4.25.1.ebuild
@@ -0,0 +1,75 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} pypy )
+
+inherit distutils-r1 multilib
+
+DESCRIPTION="Various LDAP-related Python modules"
+HOMEPAGE="https://pypi.python.org/pypi/pyldap https://github.com/pyldap/pyldap/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="PSF-2"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm64 ~hppa ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd ~x86-solaris"
+IUSE="doc examples sasl ssl"
+
+# If you need support for openldap-2.3.x, please use python-ldap-2.3.9.
+# python team: Please do not remove python-ldap-2.3.9 from the tree.
+# OpenSSL is an optional runtime dep.
+# setup.py sets setuptools and misses pyasn1 and pyasn1-modules in install_requires
+RDEPEND="
+ >net-nds/openldap-2.4.11
+ dev-python/pyasn1[${PYTHON_USEDEP}]
+ dev-python/pyasn1-modules[${PYTHON_USEDEP}]
+ sasl? ( >=dev-libs/cyrus-sasl-2.1 )"
+DEPEND="${RDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
+RDEPEND+=" !dev-python/python-ldap"
+
+python_prepare_all() {
+ sed -e "s:^library_dirs =.*:library_dirs = /usr/$(get_libdir) /usr/$(get_libdir)/sasl2:" \
+ -e "s:^include_dirs =.*:include_dirs = ${EPREFIX}/usr/include ${EPREFIX}/usr/include/sasl:" \
+ -i setup.cfg || die "error fixing setup.cfg"
+
+ local mylibs="ldap"
+ if use sasl; then
+ use ssl && mylibs="ldap_r"
+ mylibs="${mylibs} sasl2"
+ else
+ sed -e 's/HAVE_SASL//g' -i setup.cfg || die
+ fi
+ use ssl && mylibs="${mylibs} ssl crypto"
+ use elibc_glibc && mylibs="${mylibs} resolv"
+
+ sed -e "s:^libs = .*:libs = lber ${mylibs}:" \
+ -i setup.cfg || die "error setting up libs in setup.cfg"
+
+ # set test expected to fail to expectedFailure
+ sed -e "s:^ def test_bad_urls: @unittest.expectedFailure\n def test_bad_urls:" \
+ -i Tests/t_ldapurl.py || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && emake -C Doc html
+}
+
+python_test() {
+ # XXX: the tests supposedly can start local slapd
+ # but it requires some manual config, it seems.
+
+ "${PYTHON}" Tests/t_ldapurl.py || die "Tests fail with ${EPYTHON}"
+}
+
+python_install_all() {
+ use examples && local EXAMPLES=( Demo/. )
+ use doc && local HTML_DOCS=( Doc/.build/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/pymysql/Manifest b/dev-python/pymysql/Manifest
index b42ac46e7dcf..3edb1ec3d5b0 100644
--- a/dev-python/pymysql/Manifest
+++ b/dev-python/pymysql/Manifest
@@ -1,3 +1,4 @@
DIST pymysql-0.6.3.tar.gz 52877 SHA256 eeb9772521cd08132885a283ba885dce5929994daf4953eb27a5ebde6f353143 SHA512 5dfe41039e703d2feb53b25db45a0541929bf52a2fe7b8f06b1dd3ff71118b99808b6d299f52073aaab779cddcd9858a51d59f23f1983e4f200d672caee5e624 WHIRLPOOL 0c0c6dd747200f2dbdde35767bb53177cdfbeae1d3623f6f1329c5030cfb89650c627cc73f2bf7039da96d3cb1e3b285ab304b5d12cc8806bcc5ef703ca06bd0
DIST pymysql-0.6.6.tar.gz 58118 SHA256 613073e7b0ede054620e5863cb0e461a13abc0f2f00b894a5f4d6de104b8dc2b SHA512 c09fc9801132243708cab18b7e4e1e9ed706579c6a08a51867bec41d27af41b1c19e33290206cf881153d81f42e5a9ba0871ad472abcc90a818a14f9413a5de6 WHIRLPOOL 0d90a574ed194420da938246c1037abfac2e1e344a5886a91444236425e6f05d84f8027b2706b7548e50646cfd95e00ab3ed5aa85464a8a0a1b8c5ec3c1fedc7
DIST pymysql-0.6.7.tar.gz 63485 SHA256 e0e0e0bd417993b9d455733630557d36f58e1fbf50788c61eb99d0d6e3e96a25 SHA512 8eabb4f870ad35b5437b6e2c773fe61ebecdeeb61187f008e515d40ebad0141cd929f894291ff85f50bd4fdc842e902afb7399fb8655b231443ac3ff49ed5d39 WHIRLPOOL 44e457c23a75c537ac2de283bf8a5a2cbfa9cbe0d8401aff992dd7ba1fb740a816647543703603f1e0073114a07fabaeee53e333ec21c17377de98cd8850d51d
+DIST pymysql-0.7.6.tar.gz 81842 SHA256 eb5fd3ef7a0d18a705d00ceb07e6d18653bd8042055181442bfb16231e7505e6 SHA512 02efa79253c9aaf631d77ab7d7acffb96e81d96cea781dd7c80a268f13098e3f2d538db1161417dcd96d0e3a19edf7ff888e791e4a332b1edd9edf2ff9f2de36 WHIRLPOOL e614487700867813921b1c142ac0b6595e8071a7d160e7024b66c876095b5b9c0386c4f6e5d04689f4ba1716f86eeb0351404fe5152efd6bbd4a2eb6e343721a
diff --git a/dev-python/pymysql/pymysql-0.7.6.ebuild b/dev-python/pymysql/pymysql-0.7.6.ebuild
new file mode 100644
index 000000000000..ff47e940a726
--- /dev/null
+++ b/dev-python/pymysql/pymysql-0.7.6.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} pypy pypy3 )
+
+inherit distutils-r1
+
+MY_PN="PyMySQL"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="Pure-Python MySQL Driver"
+HOMEPAGE="https://github.com/PyMySQL/PyMySQL"
+SRC_URI="https://github.com/${MY_PN}/${MY_PN}/archive/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="test"
+
+S=${WORKDIR}/${MY_P}
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]"
+
+# While tests exist, they require an unsecure server to run without manual config file
+RESTRICT="test"
+
+python_test() {
+ ${PYTHON} runtests.py || die
+}
diff --git a/dev-python/pysaml2/Manifest b/dev-python/pysaml2/Manifest
index 1468249c2e26..f17591e9825c 100644
--- a/dev-python/pysaml2/Manifest
+++ b/dev-python/pysaml2/Manifest
@@ -1 +1,2 @@
DIST pysaml2-3.0.0.tar.gz 13051759 SHA256 22aec520b3324f1f33cad58862f03ec3e000b2abc36880a5202615ba9fda5cc0 SHA512 a16281888e86222204dbabcec1501d3d2ef6374ad63225f60664a663f2aad6dd2ffe9d8e77f7f1fc18fefc12a4ba44d183ed04c201774ad9e174fd604b91bb78 WHIRLPOOL 7814d31852144c6bf9de8581e7cbc1d7d11bb337d53b828022a5a956615acdd1f3ad4ee79dbb8632a0a80c17dc6119ea31f54734ed5afd254f77eb05ea2ab63d
+DIST pysaml2-4.0.2.tar.gz 13657558 SHA256 24cec8dbc20a7772854563ffc9a19297afcc38c4c7558c063b4c8c302f8a958b SHA512 debe23c2b193ca9f937bdb4fc9e8f308fa012c18e50e40183f7e531434af52b6e4d36608be3e9b0321190930cdfd9eb24555ed1805083e32db8de0f57e5afb14 WHIRLPOOL 303217ea7408986435a31ac97deae3d2b14393674d360d30cbdacf1c673d265b21505af1dea8c536c4698dc6861058f6e57421aaa5bb411daa68d5d02c1ba2c2
diff --git a/dev-python/pysaml2/pysaml2-4.0.2.ebuild b/dev-python/pysaml2/pysaml2-4.0.2.ebuild
new file mode 100644
index 000000000000..cda3b112956c
--- /dev/null
+++ b/dev-python/pysaml2/pysaml2-4.0.2.ebuild
@@ -0,0 +1,34 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="Python implementation of SAML Version 2 to be used in a WSGI environment"
+HOMEPAGE="https://github.com/rohe/pysaml2"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+"
+RDEPEND="
+ dev-python/decorator[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/future[${PYTHON_USEDEP}]
+ dev-python/paste[${PYTHON_USEDEP}]
+ dev-python/zope-interface[${PYTHON_USEDEP}]
+ dev-python/repoze-who[${PYTHON_USEDEP}]
+ >=dev-python/pycrypto-2.5[${PYTHON_USEDEP}]
+ dev-python/pytz[${PYTHON_USEDEP}]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ dev-python/python-dateutil[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]
+"
diff --git a/dev-python/python-keystoneclient/Manifest b/dev-python/python-keystoneclient/Manifest
index e0a9174a4311..d62c9f7c35a8 100644
--- a/dev-python/python-keystoneclient/Manifest
+++ b/dev-python/python-keystoneclient/Manifest
@@ -1 +1,2 @@
DIST python-keystoneclient-2.3.1.tar.gz 322240 SHA256 89e93551071cf29780eeafe7a61114cd36b1c2192813d3c2a58a348a6a3ac6ff SHA512 555ad57332ea677242057c34313df0d02a16f5738c584db82611db3e3636e792d30b9dc5ea371ba56a4c3b9a158ba879ca38ff5fd40ae842f8be98e52ea856d8 WHIRLPOOL 095ae83ea61f356a46fc2f8e135ffcb46db205a8bfd9b5b3acd0e7b4baacfa97d315c1b1ae3c422769e683911591d67bdbb5ec21728af91fd4eb709c0f6c3df1
+DIST python-keystoneclient-3.5.0.tar.gz 299756 SHA256 5a1c7f3902193c620e398c4655b7d363a7fabdb286e549fccf99ae84ed1612dd SHA512 a43a11cc856c7e65c9844820df1d0683b90c599ae14721ba8a915952e89037871cf7f702b7b422d37d06e18cb1a2746cf02a1fa2bb6dac708c651df0dea86734 WHIRLPOOL ac958569843a8adf548c6ad7e319dfbd309528420211cc3cfba8bd00d2194314f88fa66e6c770ca828051ef3ffc61ad3c441098b005ae5b42d545266483cdc7c
diff --git a/dev-python/python-keystoneclient/python-keystoneclient-3.5.0.ebuild b/dev-python/python-keystoneclient/python-keystoneclient-3.5.0.ebuild
new file mode 100644
index 000000000000..0ee177f7f5f4
--- /dev/null
+++ b/dev-python/python-keystoneclient/python-keystoneclient-3.5.0.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1
+
+DESCRIPTION="Client Library for OpenStack Identity"
+HOMEPAGE="http://www.openstack.org/"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux"
+IUSE=""
+RESTRICT="test"
+
+# Note: blacklist version not in portage:
+#doc? ( !~dev-python/sphinx-1.3_preb1[${PYTHON_USEDEP}] )
+
+CDEPEND="
+ >=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+TCDEPEND="
+ >=dev-python/lxml-2.3[${PYTHON_USEDEP}]
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-1.0.0[${PYTHON_USEDEP}]
+ >=dev-python/testresources-0.2.4[${PYTHON_USEDEP}]
+ >=dev-python/bandit-1.1.0[${PYTHON_USEDEP}]
+"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/debtcollector-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/keystoneauth-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/positional-1.0.1[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+"
+#PATCHES=(
+#)
+
+python_prepare_all() {
+ sed -i '/^argparse/d' requirements.txt || die
+ sed -i '/^hacking/d' test-requirements.txt || die
+ distutils-r1_python_prepare_all
+}
diff --git a/dev-python/reno/Manifest b/dev-python/reno/Manifest
index 79f09ae23a59..5a83e2805fb5 100644
--- a/dev-python/reno/Manifest
+++ b/dev-python/reno/Manifest
@@ -1 +1,2 @@
DIST reno-1.2.0.tar.gz 23725 SHA256 8f2c4f9b8325e6de4a5a2a98169b2906bd2479cc2c66b97cd6899da455425fd3 SHA512 61abf852504ab9ace324efc70bbe4bf5ce226175a4375f37466ebbe011cb65c7d306d69cd90a5e152f03d60f578be02d57a3805647a486e44dccf59b17595083 WHIRLPOOL 4a25f46b2a3c7693642104402db8bc024c82d19e3d8e3a11c899485aa7acd005a868a31665a0bb827f4922869c08297d63bdba5df76f0bf81cf8b95b2faa35db
+DIST reno-1.8.0.tar.gz 33367 SHA256 fa8e478fe070b6f658fa4868941449cc6dca7b08f520756dcebed2c87e070fdf SHA512 b8254cddd713d85dbbbedfaca864950093a2194e3a2e9754e5fb2490b2434d808dc3ae3659e901df0cf5ce7f33d6bf07d1c39fc086526a127643636199420d64 WHIRLPOOL 3c6e288af413ddf97be057278bec4ecbdda0fd1e80b29f52b20f3ccd6212090e16842e98a50e5dbe65260cb279112d87af3ee00aeb5371bc0dbb374a378e501c
diff --git a/dev-python/reno/reno-1.8.0.ebuild b/dev-python/reno/reno-1.8.0.ebuild
new file mode 100644
index 000000000000..74f321cb075c
--- /dev/null
+++ b/dev-python/reno/reno-1.8.0.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 python3_4 python3_5 )
+
+inherit distutils-r1
+
+DESCRIPTION="Release notes manager, storing release notes in a git repo and building docs"
+HOMEPAGE="https://pypi.python.org/pypi/reno"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE=""
+
+CDEPEND="
+ >=dev-python/pbr-1.4[${PYTHON_USEDEP}]
+ <dev-python/pbr-2.0[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/Babel-1.3[${PYTHON_USEDEP}]
+ >=dev-python/pyyaml-3.1.0[${PYTHON_USEDEP}]"
diff --git a/dev-python/requests/Manifest b/dev-python/requests/Manifest
index 277f10a7367d..15aaa9ca371c 100644
--- a/dev-python/requests/Manifest
+++ b/dev-python/requests/Manifest
@@ -1,3 +1,4 @@
+DIST requests-2.11.1.tar.gz 485936 SHA256 5acf980358283faba0b897c73959cecf8b841205bb4b2ad3ef545f46eae1a133 SHA512 135cbab1e279ebf314bffca01bc4d9f9e71963c67069e330e78fbe06c4294031d1d616bc5d5e104161c8696b408887053bdd65351f85e9ff34646368c88852e5 WHIRLPOOL 838e3074f56a87766ebeb04eb75fdd6f5c83da7448b5e9297be8143330acaeae540d10939b7118cbd9e86c1749c8db5c6c22d50064e704b9c1d7278a37a48af4
DIST requests-2.7.0.tar.gz 451723 SHA256 398a3db6d61899d25fd4a06c6ca12051b0ce171d705decd7ed5511517b4bb93d SHA512 a93223c3fd21c58f7c0c901b17be17c23dba4efeed8c4347da9d4e04d96a6698e08e01482205661cb7757cc7560d9ae2e62b18f2b422af0cb90fd998fe963ff2 WHIRLPOOL b805d76ad747fc8a754fb0ca0439e8f303df057c2b256ed7f57533b311322e4e28b0d8f22111a3c5ad283823c1256cd24c93fec2aeabc6946013c17ab3540dd9
DIST requests-2.8.0.tar.gz 457879 SHA256 b2f003589b60924909c0acde472590c5ea83906986a7a25b6f7929eb20923b7b SHA512 cf41db4b1a4639e940c2b5c1e0edaf2c4dedf0a8ead8381e211fd9e350f491e252f10cfba09bb64b4a062be98ee43e133957f489649db15116a1811e06958bb3 WHIRLPOOL 5e7e889bc016f403e221af05d01aebbec4c96175c983e240128d288884768dc0c119d76c022fd3ae5d2222cfda5415c866052fa5c5f325ee22cebb33c780df16
DIST requests-2.8.1.tar.gz 480803 SHA256 84fe8d5bf4dcdcc49002446c47a146d17ac10facf00d9086659064ac43b6c25b SHA512 bccec89165596df3af3f46eb43b5b28b595752485b00ed73978ef76fa6b8a8961c3db046c3f91ff34fa390f037322f6e13b141ba9b600a836a6d798086bd13fb WHIRLPOOL 445e0e12f5900c3396ae7a76d0010b9c4a4ff2c79c51dfc88f117918e436a4d67ea25de39f252cacaabd737b7b1542374172a2b6f482d7ffe1f7514d1cb4a06b
diff --git a/dev-python/requests/requests-2.11.1.ebuild b/dev-python/requests/requests-2.11.1.ebuild
new file mode 100644
index 000000000000..8465d8ebb6e8
--- /dev/null
+++ b/dev-python/requests/requests-2.11.1.ebuild
@@ -0,0 +1,55 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{4,5} pypy )
+PYTHON_REQ_USE="threads(+)"
+
+inherit distutils-r1
+
+DESCRIPTION="HTTP library for human beings"
+HOMEPAGE="http://python-requests.org/ https://pypi.python.org/pypi/requests"
+SRC_URI="mirror://pypi/${P:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~x86-fbsd ~amd64-linux ~x86-linux ~x64-macos ~x86-macos"
+IUSE="test"
+
+RDEPEND="
+ app-misc/ca-certificates
+ >=dev-python/chardet-2.2.1[${PYTHON_USEDEP}]
+ dev-python/ndg-httpsclient[${PYTHON_USEDEP}]
+ >=dev-python/py-1.4.30[${PYTHON_USEDEP}]
+ dev-python/pyasn1[${PYTHON_USEDEP}]
+ >=dev-python/pyopenssl-0.13[$(python_gen_usedep 'python*' pypy)]
+ >=dev-python/urllib3-1.13.1-r1[${PYTHON_USEDEP}]
+ "
+DEPEND="${RDEPEND}
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ >=dev-python/pytest-2.8.1[${PYTHON_USEDEP}]
+ )
+ "
+# >=dev-python/pytest-httpbin-0.0.7[${PYTHON_USEDEP}]
+
+# tests connect to various remote sites
+RESTRICT="test"
+
+PATCHES=(
+ "${FILESDIR}"/${P}-system-packages.patch
+ "${FILESDIR}"/${PN}-2.5.0-system-cacerts.patch
+)
+
+python_prepare_all() {
+ # use system chardet & urllib3
+ rm -r requests/packages/{chardet,urllib3} || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_test() {
+ py.test -v || die
+}
diff --git a/dev-python/rfc3986/Manifest b/dev-python/rfc3986/Manifest
index ed2ac9af66fb..0757c2593fa2 100644
--- a/dev-python/rfc3986/Manifest
+++ b/dev-python/rfc3986/Manifest
@@ -1 +1,2 @@
DIST rfc3986-0.3.1.tar.gz 21591 SHA256 b94638db542896ccf89dc62785ec26dbcbd6a97d337f64e02615b164b974f2e5 SHA512 47c0cff5b67de5cc54ce3a24eb6d192a8b1414f5bb25e54056561fc0394058ec94853e62b9495dd72e15074921b66153279d4dffd1c199e252d569646a34aaed WHIRLPOOL b2ae2145dd078dfed954eda8e76d41a5776a6760e21d247d50bb06a10400785b5fd78f77e6b01b4de75a076ede123ae501db800458dc0e7fa822d90d7983c229
+DIST rfc3986-0.4.1.tar.gz 22354 SHA256 5ac85eb132fae7bbd811fa48d11984ae3104be30d44d397a351d004c633a68d2 SHA512 a4731206a4179d3970fcf9c21405f7e9686268ef3610ab5ca2413a867d83b83188c0efd5958b0b4ba8fc4076da9bc0cf18aef774213a1b58fc42bfc8a6d5dd92 WHIRLPOOL 9e26818343bc2d174cdb3737902b0edc5c3911c9e2aee7e3a7bf7d40eaa7920345a2103d8f9ec6a8f432d54f856cd37c7fbd9c53da12678fce3e3cecd682186a
diff --git a/dev-python/rfc3986/rfc3986-0.4.1.ebuild b/dev-python/rfc3986/rfc3986-0.4.1.ebuild
new file mode 100644
index 000000000000..d8f53ea9249b
--- /dev/null
+++ b/dev-python/rfc3986/rfc3986-0.4.1.ebuild
@@ -0,0 +1,28 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 python3_{3,4,5} pypy pypy3)
+
+inherit distutils-r1
+
+DESCRIPTION="Validating URI References per RFC 3986"
+HOMEPAGE="http://tools.ietf.org/html/rfc3986 https://github.com/sigmavirus24/rfc3986 https://rfc3986.rtfd.org"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+IUSE="test"
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? ( dev-python/pytest[${PYTHON_USEDEP}] )
+"
+RDEPEND=""
+
+python_test() {
+ py.test -vv || die
+}
diff --git a/dev-python/routes/Manifest b/dev-python/routes/Manifest
index 968f045910bc..45e0d6f9aefe 100644
--- a/dev-python/routes/Manifest
+++ b/dev-python/routes/Manifest
@@ -1,2 +1,3 @@
DIST Routes-2.1.tar.gz 179737 SHA256 ebf4126e244cf11414653b5ba5f27ed4abfad38b906a01e5d4c93d3ce5568ea3 SHA512 6dcea3e20d9883e29d6aea5949eef3b265094f46084234a15530c266930163918c6eb2ad00bb49cd9cbf947a0019c2d91a5455f997bc7a7e5b8c662837a728c2 WHIRLPOOL fbdb8e1a84aa2b1b8bf011aa68a31364f0fd48cabcaaf413274679f34e514283fbd8aac9497444b24f69f7d72393f38aeab5eeeb96659e3aae009ed2eebc4fbf
DIST Routes-2.2.tar.gz 180011 SHA256 9fa78373d63e36c3d8af6e33cfcad743f70c012c7ad6f2c3bf89ad973b9ab514 SHA512 ddd88c412fce902aa75be46dd564bea7fed630116d50c0f08db6813de26bbb7af5adf7366dd3664a0fc10e369ed5089f6cc9ac91cc236e1b45c828fe2deee2e2 WHIRLPOOL 9fe75ce3826e64ff46db35fdb47c655f86709fdbfb64ad317b2f672e761a717bc2b4c2fd18f1675b36922d65300cd2f7acec87cb08ceeb50cb85fb099c15209f
+DIST Routes-2.3.1.tar.gz 181694 SHA256 98c380b5dc1190b873463be07383728ada18f66d2615531963004b9d6fb90351 SHA512 125bcee31883e55ac2c01896e52890c1eace238728e9f340b9dede8257e66b1002cf48a633b9b0c3421291287559890c3233665cd49b1edb4ed80a99f003da8d WHIRLPOOL 2e8f931c0ac85bc7e0f46dea7b0e38798f8d37005266e40986450d2b3d71c2621150ec8aead05691244622f24b097932e5eb476089f262b8a1b7c19db1333a33
diff --git a/dev-python/routes/routes-2.3.1.ebuild b/dev-python/routes/routes-2.3.1.ebuild
new file mode 100644
index 000000000000..57edb022738b
--- /dev/null
+++ b/dev-python/routes/routes-2.3.1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python{2_7,3_4,3_5} )
+
+inherit distutils-r1
+
+MY_PN="Routes"
+MY_P="${MY_PN}-${PV}"
+
+DESCRIPTION="A re-implementation of Rails routes system, mapping URLs to Controllers/Actions"
+HOMEPAGE="http://routes.groovie.org https://pypi.python.org/pypi/Routes"
+SRC_URI="mirror://pypi/${MY_PN:0:1}/${MY_PN}/${MY_P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+IUSE="doc"
+
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+ doc? ( dev-python/sphinx[${PYTHON_USEDEP}] )"
+
+RDEPEND=">=dev-python/repoze-lru-0.3[${PYTHON_USEDEP}]
+ dev-python/six[${PYTHON_USEDEP}]"
+
+# The testsuite appears to be held back by the author
+
+S="${WORKDIR}/${MY_P}"
+
+# https://github.com/bbangert/routes/issues/42 presents a patch
+# for the faulty docbuild converted to sed stmnts
+python_prepare_all() {
+ # The default theme in sphinx switched to classic from shpinx-1.3.1
+ if has_version ">=dev-python/sphinx-1.3.1"; then
+ sed -e "s:html_theme_options = {:html_theme = 'classic'\n&:" \
+ -i docs/conf.py || die
+ else
+ sed -e "s:html_theme_options = {:html_theme = 'default'\n&:" \
+ -i docs/conf.py || die
+ fi
+ sed -e "s:changes:changes\n todo:" \
+ -i docs/index.rst || die
+
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && emake -C docs html
+}
+
+python_install_all() {
+ use doc && HTML_DOCS=( docs/_build/html/. )
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/stevedore/Manifest b/dev-python/stevedore/Manifest
index f8ee88e3438a..5dc04adfd3b0 100644
--- a/dev-python/stevedore/Manifest
+++ b/dev-python/stevedore/Manifest
@@ -1,6 +1,7 @@
DIST stevedore-1.1.0.tar.gz 352294 SHA256 f98381d12a6bfff718328d14d0d26cae6c83e39feb787e7b38acfe1089c3f1d3 SHA512 70f8629fdd455421871753810c14462ba66f81d1478ea45696c400a68f034a77c2a3efaac3c96bebe7293c42f73715681161b7fca8897d545a7ae06d64ad0c44 WHIRLPOOL 1f3e5380792cea8b3ef67fc4a4f8be40fd3cb2f048caa71c0c774990dc45d9981edec599312301b3f7a54955b941a421574e3c23c794fc3f117251e845ea214d
DIST stevedore-1.10.0.tar.gz 501859 SHA256 f5d689ef38e0ca532d57a03d1ab95e89b17c57f97b58d10c92da94699973779f SHA512 7842388475c4c2f59e0bdbd1f07cc7588a12ac61fb0f9282c4e668e2b6b7278a7ff262ff5b1678492ce6cd7844a01729ed16119ae906fe010e27b8551f30f24e WHIRLPOOL 4399418912867472ad3197b69ad23d080d15150552151efe94a5cb905acaeb7a65e4d6a5d45d5edb5231dba9dd6d7442ca33e93a2d742be5290894a2f9df4c9a
DIST stevedore-1.12.0.tar.gz 499155 SHA256 1bdeb2562d8f2c1e3047c2f17134a38b37a6e53e16ca1d9f79ff2ac5d5fe2925 SHA512 c02a0fe91d27f50652f3dd7f9990dca7395cfcfdd1bbbebe72fdd9cfc6a2ac526f023861314ccc29e7cc432619b75449e63639f54186f7cd099cb3f470707502 WHIRLPOOL eac89aa113b3588624235f5da107f1cd873a6ca2e36faa9685b92ffbb862c466bc71971b117599f2e6046fac31b95401c51c5e1f1efd1becd9535a0f87aed355
+DIST stevedore-1.17.1.tar.gz 501848 SHA256 79414e27ece996b2e81161c1ec91536f2b15645d5f6bd28128724486e1c4b8e3 SHA512 5b543bdd45544e23f0f786715ede544cec6e1389f7e836a12925d00a30fd6fcf744bdb929eb54c2d97b1143491b383c766582fa494379171a0f9334e9aaebca3 WHIRLPOOL ee973f5aed81cb013b7e1469aeccadd896637ca55e1ad0a31432ec3327b0b870dd85ad58d89471894cd7f336ae7c13cb527c9b7e37b086daee13684cf8ef7733
DIST stevedore-1.3.0.tar.gz 354869 SHA256 beab2b7f91966d259796392c39ed6f260b32851861561dd9f3b9be2fd0c426a5 SHA512 68583c8e7c9c667c4456754a973d344f79ca141d380e6e568d82f8b36fc77e8debc4d77a006eb7b6e580edf017307f748842f1cae8a82ef101114eebdab82c26 WHIRLPOOL 16eb37416b4dccf8606aca2d407eda9060549e014f41db0f54982707f9a9d51cb7bdfcb048b8bac494f707dce042e22a7ff87c210aff8e39d4940717a5f5a6ca
DIST stevedore-1.4.0.tar.gz 353953 SHA256 4a8d80b0a232746c09e0173bd61d60a18e9864e3dc87e3ebefa3ba3d8a00232f SHA512 a947d13ef15b2a5210da7115de7b49b4297f811a8237f0d205c2e2a676747255a852300ca99dd5279ae0de49f706b380fc8a09921c9a1e9f0bf6ad7ea34023e3 WHIRLPOOL 7c4ab9ce986cec938772ed63094a8f2d6a5072be948845dd324c7c68cae4082781babd36d87d832bae37d30960efa76309350cfafa725555e02ca6354dd7c2aa
DIST stevedore-1.6.0.tar.gz 500868 SHA256 dab2aa31ec742f651e6a2fe0429560aebbbe0fb7fc462fa0ff565c8f5ff2ec25 SHA512 bdcf3ab8f539ad2df65cb6f1d0eecf77e98a7b579ea50ccb419979ce419632963c199e3e473a36072ba303d3fbdbfea3f0f56a27831c35c65a1874ebc8b6b0b4 WHIRLPOOL 65f6a08f6fa19214725c972bdbc39f605b4a852376ad19c5c29c4bb1a361dea69677e4f7a5061f7ce6201b8da06bd12b8693256cc7b562e4f92b866fcaffd013
diff --git a/dev-python/stevedore/stevedore-1.17.1.ebuild b/dev-python/stevedore/stevedore-1.17.1.ebuild
new file mode 100644
index 000000000000..7c64dd6b20f1
--- /dev/null
+++ b/dev-python/stevedore/stevedore-1.17.1.ebuild
@@ -0,0 +1,63 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python{2_7,3_{4,5}} )
+
+inherit distutils-r1
+
+DESCRIPTION="Manage dynamic plugins for Python applications"
+HOMEPAGE="https://github.com/openstack/stevedore https://pypi.python.org/pypi/stevedore"
+SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="doc test"
+
+CDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}
+ test? (
+ >=dev-python/mock-2.0.0[${PYTHON_USEDEP}]
+ dev-python/nose[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ )
+ doc? (
+ >=dev-python/pillow-2.4.0[${PYTHON_USEDEP}]
+ >=dev-python/sphinx-1.1.2[${PYTHON_USEDEP}]
+ !~dev-python/sphinx-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/sphinx-1.3[${PYTHON_USEDEP}]
+ >=dev-python/oslo-sphinx-2.5.0[${PYTHON_USEDEP}]
+ )
+"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]"
+
+python_prepare_all() {
+ # Delete spurious data in requirements.txt
+ sed -e '/^pbr/d' -e '/^argparse/d' \
+ -i requirements.txt || die
+ distutils-r1_python_prepare_all
+}
+
+python_compile_all() {
+ use doc && esetup.py build_sphinx
+}
+
+python_test() {
+ nosetests --verbosity=3 stevedore || die
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+
+ distutils-r1_python_install_all
+}
diff --git a/dev-python/urllib3/urllib3-1.14.ebuild b/dev-python/urllib3/urllib3-1.14.ebuild
index fd62a837f080..d3e20017a379 100644
--- a/dev-python/urllib3/urllib3-1.14.ebuild
+++ b/dev-python/urllib3/urllib3-1.14.ebuild
@@ -15,7 +15,7 @@ SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
LICENSE="MIT"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-linux"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-linux ~x86-fbsd ~x86-linux"
IUSE="doc test"
RDEPEND="
diff --git a/sys-auth/keystone/keystone-2016.2.9999.ebuild b/sys-auth/keystone/keystone-2016.2.9999.ebuild
new file mode 100644
index 000000000000..29978b01e622
--- /dev/null
+++ b/sys-auth/keystone/keystone-2016.2.9999.ebuild
@@ -0,0 +1,166 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 git-r3 user
+
+DESCRIPTION="The Openstack authentication, authorization, and service catalog"
+HOMEPAGE="https://launchpad.net/keystone"
+EGIT_REPO_URI="https://github.com/openstack/keystone.git"
+EGIT_BRANCH="stable/mitaka"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS=""
+IUSE="+sqlite ldap memcached mongo mysql postgres test"
+REQUIRED_USE="|| ( mysql postgres sqlite )"
+
+CDEPEND=">=dev-python/pbr-1.6[${PYTHON_USEDEP}]"
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ ${CDEPEND}"
+RDEPEND="
+ ${CDEPEND}
+ >=dev-python/Babel-2.3.4[${PYTHON_USEDEP}]
+ >=dev-python/webob-1.2.3-r1[${PYTHON_USEDEP}]
+ >=dev-python/pastedeploy-1.5.0[${PYTHON_USEDEP}]
+ <=dev-python/paste-2.0.2[${PYTHON_USEDEP}]
+ >=dev-python/routes-1.12.3[${PYTHON_USEDEP}]
+ !~dev-python/routes-2.0[${PYTHON_USEDEP}]
+ !~dev-python/routes-2.1[$(python_gen_usedep 'python2_7')]
+ !~dev-python/routes-2.3.0[${PYTHON_USEDEP}]
+ >=dev-python/cryptography-1.0[${PYTHON_USEDEP}]
+ !~dev-python/cryptography-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ sqlite? (
+ >=dev-python/sqlalchemy-1.0.10[sqlite,${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[sqlite,${PYTHON_USEDEP}]
+ )
+ mysql? (
+ >=dev-python/pymysql-0.6.2[${PYTHON_USEDEP}]
+ !~dev-python/pymysql-0.7.7[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ )
+ postgres? (
+ >=dev-python/psycopg-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+ <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+ )
+ >=dev-python/sqlalchemy-migrate-0.9.6[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.16.0[${PYTHON_USEDEP}]
+ >=dev-python/passlib-1.6[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-2.0.0[${PYTHON_USEDEP}]
+ !~dev-python/python-keystoneclient-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/keystonemiddleware-4.0.0[${PYTHON_USEDEP}]
+ !~dev-python/keystonemiddleware-4.1.0[${PYTHON_USEDEP}]
+ !~dev-python/keystonemiddleware-4.5.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-cache-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-3.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-3.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-messaging-5.2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-db-4.10.0[${PYTHON_USEDEP}]
+ !~dev-python/oslo-db-4.13.1[${PYTHON_USEDEP}]
+ !~dev-python/oslo-db-4.13.2[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.14.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-middleware-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-policy-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-3.16.0[${PYTHON_USEDEP}]
+ >=dev-python/oauthlib-0.6.0[${PYTHON_USEDEP}]
+ >=dev-python/pysaml2-2.4.0[${PYTHON_USEDEP}]
+ <dev-python/pysaml2-4.0.3[${PYTHON_USEDEP}]
+ >=dev-python/dogpile-cache-0.6.2[${PYTHON_USEDEP}]
+ >=dev-python/jsonschema-2.0.0[${PYTHON_USEDEP}]
+ !~dev-python/jsonschema-2.5.0[${PYTHON_USEDEP}]
+ <dev-python/jsonschema-3.0.0[${PYTHON_USEDEP}]
+ >=dev-python/pycadf-1.1.0[${PYTHON_USEDEP}]
+ !~dev-python/pycadf-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.4.0[${PYTHON_USEDEP}]
+ >=dev-python/osprofiler-1.4.0[${PYTHON_USEDEP}]
+ memcached? (
+ >=dev-python/python-memcached-1.56[${PYTHON_USEDEP}]
+ )
+ mongo? (
+ >=dev-python/pymongo-3.0.2[${PYTHON_USEDEP}]
+ !~dev-python/pymongo-3.1[${PYTHON_USEDEP}]
+ )
+ ldap? (
+ >=dev-python/pyldap-2.4[${PYTHON_USEDEP}]
+ >=dev-python/ldappool-2.0.0[${PYTHON_USEDEP}]
+ )
+ || (
+ www-servers/uwsgi[python,${PYTHON_USEDEP}]
+ www-apache/mod_wsgi[${PYTHON_USEDEP}]
+ www-servers/gunicorn[${PYTHON_USEDEP}]
+ )"
+
+#PATCHES=(
+#)
+
+pkg_setup() {
+ enewgroup keystone
+ enewuser keystone -1 -1 /var/lib/keystone keystone
+}
+
+python_prepare_all() {
+ # it's in git, but not in the tarball.....
+ sed -i '/^hacking/d' test-requirements.txt || die
+ mkdir -p ${PN}/tests/tmp/ || die
+ cp etc/keystone-paste.ini ${PN}/tests/tmp/ || die
+ sed -i 's|/usr/local|/usr|g' httpd/keystone-uwsgi-* || die
+ sed -i 's|python|python27|g' httpd/keystone-uwsgi-* || die
+ distutils-r1_python_prepare_all
+}
+
+# Ignore (naughty) test_.py files & 1 test that connect to the network
+#-I 'test_keystoneclient*' \
+python_test() {
+ nosetests -I 'test_keystoneclient*' \
+ -e test_static_translated_string_is_Message \
+ -e test_get_token_id_error_handling \
+ -e test_provider_token_expiration_validation \
+ -e test_import --process-restartworker --process-timeout=60 || die "testsuite failed under python2.7"
+}
+
+python_install() {
+ distutils-r1_python_install
+
+ diropts -m 0750
+ keepdir /etc/keystone /var/log/keystone
+ insinto /etc/keystone
+ insopts -m0640 -okeystone -gkeystone
+ doins etc/keystone.conf.sample etc/logging.conf.sample
+ doins etc/default_catalog.templates etc/policy.json
+ doins etc/policy.v3cloudsample.json etc/keystone-paste.ini
+ insinto /etc/keystone/httpd
+ doins httpd/*
+
+ fowners keystone:keystone /etc/keystone /etc/keystone/httpd /var/log/keystone
+}
+
+pkg_postinst() {
+ elog "You might want to run:"
+ elog "emerge --config =${CATEGORY}/${PF}"
+ elog "if this is a new install."
+ elog "If you have not already configured your openssl installation"
+ elog "please do it by modifying /etc/ssl/openssl.cnf"
+ elog "BEFORE issuing the configuration command."
+ elog "Otherwise default values will be used."
+}
+
+pkg_config() {
+ if [ ! -d "${ROOT}"/etc/keystone/ssl ] ; then
+ einfo "Press ENTER to configure the keystone PKI, or Control-C to abort now..."
+ read
+ "${ROOT}"/usr/bin/keystone-manage pki_setup --keystone-user keystone --keystone-group keystone
+ else
+ einfo "keystone PKI certificates directory already present, skipping configuration"
+ fi
+}