sys-cluster/neutron: OCATA
authorMatthew Thode <prometheanfire@gentoo.org>
Mon, 27 Feb 2017 05:44:55 +0000 (23:44 -0600)
committerMatthew Thode <prometheanfire@gentoo.org>
Mon, 27 Feb 2017 05:45:42 +0000 (23:45 -0600)
Package-Manager: Portage-2.3.3, Repoman-2.3.1

sys-cluster/neutron/Manifest
sys-cluster/neutron/neutron-10.0.0.ebuild [new file with mode: 0644]
sys-cluster/neutron/neutron-2017.1.9999.ebuild [new file with mode: 0644]

index d4b7f678212261577ebe7c1c5fb62c2431ec8264..21a2fd174dfee84e13cdf5f35f521fede69cdf8b 100644 (file)
@@ -1,13 +1,18 @@
+DIST neutron-10.0.0.tar.gz 3133746 SHA256 b90258d72230592eccf1f4f3f2dfe6e8a36f2bb0b5cba4c1da5d5ac879767d72 SHA512 02019952b7321524e531a8aaa34a90ab60d12b191de3714f4719dfea9f376e174908e748484b6365f023c1c712357fe75733bcc13a1d265ed283bf619eac151a WHIRLPOOL 0a0466e477890657d42528b15792ccd82b893407024dfe204e26693c5ca7034c6fcdbcfc10e18cd7ff4afdeecfe92722f7b76cc6e99b38cc0b5717ab9b29e129
 DIST neutron-8.3.0.tar.gz 2839603 SHA256 f1ac7563ed12eb3a6d5679966df606183a8f133db7abc51d1edffb5aadf6306c SHA512 6f53d437430e819402d0911a0319f421024c052f5ab9cf23ef456087ed5a9e8177410bdebce3a135e823268a578a4fdd54ac81d3d8b4dcc7f6487692fa470a93 WHIRLPOOL 85234f790c684763c133e09b99f7d2b2a206dec76764f31fc9a65f27bbf3fa78dad907546355db650d5bd3f90bd930a86b2e5828fea494496397e0b7a024798a
 DIST neutron-9.1.1.tar.gz 3020682 SHA256 37842c0c23665c71015d61f0f0ac00e8d9cab332c38e188cf02665c84eb0a5a3 SHA512 d4d1f6051c0e94a7dae05703c0cf119986df954276363794fefa78fd1a31742f4a173e3260a56f982a1cb4f8e1895312c8a0a73f39c08565231b2e109099eebb WHIRLPOOL 428cc5928bb4cea125fbf0377bbd08ac91f9526e4016059a041f8ad4447778a5e315c0420ae6136540c5d8b60b1f5c048bbe648201ec1d568c85ca0cf36f3dc7
 DIST neutron-9.2.0.tar.gz 3027332 SHA256 7314e5047b989fe85f2206a6460ad25509b03ca8e47c3fc79940d91550d87631 SHA512 c2ae881e5eacf977b6858cdbf008f42e2bba0b6fc5501cf9895a2b1a3ee4119393d894f2686e431936e50f365fffaae29421ab548f95ed6d3e797b6c77c6a539 WHIRLPOOL 3a1fde19109df8bfd7b32fd0927dc0097abe6a5c91cc70d69a8a6869439e7600f7116be8f6563e5e2d800b64cf349bbf08dbec931ceb3f67ea29af44e8f0b7e1
+DIST neutron-configs-10.0.0.tar.gz 25094 SHA256 7f210828b0c3fa9d859fca8c4735fd60aefad3cd5d0cf810b762af268df59269 SHA512 40ab9f2f4ea338c061c57d9aa5611ee3f3476ab8f5199ac50577f94fec032ccd27028bd072d9d9d0cc9f12327613e542b4d62a0403540730f9d6efbc4992a00d WHIRLPOOL dbdaff979a40e33cd171390657e39fb9b2a311c972e8d018e301af5361b0224ba62972241febfc4991a06bf9f16390e5c779de86823ed94eaebbee610c8c6657
 DIST neutron-configs-2016.1.9999.tar.gz 11523 SHA256 906229c66882eb05d782a749b53b9368df28ae69eb99179cbaed2640996dd227 SHA512 95ff31ce599977b8bbd7f8783ba41c1f760a30721e8a6ea84fc8f0ecfc4f429d624dad29728d5bc026f7d76a4da6e19c0f4718fd1b58b65c50ff0470a3cf8f2d WHIRLPOOL 38868696cb444cd7c4eaaf704bfb8e2efb6486aa67a99951afd43de1a8e8ca7224e8b8592a2c28e09a7a43c1a9cf0ca02e44e05a50cc370bb9dacee873022a6d
 DIST neutron-configs-2016.2.9999.tar.gz 13458 SHA256 111e940f7da24c18673794188f348285997a0e1f250446076700902bab101f71 SHA512 42f9a685f0869c491610c66f5bc5f952b959a0a8514687007814e0ca97e27fb491460bc64eaf8fc47e982c8519b1dc9b5e2b4a3c047535b52521b3325ba38d44 WHIRLPOOL bcceb81f46d69aa02876f2d2a76c642f9b48b472dc3e6217bef48649ecfa64d535c2361d224889f31f21b7fb40bb97930ab93443abe6d9cddfd56f19d84f5601
+DIST neutron-configs-2017.1.9999.tar.gz 25094 SHA256 7f210828b0c3fa9d859fca8c4735fd60aefad3cd5d0cf810b762af268df59269 SHA512 40ab9f2f4ea338c061c57d9aa5611ee3f3476ab8f5199ac50577f94fec032ccd27028bd072d9d9d0cc9f12327613e542b4d62a0403540730f9d6efbc4992a00d WHIRLPOOL dbdaff979a40e33cd171390657e39fb9b2a311c972e8d018e301af5361b0224ba62972241febfc4991a06bf9f16390e5c779de86823ed94eaebbee610c8c6657
 DIST neutron-configs-8.3.0.tar.gz 11523 SHA256 906229c66882eb05d782a749b53b9368df28ae69eb99179cbaed2640996dd227 SHA512 95ff31ce599977b8bbd7f8783ba41c1f760a30721e8a6ea84fc8f0ecfc4f429d624dad29728d5bc026f7d76a4da6e19c0f4718fd1b58b65c50ff0470a3cf8f2d WHIRLPOOL 38868696cb444cd7c4eaaf704bfb8e2efb6486aa67a99951afd43de1a8e8ca7224e8b8592a2c28e09a7a43c1a9cf0ca02e44e05a50cc370bb9dacee873022a6d
 DIST neutron-configs-9.1.1.tar.gz 13458 SHA256 111e940f7da24c18673794188f348285997a0e1f250446076700902bab101f71 SHA512 42f9a685f0869c491610c66f5bc5f952b959a0a8514687007814e0ca97e27fb491460bc64eaf8fc47e982c8519b1dc9b5e2b4a3c047535b52521b3325ba38d44 WHIRLPOOL bcceb81f46d69aa02876f2d2a76c642f9b48b472dc3e6217bef48649ecfa64d535c2361d224889f31f21b7fb40bb97930ab93443abe6d9cddfd56f19d84f5601
 DIST neutron-configs-9.2.0.tar.gz 13458 SHA256 111e940f7da24c18673794188f348285997a0e1f250446076700902bab101f71 SHA512 42f9a685f0869c491610c66f5bc5f952b959a0a8514687007814e0ca97e27fb491460bc64eaf8fc47e982c8519b1dc9b5e2b4a3c047535b52521b3325ba38d44 WHIRLPOOL bcceb81f46d69aa02876f2d2a76c642f9b48b472dc3e6217bef48649ecfa64d535c2361d224889f31f21b7fb40bb97930ab93443abe6d9cddfd56f19d84f5601
+DIST neutron-ml2-plugins-10.0.0.tar.gz 6811 SHA256 6ad759c8720563e502602fc32a72569884bdaad1443f4b8d23c8e9d240071f70 SHA512 51c01eab8f424b871f55b7dc45bbae6300d477e8bc7be4587c4945f75a4fc65f622ed69dbfe0c63db7fced2118987730204d259bce53e353a6b4d24df89dadcb WHIRLPOOL 5e4bf872895e8354fa9e6d7bb071f3d973f28c22297ea414f1bfc8f1bb3ae3102609ff61f19efda59f9d9d7a515fb8ae8216347a2935af64e4bdeeb6ec610863
 DIST neutron-ml2-plugins-2016.1.9999.tar.gz 2031 SHA256 af1f0436924a64d9a07f0770f06d0a2e48457b45389e1ab90e42c7157797557b SHA512 b0c194ad29d7e7a44c04b74a109523044cf268ebd8cb91965759a5cbba7cef47c252f7d0ab49bf888a74b1776891b99402dd54d45fd6099734fa03afd519350d WHIRLPOOL c279518f1868c54409a28dea03f32aa60a413af9dc3ce4387034aaab6387f1c96a937c370bcab3e6e96474a12f19f3794e7b3e0482cb067fb2b060ad09faabad
 DIST neutron-ml2-plugins-2016.2.9999.tar.gz 2073 SHA256 1e12e81673168860a2d7c5172deb00a7301d0a698014113dfcfba74759ba444d SHA512 bcde3a4d5e041c0080503cdf8f60c83e1c09f873010e78f4bc9066f57b17cf69394cf71cedbb8d3819a62d9cfdd545b102f16b53c0e3deb44b1d03136c14d711 WHIRLPOOL 099e19f4ec98fb54187e100af057711db3df3f86ae117a03f38afe37b6c5135666330aeb05867331cc015e8f14bee6e34942d1cb5aec63f92e01e7d6ae69f671
+DIST neutron-ml2-plugins-2017.1.9999.tar.gz 6811 SHA256 6ad759c8720563e502602fc32a72569884bdaad1443f4b8d23c8e9d240071f70 SHA512 51c01eab8f424b871f55b7dc45bbae6300d477e8bc7be4587c4945f75a4fc65f622ed69dbfe0c63db7fced2118987730204d259bce53e353a6b4d24df89dadcb WHIRLPOOL 5e4bf872895e8354fa9e6d7bb071f3d973f28c22297ea414f1bfc8f1bb3ae3102609ff61f19efda59f9d9d7a515fb8ae8216347a2935af64e4bdeeb6ec610863
 DIST neutron-ml2-plugins-8.3.0.tar.gz 2031 SHA256 af1f0436924a64d9a07f0770f06d0a2e48457b45389e1ab90e42c7157797557b SHA512 b0c194ad29d7e7a44c04b74a109523044cf268ebd8cb91965759a5cbba7cef47c252f7d0ab49bf888a74b1776891b99402dd54d45fd6099734fa03afd519350d WHIRLPOOL c279518f1868c54409a28dea03f32aa60a413af9dc3ce4387034aaab6387f1c96a937c370bcab3e6e96474a12f19f3794e7b3e0482cb067fb2b060ad09faabad
 DIST neutron-ml2-plugins-9.1.1.tar.gz 2073 SHA256 1e12e81673168860a2d7c5172deb00a7301d0a698014113dfcfba74759ba444d SHA512 bcde3a4d5e041c0080503cdf8f60c83e1c09f873010e78f4bc9066f57b17cf69394cf71cedbb8d3819a62d9cfdd545b102f16b53c0e3deb44b1d03136c14d711 WHIRLPOOL 099e19f4ec98fb54187e100af057711db3df3f86ae117a03f38afe37b6c5135666330aeb05867331cc015e8f14bee6e34942d1cb5aec63f92e01e7d6ae69f671
 DIST neutron-ml2-plugins-9.2.0.tar.gz 2073 SHA256 1e12e81673168860a2d7c5172deb00a7301d0a698014113dfcfba74759ba444d SHA512 bcde3a4d5e041c0080503cdf8f60c83e1c09f873010e78f4bc9066f57b17cf69394cf71cedbb8d3819a62d9cfdd545b102f16b53c0e3deb44b1d03136c14d711 WHIRLPOOL 099e19f4ec98fb54187e100af057711db3df3f86ae117a03f38afe37b6c5135666330aeb05867331cc015e8f14bee6e34942d1cb5aec63f92e01e7d6ae69f671
diff --git a/sys-cluster/neutron/neutron-10.0.0.ebuild b/sys-cluster/neutron/neutron-10.0.0.ebuild
new file mode 100644 (file)
index 0000000..3474d2a
--- /dev/null
@@ -0,0 +1,238 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+# still no 34 :( https://bugs.launchpad.net/neutron/+bug/1630439
+
+inherit distutils-r1 linux-info user
+
+DESCRIPTION="A virtual network service for Openstack"
+HOMEPAGE="https://launchpad.net/neutron"
+SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/ocata/configs.tar.gz -> neutron-configs-${PV}.tar.gz
+       https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/ocata/ml2_plugins.tar.gz -> neutron-ml2-plugins-${PV}.tar.gz
+       https://tarballs.openstack.org/${PN}/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64 ~x86"
+IUSE="compute-only dhcp ipv6 l3 metadata openvswitch linuxbridge server sqlite mysql postgres"
+REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) )
+                                               compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server
+                                               || ( openvswitch linuxbridge ) )"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="
+       dev-python/setuptools[${PYTHON_USEDEP}]
+       ${CDEPEND}
+       app-admin/sudo"
+
+RDEPEND="
+       ${CDEPEND}
+       dev-python/paste[${PYTHON_USEDEP}]
+       >=dev-python/pastedeploy-1.5.0-r1[${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/debtcollector-1.2.0[${PYTHON_USEDEP}]
+       >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
+       >=dev-python/pecan-1.0.0[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.2[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.3[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.4[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.2.0[${PYTHON_USEDEP}]
+       >=dev-python/httplib2-0.7.5[${PYTHON_USEDEP}]
+       >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+       !~dev-python/requests-2.12.2[${PYTHON_USEDEP}]
+       >=dev-python/jinja-2.8[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.0[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.1[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.2[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.3[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.4[${PYTHON_USEDEP}]
+       >=dev-python/keystonemiddleware-4.12.0[${PYTHON_USEDEP}]
+       >=dev-python/netaddr-0.7.13[${PYTHON_USEDEP}]
+       !~dev-python/netaddr-0.7.16[${PYTHON_USEDEP}]
+       >=dev-python/netifaces-0.10.4[${PYTHON_USEDEP}]
+       >=dev-python/neutron-lib-1.1.0[${PYTHON_USEDEP}]
+       >=dev-python/python-neutronclient-5.1.0[${PYTHON_USEDEP}]
+       >=dev-python/tenacity-3.2.1[${PYTHON_USEDEP}]
+       >=dev-python/ryu-4.9[${PYTHON_USEDEP}]
+       compute-only? (
+               >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+               <dev-python/sqlalchemy-1.1.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.7.6[${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
+               >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+               <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+       )
+       >=dev-python/webob-1.6.0[${PYTHON_USEDEP}]
+       >=dev-python/keystoneauth-2.18.0[${PYTHON_USEDEP}]
+       >=dev-python/alembic-0.8.10[${PYTHON_USEDEP}]
+       >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+       >=dev-python/stevedore-1.17.1[${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-config-3.18.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-db-4.15.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-log-3.11.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-messaging-5.14.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-middleware-3.0.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-policy-1.17.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-privsep-1.9.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-reports-0.6.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-rootwrap-5.0.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-service-1.10.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-utils-3.18.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-versionedobjects-1.17.0[${PYTHON_USEDEP}]
+       >=dev-python/osprofiler-1.4.0[${PYTHON_USEDEP}]
+       >=dev-python/ovs-2.6.1[${PYTHON_USEDEP}]
+       >=dev-python/pyroute2-0.4.12[${PYTHON_USEDEP}]
+       >=dev-python/weakrefmethod-1.0.2[$(python_gen_usedep 'python2_7')]
+       >=dev-python/python-novaclient-6.0.0[${PYTHON_USEDEP}]
+       !~dev-python/python-novaclient-7.0.0[${PYTHON_USEDEP}]
+       >=dev-python/python-designateclient-1.5.0[${PYTHON_USEDEP}]
+       virtual/python-singledispatch[${PYTHON_USEDEP}]
+       dev-python/pyudev[${PYTHON_USEDEP}]
+       sys-apps/iproute2
+       net-misc/iputils[arping]
+       net-misc/bridge-utils
+       net-firewall/ipset
+       net-firewall/iptables
+       net-firewall/ebtables
+       net-firewall/conntrack-tools
+       openvswitch? ( <=net-misc/openvswitch-2.6.9999 )
+       ipv6? (
+               net-misc/radvd
+               >=net-misc/dibbler-1.0.1
+       )
+       dhcp? ( net-dns/dnsmasq[dhcp-tools] )"
+
+#PATCHES=(
+#)
+
+pkg_pretend() {
+       linux-info_pkg_setup
+       CONFIG_CHECK_MODULES="VLAN_8021Q IP6_NF_FILTER IP6_NF_IPTABLES IP_NF_TARGET_REJECT \
+       IP_NF_MANGLE IP_NF_TARGET_MASQUERADE NF_NAT_IPV4 NF_CONNTRACK_IPV4 NF_DEFRAG_IPV4 \
+       NF_NAT_IPV4 NF_NAT NF_CONNTRACK IP_NF_FILTER IP_NF_IPTABLES NETFILTER_XTABLES"
+       if linux_config_exists; then
+               for module in ${CONFIG_CHECK_MODULES}; do
+                       linux_chkconfig_present ${module} || ewarn "${module} needs to be enabled in kernel"
+               done
+       fi
+}
+
+pkg_setup() {
+       enewgroup neutron
+       enewuser neutron -1 -1 /var/lib/neutron neutron
+}
+
+pkg_config() {
+       fperms 0700 /var/log/neutron
+       fowners neutron:neutron /var/log neutron
+}
+
+src_prepare() {
+       sed -i '/^hacking/d' test-requirements.txt || die
+       # it's /bin/ip not /sbin/ip
+       sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/* || die
+       distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+       if use server; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-server"
+               newconfd "${FILESDIR}/neutron-server.confd" "neutron-server"
+               dosym /etc/neutron/plugin.ini /etc/neutron/plugins/ml2/ml2_conf.ini
+       fi
+       if use dhcp; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-dhcp-agent"
+               newconfd "${FILESDIR}/neutron-dhcp-agent.confd" "neutron-dhcp-agent"
+       fi
+       if use l3; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-l3-agent"
+               newconfd "${FILESDIR}/neutron-l3-agent.confd" "neutron-l3-agent"
+       fi
+       if use metadata; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-metadata-agent"
+               newconfd "${FILESDIR}/neutron-metadata-agent.confd" "neutron-metadata-agent"
+       fi
+       if use openvswitch; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-openvswitch-agent"
+               newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-openvswitch-agent"
+               newinitd "${FILESDIR}/neutron.initd" "neutron-ovs-cleanup"
+               newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-ovs-cleanup"
+       fi
+       if use linuxbridge; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-linuxbridge-agent"
+               newconfd "${FILESDIR}/neutron-linuxbridge-agent.confd" "neutron-linuxbridge-agent"
+       fi
+       diropts -m 755 -o neutron -g neutron
+       dodir /var/log/neutron /var/lib/neutron
+       keepdir /etc/neutron
+       insinto /etc/neutron
+       insopts -m 0640 -o neutron -g neutron
+
+       doins etc/*
+       # stupid renames
+       insinto /etc/neutron
+       doins -r "etc/neutron/plugins"
+       insopts -m 0640 -o root -g root
+       doins "etc/rootwrap.conf"
+       doins -r "etc/neutron/rootwrap.d"
+
+       #add sudoers definitions for user neutron
+       insinto /etc/sudoers.d/
+       insopts -m 0440 -o root -g root
+       newins "${FILESDIR}/neutron.sudoersd" neutron
+
+       # add generated configs
+       cd "${D}/etc/neutron" || die
+       unpack "neutron-configs-${PV}.tar.gz"
+       cd "${D}/etc/neutron/plugins/ml2" || die
+       unpack "neutron-ml2-plugins-${PV}.tar.gz"
+
+       # correcting perms
+       fowners neutron:neutron -R "/etc/neutron"
+       fperms o-rwx -R "/etc/neutron/"
+
+       #remove superfluous stuff
+       rm -R "${D}/usr/etc/"
+}
+
+python_install() {
+       distutils-r1_python_install
+       # copy migration conf file (not coppied on install via setup.py script)
+       insopts -m 0644
+       insinto "/$(python_get_sitedir)/neutron/db/migration/alembic_migrations/"
+       doins -r "neutron/db/migration/alembic_migrations/versions"
+}
+
+pkg_postinst() {
+       elog
+       elog "neutron-server's conf.d file may need updating to include additional ini files"
+       elog "We currently assume the ml2 plugin will be used but do not make assumptions"
+       elog "on if you will use openvswitch or linuxbridge (or something else)"
+       elog
+       elog "Other conf.d files may need updating too, but should be good for the default use case"
+       elog
+}
diff --git a/sys-cluster/neutron/neutron-2017.1.9999.ebuild b/sys-cluster/neutron/neutron-2017.1.9999.ebuild
new file mode 100644 (file)
index 0000000..24498c6
--- /dev/null
@@ -0,0 +1,239 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=( python2_7 )
+# still no 34 :( https://bugs.launchpad.net/neutron/+bug/1630439
+
+inherit distutils-r1 git-r3 linux-info user
+
+DESCRIPTION="A virtual network service for Openstack"
+HOMEPAGE="https://launchpad.net/neutron"
+SRC_URI="https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/ocata/configs.tar.gz -> neutron-configs-${PV}.tar.gz
+       https://dev.gentoo.org/~prometheanfire/dist/openstack/neutron/ocata/ml2_plugins.tar.gz -> neutron-ml2-plugins-${PV}.tar.gz"
+EGIT_REPO_URI="https://github.com/openstack/neutron.git"
+EGIT_BRANCH="stable/ocata"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS=""
+IUSE="compute-only dhcp ipv6 l3 metadata openvswitch linuxbridge server sqlite mysql postgres"
+REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) )
+                                               compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server
+                                               || ( openvswitch linuxbridge ) )"
+
+CDEPEND=">=dev-python/pbr-1.8[${PYTHON_USEDEP}]"
+DEPEND="
+       dev-python/setuptools[${PYTHON_USEDEP}]
+       ${CDEPEND}
+       app-admin/sudo"
+
+RDEPEND="
+       ${CDEPEND}
+       dev-python/paste[${PYTHON_USEDEP}]
+       >=dev-python/pastedeploy-1.5.0-r1[${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/debtcollector-1.2.0[${PYTHON_USEDEP}]
+       >=dev-python/eventlet-0.18.4[${PYTHON_USEDEP}]
+       >=dev-python/pecan-1.0.0[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.2[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.3[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.0.4[${PYTHON_USEDEP}]
+       !~dev-python/pecan-1.2.0[${PYTHON_USEDEP}]
+       >=dev-python/httplib2-0.7.5[${PYTHON_USEDEP}]
+       >=dev-python/requests-2.10.0[${PYTHON_USEDEP}]
+       !~dev-python/requests-2.12.2[${PYTHON_USEDEP}]
+       >=dev-python/jinja-2.8[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.0[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.1[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.2[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.3[${PYTHON_USEDEP}]
+       !~dev-python/jinja-2.9.4[${PYTHON_USEDEP}]
+       >=dev-python/keystonemiddleware-4.12.0[${PYTHON_USEDEP}]
+       >=dev-python/netaddr-0.7.13[${PYTHON_USEDEP}]
+       !~dev-python/netaddr-0.7.16[${PYTHON_USEDEP}]
+       >=dev-python/netifaces-0.10.4[${PYTHON_USEDEP}]
+       >=dev-python/neutron-lib-1.1.0[${PYTHON_USEDEP}]
+       >=dev-python/python-neutronclient-5.1.0[${PYTHON_USEDEP}]
+       >=dev-python/tenacity-3.2.1[${PYTHON_USEDEP}]
+       >=dev-python/ryu-4.9[${PYTHON_USEDEP}]
+       compute-only? (
+               >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+               <dev-python/sqlalchemy-1.1.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.7.6[${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
+               >=dev-python/sqlalchemy-1.0.10[${PYTHON_USEDEP}]
+               <dev-python/sqlalchemy-1.1.0[${PYTHON_USEDEP}]
+       )
+       >=dev-python/webob-1.6.0[${PYTHON_USEDEP}]
+       >=dev-python/keystoneauth-2.18.0[${PYTHON_USEDEP}]
+       >=dev-python/alembic-0.8.10[${PYTHON_USEDEP}]
+       >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+       >=dev-python/stevedore-1.17.1[${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-config-3.18.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-context-2.9.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-db-4.15.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-i18n-2.1.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-log-3.11.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-messaging-5.14.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-middleware-3.0.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-policy-1.17.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-privsep-1.9.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-reports-0.6.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-rootwrap-5.0.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-serialization-1.10.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-service-1.10.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-utils-3.18.0[${PYTHON_USEDEP}]
+       >=dev-python/oslo-versionedobjects-1.17.0[${PYTHON_USEDEP}]
+       >=dev-python/osprofiler-1.4.0[${PYTHON_USEDEP}]
+       >=dev-python/ovs-2.6.1[${PYTHON_USEDEP}]
+       >=dev-python/pyroute2-0.4.12[${PYTHON_USEDEP}]
+       >=dev-python/weakrefmethod-1.0.2[$(python_gen_usedep 'python2_7')]
+       >=dev-python/python-novaclient-6.0.0[${PYTHON_USEDEP}]
+       !~dev-python/python-novaclient-7.0.0[${PYTHON_USEDEP}]
+       >=dev-python/python-designateclient-1.5.0[${PYTHON_USEDEP}]
+       virtual/python-singledispatch[${PYTHON_USEDEP}]
+       dev-python/pyudev[${PYTHON_USEDEP}]
+       sys-apps/iproute2
+       net-misc/iputils[arping]
+       net-misc/bridge-utils
+       net-firewall/ipset
+       net-firewall/iptables
+       net-firewall/ebtables
+       net-firewall/conntrack-tools
+       openvswitch? ( <=net-misc/openvswitch-2.6.9999 )
+       ipv6? (
+               net-misc/radvd
+               >=net-misc/dibbler-1.0.1
+       )
+       dhcp? ( net-dns/dnsmasq[dhcp-tools] )"
+
+#PATCHES=(
+#)
+
+pkg_pretend() {
+       linux-info_pkg_setup
+       CONFIG_CHECK_MODULES="VLAN_8021Q IP6_NF_FILTER IP6_NF_IPTABLES IP_NF_TARGET_REJECT \
+       IP_NF_MANGLE IP_NF_TARGET_MASQUERADE NF_NAT_IPV4 NF_CONNTRACK_IPV4 NF_DEFRAG_IPV4 \
+       NF_NAT_IPV4 NF_NAT NF_CONNTRACK IP_NF_FILTER IP_NF_IPTABLES NETFILTER_XTABLES"
+       if linux_config_exists; then
+               for module in ${CONFIG_CHECK_MODULES}; do
+                       linux_chkconfig_present ${module} || ewarn "${module} needs to be enabled in kernel"
+               done
+       fi
+}
+
+pkg_setup() {
+       enewgroup neutron
+       enewuser neutron -1 -1 /var/lib/neutron neutron
+}
+
+pkg_config() {
+       fperms 0700 /var/log/neutron
+       fowners neutron:neutron /var/log neutron
+}
+
+src_prepare() {
+       sed -i '/^hacking/d' test-requirements.txt || die
+       # it's /bin/ip not /sbin/ip
+       sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/* || die
+       distutils-r1_python_prepare_all
+}
+
+python_install_all() {
+       distutils-r1_python_install_all
+       if use server; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-server"
+               newconfd "${FILESDIR}/neutron-server.confd" "neutron-server"
+               dosym /etc/neutron/plugin.ini /etc/neutron/plugins/ml2/ml2_conf.ini
+       fi
+       if use dhcp; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-dhcp-agent"
+               newconfd "${FILESDIR}/neutron-dhcp-agent.confd" "neutron-dhcp-agent"
+       fi
+       if use l3; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-l3-agent"
+               newconfd "${FILESDIR}/neutron-l3-agent.confd" "neutron-l3-agent"
+       fi
+       if use metadata; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-metadata-agent"
+               newconfd "${FILESDIR}/neutron-metadata-agent.confd" "neutron-metadata-agent"
+       fi
+       if use openvswitch; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-openvswitch-agent"
+               newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-openvswitch-agent"
+               newinitd "${FILESDIR}/neutron.initd" "neutron-ovs-cleanup"
+               newconfd "${FILESDIR}/neutron-openvswitch-agent.confd" "neutron-ovs-cleanup"
+       fi
+       if use linuxbridge; then
+               newinitd "${FILESDIR}/neutron.initd" "neutron-linuxbridge-agent"
+               newconfd "${FILESDIR}/neutron-linuxbridge-agent.confd" "neutron-linuxbridge-agent"
+       fi
+       diropts -m 755 -o neutron -g neutron
+       dodir /var/log/neutron /var/lib/neutron
+       keepdir /etc/neutron
+       insinto /etc/neutron
+       insopts -m 0640 -o neutron -g neutron
+
+       doins etc/*
+       # stupid renames
+       insinto /etc/neutron
+       doins -r "etc/neutron/plugins"
+       insopts -m 0640 -o root -g root
+       doins "etc/rootwrap.conf"
+       doins -r "etc/neutron/rootwrap.d"
+
+       #add sudoers definitions for user neutron
+       insinto /etc/sudoers.d/
+       insopts -m 0440 -o root -g root
+       newins "${FILESDIR}/neutron.sudoersd" neutron
+
+       # add generated configs
+       cd "${D}/etc/neutron" || die
+       unpack "neutron-configs-${PV}.tar.gz"
+       cd "${D}/etc/neutron/plugins/ml2" || die
+       unpack "neutron-ml2-plugins-${PV}.tar.gz"
+
+       # correcting perms
+       fowners neutron:neutron -R "/etc/neutron"
+       fperms o-rwx -R "/etc/neutron/"
+
+       #remove superfluous stuff
+       rm -R "${D}/usr/etc/"
+}
+
+python_install() {
+       distutils-r1_python_install
+       # copy migration conf file (not coppied on install via setup.py script)
+       insopts -m 0644
+       insinto "/$(python_get_sitedir)/neutron/db/migration/alembic_migrations/"
+       doins -r "neutron/db/migration/alembic_migrations/versions"
+}
+
+pkg_postinst() {
+       elog
+       elog "neutron-server's conf.d file may need updating to include additional ini files"
+       elog "We currently assume the ml2 plugin will be used but do not make assumptions"
+       elog "on if you will use openvswitch or linuxbridge (or something else)"
+       elog
+       elog "Other conf.d files may need updating too, but should be good for the default use case"
+       elog
+}