summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'sys-cluster/neutron')
-rw-r--r--sys-cluster/neutron/Manifest2
-rw-r--r--sys-cluster/neutron/files/cve-2015-3221_2015.1.0.patch127
-rw-r--r--sys-cluster/neutron/files/neutron-dhcp-agent.confd2
-rw-r--r--sys-cluster/neutron/files/neutron-l3-agent.confd2
-rw-r--r--sys-cluster/neutron/files/neutron-linuxbridge-agent.confd1
-rw-r--r--sys-cluster/neutron/files/neutron-metadata-agent.confd2
-rw-r--r--sys-cluster/neutron/files/neutron-openvswitch-agent.confd1
-rw-r--r--sys-cluster/neutron/files/neutron-ovs-cleanup.confd1
-rw-r--r--sys-cluster/neutron/files/neutron-server.confd1
-rw-r--r--sys-cluster/neutron/files/neutron.initd21
-rw-r--r--sys-cluster/neutron/files/neutron.sudoersd4
-rw-r--r--sys-cluster/neutron/metadata.xml29
-rw-r--r--sys-cluster/neutron/neutron-2015.1.0-r2.ebuild249
-rw-r--r--sys-cluster/neutron/neutron-2015.1.1.ebuild252
-rw-r--r--sys-cluster/neutron/neutron-2015.1.9999.ebuild253
15 files changed, 947 insertions, 0 deletions
diff --git a/sys-cluster/neutron/Manifest b/sys-cluster/neutron/Manifest
new file mode 100644
index 000000000000..cf1242eef4bc
--- /dev/null
+++ b/sys-cluster/neutron/Manifest
@@ -0,0 +1,2 @@
+DIST neutron-2015.1.0.tar.gz 2038600 SHA256 02672a5316e637d122bb13cd2e18ee4df0df279ddd70262fa7d4102943ec33b6 SHA512 205181228a34469b2f079135fd871adfc5156d9c046f59d1347798015403530131b6f790346be31349333acd6d3f00dd818876b1c7a73a675214387482d0715d WHIRLPOOL 558a16b3c84425ac9e14960895cc7d67f26f618f47e6b24e53592555e282d49fbd52feed3da616cb576942fabef36b54fb979273071605ecbd32ba980c28f5a3
+DIST neutron-2015.1.1.tar.gz 2049496 SHA256 91569feaacc983635f64bc27f3903162526e984778aa6683129e578715f8c5b9 SHA512 aa9712a0d44efc2d52f47a2dfac449fb57b82bef675ea5d64b950859780240fbd441a3f8cd9684afff3c51502f8200c0db3b17471fabbd30724ce92662183fe2 WHIRLPOOL aeb6757f855115eb08d2707db40f54cdd488e67e69eb829ea2b31e83fe029ca3cde24e4520b8d8649da285354b161f47a237181a199cd786552d26f19c66181e
diff --git a/sys-cluster/neutron/files/cve-2015-3221_2015.1.0.patch b/sys-cluster/neutron/files/cve-2015-3221_2015.1.0.patch
new file mode 100644
index 000000000000..c6c2230c9bd3
--- /dev/null
+++ b/sys-cluster/neutron/files/cve-2015-3221_2015.1.0.patch
@@ -0,0 +1,127 @@
+From e0c8cbc5dd610b4c580935ea56436495a6d4eb26 Mon Sep 17 00:00:00 2001
+From: Aaron Rosen <aaronorosen@gmail.com>
+Date: Wed, 3 Jun 2015 16:19:39 -0700
+Subject: [PATCH] Provide work around for 0.0.0.0/0 ::/0 for ipset
+
+Previously, the ipset_manager would pass in 0.0.0.0/0 or ::/0 if
+these addresses were inputted as allowed address pairs. This causes
+ipset to raise an error as it does not work with zero prefix sizes.
+To solve this problem we use two ipset rules to represent this:
+
+Ipv4: 0.0.0.0/1 and 128.0.0.1/1
+IPv6: ::/1' and '8000::/1
+
+All of this logic is handled via _sanitize_addresses() in the ipset_manager
+which is called to convert the input.
+
+Closes-bug: 1461054
+
+Conflicts:
+ neutron/agent/linux/ipset_manager.py
+ neutron/tests/unit/agent/linux/test_ipset_manager.py
+
+(cherry picked from commit 80a0fc3ba063e036b76e05e89b0cc54fc2d47c81)
+---
+ neutron/agent/linux/ipset_manager.py | 23 ++++++++++++++++++++++
+ .../tests/unit/agent/linux/test_ipset_manager.py | 19 +++++++++++++++---
+ 2 files changed, 39 insertions(+), 3 deletions(-)
+
+diff --git a/neutron/agent/linux/ipset_manager.py b/neutron/agent/linux/ipset_manager.py
+index 0f76418..af59f1f 100644
+--- a/neutron/agent/linux/ipset_manager.py
++++ b/neutron/agent/linux/ipset_manager.py
+@@ -11,6 +11,8 @@
+ # See the License for the specific language governing permissions and
+ # limitations under the License.
+
++import netaddr
++
+ from neutron.agent.linux import utils as linux_utils
+ from neutron.common import utils
+
+@@ -31,6 +33,26 @@ class IpsetManager(object):
+ self.namespace = namespace
+ self.ipset_sets = {}
+
++ def _sanitize_addresses(self, addresses):
++ """This method converts any address to ipset format.
++
++ If an address has a mask of /0 we need to cover to it to a mask of
++ /1 as ipset does not support /0 length addresses. Instead we use two
++ /1's to represent the /0.
++ """
++ sanitized_addresses = []
++ for ip in addresses:
++ if (netaddr.IPNetwork(ip).prefixlen == 0):
++ if(netaddr.IPNetwork(ip).version == 4):
++ sanitized_addresses.append('0.0.0.0/1')
++ sanitized_addresses.append('128.0.0.0/1')
++ elif (netaddr.IPNetwork(ip).version == 6):
++ sanitized_addresses.append('::/1')
++ sanitized_addresses.append('8000::/1')
++ else:
++ sanitized_addresses.append(ip)
++ return sanitized_addresses
++
+ @staticmethod
+ def get_name(id, ethertype):
+ """Returns the given ipset name for an id+ethertype pair.
+@@ -51,6 +73,7 @@ class IpsetManager(object):
+ add / remove new members, or swapped atomically if
+ that's faster.
+ """
++ member_ips = self._sanitize_addresses(member_ips)
+ set_name = self.get_name(id, ethertype)
+ if not self.set_exists(id, ethertype):
+ # The initial creation is handled with create/refresh to
+diff --git a/neutron/tests/unit/agent/linux/test_ipset_manager.py b/neutron/tests/unit/agent/linux/test_ipset_manager.py
+index 4484008..a1c6dc5 100644
+--- a/neutron/tests/unit/agent/linux/test_ipset_manager.py
++++ b/neutron/tests/unit/agent/linux/test_ipset_manager.py
+@@ -38,7 +38,7 @@ class BaseIpsetManagerTest(base.BaseTestCase):
+ def expect_set(self, addresses):
+ temp_input = ['create NETIPv4fake_sgid-new hash:net family inet']
+ temp_input.extend('add NETIPv4fake_sgid-new %s' % ip
+- for ip in addresses)
++ for ip in self.ipset._sanitize_addresses(addresses))
+ input = '\n'.join(temp_input)
+ self.expected_calls.extend([
+ mock.call(['ipset', 'restore', '-exist'],
+@@ -55,13 +55,16 @@ class BaseIpsetManagerTest(base.BaseTestCase):
+ self.expected_calls.extend(
+ mock.call(['ipset', 'add', '-exist', TEST_SET_NAME, ip],
+ process_input=None,
+- run_as_root=True) for ip in addresses)
++ run_as_root=True)
++ for ip in self.ipset._sanitize_addresses(addresses))
+
+ def expect_del(self, addresses):
++
+ self.expected_calls.extend(
+ mock.call(['ipset', 'del', TEST_SET_NAME, ip],
+ process_input=None,
+- run_as_root=True) for ip in addresses)
++ run_as_root=True)
++ for ip in self.ipset._sanitize_addresses(addresses))
+
+ def expect_create(self):
+ self.expected_calls.append(
+@@ -113,6 +116,16 @@ class IpsetManagerTestCase(BaseIpsetManagerTest):
+ self.ipset.set_members(TEST_SET_ID, ETHERTYPE, FAKE_IPS)
+ self.verify_mock_calls()
+
++ def test_set_members_adding_all_zero_ipv4(self):
++ self.expect_set(['0.0.0.0/0'])
++ self.ipset.set_members(TEST_SET_ID, ETHERTYPE, ['0.0.0.0/0'])
++ self.verify_mock_calls()
++
++ def test_set_members_adding_all_zero_ipv6(self):
++ self.expect_set(['::/0'])
++ self.ipset.set_members(TEST_SET_ID, ETHERTYPE, ['::/0'])
++ self.verify_mock_calls()
++
+ def test_destroy(self):
+ self.add_first_ip()
+ self.expect_destroy()
+--
+1.9.1
diff --git a/sys-cluster/neutron/files/neutron-dhcp-agent.confd b/sys-cluster/neutron/files/neutron-dhcp-agent.confd
new file mode 100644
index 000000000000..75ddba5ebb7a
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-dhcp-agent.confd
@@ -0,0 +1,2 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/dhcp_agent.ini")
+
diff --git a/sys-cluster/neutron/files/neutron-l3-agent.confd b/sys-cluster/neutron/files/neutron-l3-agent.confd
new file mode 100644
index 000000000000..990278682fbd
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-l3-agent.confd
@@ -0,0 +1,2 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/l3_agent.ini")
+
diff --git a/sys-cluster/neutron/files/neutron-linuxbridge-agent.confd b/sys-cluster/neutron/files/neutron-linuxbridge-agent.confd
new file mode 100644
index 000000000000..fdd4ed4865b4
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-linuxbridge-agent.confd
@@ -0,0 +1 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/plugins/ml2/ml2_conf.ini" "/etc/neutron/plugins/linuxbridge/linuxbridge_conf.ini")
diff --git a/sys-cluster/neutron/files/neutron-metadata-agent.confd b/sys-cluster/neutron/files/neutron-metadata-agent.confd
new file mode 100644
index 000000000000..6a78b7abe3c9
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-metadata-agent.confd
@@ -0,0 +1,2 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/metadata_agent.ini")
+
diff --git a/sys-cluster/neutron/files/neutron-openvswitch-agent.confd b/sys-cluster/neutron/files/neutron-openvswitch-agent.confd
new file mode 100644
index 000000000000..30b10b69bbfb
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-openvswitch-agent.confd
@@ -0,0 +1 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/plugins/ml2/ml2_conf.ini" "/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini")
diff --git a/sys-cluster/neutron/files/neutron-ovs-cleanup.confd b/sys-cluster/neutron/files/neutron-ovs-cleanup.confd
new file mode 100644
index 000000000000..eba422c2c716
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-ovs-cleanup.confd
@@ -0,0 +1 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini")
diff --git a/sys-cluster/neutron/files/neutron-server.confd b/sys-cluster/neutron/files/neutron-server.confd
new file mode 100644
index 000000000000..9b6b2e63f8bc
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron-server.confd
@@ -0,0 +1 @@
+NEUTRON_CONFS=("/etc/neutron/neutron.conf" "/etc/neutron/plugin.ini")
diff --git a/sys-cluster/neutron/files/neutron.initd b/sys-cluster/neutron/files/neutron.initd
new file mode 100644
index 000000000000..ba666a2b506b
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron.initd
@@ -0,0 +1,21 @@
+#!/sbin/runscript
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+description="Starts ${SVCNAME} service for OpenStack"
+
+command=/usr/bin/"${SVCNAME}"
+command_background=yes
+pidfile=/var/run/neutron/"${SVCNAME}".pid
+required_files=(${NEUTRON_CONFS[@]:-/etc/neutron/neutron.conf})
+command_args="${required_files[@]/#/--config-file } --log-file /var/log/neutron/${SVCNAME#*-}.log"
+start_stop_daemon_args="--quiet --user ${NEUTRON_USER:-neutron}"
+
+depend() {
+ need net
+}
+
+start_pre() {
+ checkpath --directory --owner "${NEUTRON_USER:-neutron}":"${NEUTRON_GROUP:-neutron}" --mode 0755 "${NEUTRON_RUN:-/var/run/neutron}"
+}
diff --git a/sys-cluster/neutron/files/neutron.sudoersd b/sys-cluster/neutron/files/neutron.sudoersd
new file mode 100644
index 000000000000..0b7002374538
--- /dev/null
+++ b/sys-cluster/neutron/files/neutron.sudoersd
@@ -0,0 +1,4 @@
+Defaults:neutron !requiretty
+
+neutron ALL = (root) NOPASSWD: /usr/bin/neutron-rootwrap /etc/neutron/rootwrap.conf *
+
diff --git a/sys-cluster/neutron/metadata.xml b/sys-cluster/neutron/metadata.xml
new file mode 100644
index 000000000000..8854aa52bc87
--- /dev/null
+++ b/sys-cluster/neutron/metadata.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>openstack</herd>
+ <maintainer>
+ <email>prometheanfire@gentoo.org</email>
+ <name>Matthew Thode</name>
+ </maintainer>
+ <longdescription lang="en">
+ Just like OpenStack Nova provides an API to dynamically request and
+ configure virtual servers, Neutron provides an API to dynamically request
+ and configure virtual networks. These networks connect "interfaces" from
+ other OpenStack services (e.g., vNICs from Nova VMs). The Neutron API
+ supports extensions to provide advanced network capabilities
+ (e.g., QoS, ACLs, network monitoring, etc).
+ </longdescription>
+ <use>
+ <flag name="compute-only">Only install things needed on compute hosts</flag>
+ <flag name="dhcp">Installs the initscripts for the neutron dhcp service</flag>
+ <flag name="l3">Installs the initscripts for the neutron l3 agent service</flag>
+ <flag name="metadata">Installs the initscripts for the neutron metadata agent service</flag>
+ <flag name="openvswitch">Installs the initscripts for the neutron openvswitch agent service</flag>
+ <flag name="linuxbridge">Installs the initscripts for the neutron linuxbridge agent service</flag>
+ <flag name="server">Installs the initscripts for the neutron server service</flag>
+ </use>
+ <upstream>
+ <remote-id type="launchpad">neutron</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/sys-cluster/neutron/neutron-2015.1.0-r2.ebuild b/sys-cluster/neutron/neutron-2015.1.0-r2.ebuild
new file mode 100644
index 000000000000..208f48e79db6
--- /dev/null
+++ b/sys-cluster/neutron/neutron-2015.1.0-r2.ebuild
@@ -0,0 +1,249 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 linux-info user
+
+DESCRIPTION="A virtual network service for Openstack"
+HOMEPAGE="https://launchpad.net/neutron"
+SRC_URI="http://launchpad.net/${PN}/kilo/${PV}/+download/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="amd64 x86"
+IUSE="compute-only dhcp doc l3 metadata openvswitch linuxbridge server test sqlite mysql postgres"
+REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) )
+ compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server
+ || ( openvswitch linuxbridge ) )"
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-0.8[${PYTHON_USEDEP}]
+ <dev-python/pbr-1.0[${PYTHON_USEDEP}]
+ app-admin/sudo
+ test? (
+ ${RDEPEND}
+ >=dev-python/hacking-0.10.0[${PYTHON_USEDEP}]
+ <dev-python/hacking-0.11[${PYTHON_USEDEP}]
+ >=dev-python/cliff-1.10.0[${PYTHON_USEDEP}]
+ <dev-python/cliff-1.11.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-0.3.14[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-0.6.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-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testtools-0.9.36[${PYTHON_USEDEP}]
+ !~dev-python/testtools-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/webtest-2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.5.1[${PYTHON_USEDEP}]
+ <dev-python/oslotest-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-lib-0.4.0[${PYTHON_USEDEP}]
+ )"
+
+RDEPEND="
+ 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/eventlet-0.16.1[${PYTHON_USEDEP}]
+ !~dev-python/eventlet-0.17.0[${PYTHON_USEDEP}]
+ >=dev-python/greenlet-0.3.2[${PYTHON_USEDEP}]
+ >=dev-python/httplib2-0.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.2.0[${PYTHON_USEDEP}]
+ !~dev-python/requests-2.4.0[${PYTHON_USEDEP}]
+ dev-python/jsonrpclib[${PYTHON_USEDEP}]
+ >=dev-python/jinja-2.6[${PYTHON_USEDEP}]
+ >=dev-python/keystonemiddleware-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/keystonemiddleware-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ >=dev-python/python-neutronclient-2.3.11[${PYTHON_USEDEP}]
+ <dev-python/python-neutronclient-3.5.0[${PYTHON_USEDEP}]
+ >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
+ !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
+ compute-only? (
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ sqlite? (
+ >=dev-python/sqlalchemy-0.9.7[sqlite,${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[sqlite,${PYTHON_USEDEP}]
+ )
+ mysql? (
+ dev-python/mysql-python
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ postgres? (
+ dev-python/psycopg:2
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-1.1.0[${PYTHON_USEDEP}]
+ <dev-python/python-keystoneclient-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/alembic-0.7.2[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.3.0[${PYTHON_USEDEP}]
+ <dev-python/stevedore-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-concurrency-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-1.9.3[${PYTHON_USEDEP}]
+ <dev-python/oslo-config-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-0.2.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-context-0.3.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-db-1.7.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-db-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-i18n-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-log-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-messaging-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-messaging-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-middleware-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-middleware-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-rootwrap-1.6.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-rootwrap-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-serialization-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-utils-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/python-novaclient-2.22.0[${PYTHON_USEDEP}]
+ <dev-python/python-novaclient-2.24.0[${PYTHON_USEDEP}]
+ dev-python/pyudev[${PYTHON_USEDEP}]
+ sys-apps/iproute2
+ net-misc/bridge-utils
+ net-firewall/ipset
+ net-firewall/iptables
+ net-firewall/ebtables
+ openvswitch? ( net-misc/openvswitch )
+ dhcp? ( net-dns/dnsmasq[dhcp-tools] )"
+
+PATCHES=(
+ "${FILESDIR}/cve-2015-3221_2015.1.0.patch"
+)
+
+pkg_setup() {
+ 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
+ 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() {
+ #it's /bin/ip not /sbin/ip
+ sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/*
+ distutils-r1_src_prepare
+}
+
+python_compile_all() {
+ use doc && make -C doc html
+}
+
+python_test() {
+ # https://bugs.launchpad.net/neutron/+bug/1234857
+ # https://bugs.launchpad.net/swift/+bug/1249727
+ # https://bugs.launchpad.net/neutron/+bug/1251657
+ # turn multiprocessing off, testr will use it --parallel
+ local DISTUTILS_NO_PARALLEL_BUILD=1
+ # Move tests out that attempt net connection, have failures
+ mv $(find . -name test_ovs_tunnel.py) . || die
+ sed -e 's:test_app_using_ipv6_and_ssl:_&:' \
+ -e 's:test_start_random_port_with_ipv6:_&:' \
+ -i neutron/tests/unit/test_wsgi.py || die
+ testr init
+ testr run --parallel || die "failed testsuite under python2.7"
+}
+
+python_install() {
+ distutils-r1_python_install
+ 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
+ rm "${D}etc/neutron/quantum"
+ 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"
+
+ insopts -m 0644
+ insinto "/usr/lib64/python2.7/site-packages/neutron/db/migration/alembic_migrations/"
+ doins -r "neutron/db/migration/alembic_migrations/versions"
+
+ #add sudoers definitions for user neutron
+ insinto /etc/sudoers.d/
+ insopts -m 0440 -o root -g root
+ newins "${FILESDIR}/neutron.sudoersd" neutron
+
+ #remove superfluous stuff
+ rm -R "${D}/usr/etc/"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
+
+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-2015.1.1.ebuild b/sys-cluster/neutron/neutron-2015.1.1.ebuild
new file mode 100644
index 000000000000..64baa51968f5
--- /dev/null
+++ b/sys-cluster/neutron/neutron-2015.1.1.ebuild
@@ -0,0 +1,252 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 linux-info user
+
+DESCRIPTION="A virtual network service for Openstack"
+HOMEPAGE="https://launchpad.net/neutron"
+SRC_URI="http://launchpad.net/${PN}/kilo/${PV}/+download/${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="compute-only dhcp doc l3 metadata openvswitch linuxbridge server test sqlite mysql postgres"
+REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) )
+ compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server
+ || ( openvswitch linuxbridge ) )"
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-0.8[${PYTHON_USEDEP}]
+ <dev-python/pbr-1.0[${PYTHON_USEDEP}]
+ app-admin/sudo
+ test? (
+ ${RDEPEND}
+ >=dev-python/hacking-0.10.0[${PYTHON_USEDEP}]
+ <dev-python/hacking-0.11[${PYTHON_USEDEP}]
+ >=dev-python/cliff-1.10.0[${PYTHON_USEDEP}]
+ <dev-python/cliff-1.11.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-0.3.14[${PYTHON_USEDEP}]
+ <dev-python/fixtures-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0[${PYTHON_USEDEP}]
+ <dev-python/mock-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-0.6.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-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testtools-0.9.36[${PYTHON_USEDEP}]
+ !~dev-python/testtools-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/webtest-2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.5.1[${PYTHON_USEDEP}]
+ <dev-python/oslotest-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-lib-0.4.0[${PYTHON_USEDEP}]
+ <dev-python/tempest-lib-0.5.0[${PYTHON_USEDEP}]
+ )"
+
+RDEPEND="
+ 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/eventlet-0.16.1[${PYTHON_USEDEP}]
+ !~dev-python/eventlet-0.17.0[${PYTHON_USEDEP}]
+ >=dev-python/greenlet-0.3.2[${PYTHON_USEDEP}]
+ >=dev-python/httplib2-0.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.2.0[${PYTHON_USEDEP}]
+ !~dev-python/requests-2.4.0[${PYTHON_USEDEP}]
+ dev-python/jsonrpclib[${PYTHON_USEDEP}]
+ >=dev-python/jinja-2.6[${PYTHON_USEDEP}]
+ >=dev-python/keystonemiddleware-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/keystonemiddleware-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ >=dev-python/python-neutronclient-2.3.11[${PYTHON_USEDEP}]
+ <dev-python/python-neutronclient-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
+ !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
+ compute-only? (
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ sqlite? (
+ >=dev-python/sqlalchemy-0.9.7[sqlite,${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[sqlite,${PYTHON_USEDEP}]
+ )
+ mysql? (
+ dev-python/mysql-python
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ postgres? (
+ dev-python/psycopg:2
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/python-keystoneclient-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/alembic-0.7.2[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.3.0[${PYTHON_USEDEP}]
+ <dev-python/stevedore-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-concurrency-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-1.9.3[${PYTHON_USEDEP}]
+ <dev-python/oslo-config-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-0.2.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-context-0.3.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-db-1.7.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-db-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-i18n-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-log-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-messaging-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-messaging-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-middleware-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-middleware-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-rootwrap-1.6.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-rootwrap-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-serialization-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-utils-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/python-novaclient-2.22.0[${PYTHON_USEDEP}]
+ <dev-python/python-novaclient-2.24.0[${PYTHON_USEDEP}]
+ dev-python/pyudev[${PYTHON_USEDEP}]
+ sys-apps/iproute2
+ net-misc/bridge-utils
+ net-firewall/ipset
+ net-firewall/iptables
+ net-firewall/ebtables
+ openvswitch? ( net-misc/openvswitch )
+ dhcp? ( net-dns/dnsmasq[dhcp-tools] )"
+
+PATCHES=(
+
+)
+
+pkg_setup() {
+ 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
+ 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() {
+ #it's /bin/ip not /sbin/ip
+ sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/*
+ distutils-r1_src_prepare
+}
+
+python_compile_all() {
+ use doc && make -C doc html
+}
+
+python_test() {
+ # https://bugs.launchpad.net/neutron/+bug/1234857
+ # https://bugs.launchpad.net/swift/+bug/1249727
+ # https://bugs.launchpad.net/neutron/+bug/1251657
+ # turn multiprocessing off, testr will use it --parallel
+ local DISTUTILS_NO_PARALLEL_BUILD=1
+ # Move tests out that attempt net connection, have failures
+ mv $(find . -name test_ovs_tunnel.py) . || die
+ sed -e 's:test_app_using_ipv6_and_ssl:_&:' \
+ -e 's:test_start_random_port_with_ipv6:_&:' \
+ -i neutron/tests/unit/test_wsgi.py || die
+ testr init
+ testr run --parallel || die "failed testsuite under python2.7"
+}
+
+python_install() {
+ distutils-r1_python_install
+ 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
+ rm "${D}etc/neutron/quantum"
+ 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"
+
+ insopts -m 0644
+ insinto "/usr/lib64/python2.7/site-packages/neutron/db/migration/alembic_migrations/"
+ doins -r "neutron/db/migration/alembic_migrations/versions"
+
+ #add sudoers definitions for user neutron
+ insinto /etc/sudoers.d/
+ insopts -m 0440 -o root -g root
+ newins "${FILESDIR}/neutron.sudoersd" neutron
+
+ #remove superfluous stuff
+ rm -R "${D}/usr/etc/"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
+
+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-2015.1.9999.ebuild b/sys-cluster/neutron/neutron-2015.1.9999.ebuild
new file mode 100644
index 000000000000..70e1e43e5b51
--- /dev/null
+++ b/sys-cluster/neutron/neutron-2015.1.9999.ebuild
@@ -0,0 +1,253 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit distutils-r1 git-2 linux-info user
+
+DESCRIPTION="A virtual network service for Openstack"
+HOMEPAGE="https://launchpad.net/neutron"
+EGIT_REPO_URI="https://github.com/openstack/neutron.git"
+EGIT_BRANCH="stable/kilo"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS=""
+IUSE="compute-only dhcp doc l3 metadata openvswitch linuxbridge server test sqlite mysql postgres"
+REQUIRED_USE="!compute-only? ( || ( mysql postgres sqlite ) )
+ compute-only? ( !mysql !postgres !sqlite !dhcp !l3 !metadata !server
+ || ( openvswitch linuxbridge ) )"
+
+DEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=dev-python/pbr-0.8[${PYTHON_USEDEP}]
+ <dev-python/pbr-1.0[${PYTHON_USEDEP}]
+ app-admin/sudo
+ test? (
+ ${RDEPEND}
+ >=dev-python/hacking-0.10.0[${PYTHON_USEDEP}]
+ <dev-python/hacking-0.11[${PYTHON_USEDEP}]
+ >=dev-python/cliff-1.10.0[${PYTHON_USEDEP}]
+ <dev-python/cliff-1.11.0[${PYTHON_USEDEP}]
+ >=dev-python/coverage-3.6[${PYTHON_USEDEP}]
+ >=dev-python/fixtures-0.3.14[${PYTHON_USEDEP}]
+ <dev-python/fixtures-1.3.0[${PYTHON_USEDEP}]
+ >=dev-python/mock-1.0[${PYTHON_USEDEP}]
+ <dev-python/mock-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/subunit-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/requests-mock-0.6.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-2.6.0[${PYTHON_USEDEP}]
+ >=dev-python/testrepository-0.0.18[${PYTHON_USEDEP}]
+ >=dev-python/testtools-0.9.36[${PYTHON_USEDEP}]
+ !~dev-python/testtools-1.2.0[${PYTHON_USEDEP}]
+ >=dev-python/testscenarios-0.4[${PYTHON_USEDEP}]
+ >=dev-python/webtest-2.0[${PYTHON_USEDEP}]
+ >=dev-python/oslotest-1.5.1[${PYTHON_USEDEP}]
+ <dev-python/oslotest-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/tempest-lib-0.4.0[${PYTHON_USEDEP}]
+ <dev-python/tempest-lib-0.5.0[${PYTHON_USEDEP}]
+ )"
+
+RDEPEND="
+ 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/eventlet-0.16.1[${PYTHON_USEDEP}]
+ !~dev-python/eventlet-0.17.0[${PYTHON_USEDEP}]
+ >=dev-python/greenlet-0.3.2[${PYTHON_USEDEP}]
+ >=dev-python/httplib2-0.7.5[${PYTHON_USEDEP}]
+ >=dev-python/requests-2.2.0[${PYTHON_USEDEP}]
+ !~dev-python/requests-2.4.0[${PYTHON_USEDEP}]
+ dev-python/jsonrpclib[${PYTHON_USEDEP}]
+ >=dev-python/jinja-2.6[${PYTHON_USEDEP}]
+ >=dev-python/keystonemiddleware-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/keystonemiddleware-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/netaddr-0.7.12[${PYTHON_USEDEP}]
+ >=dev-python/python-neutronclient-2.3.11[${PYTHON_USEDEP}]
+ <dev-python/python-neutronclient-2.5.0[${PYTHON_USEDEP}]
+ >=dev-python/retrying-1.2.3[${PYTHON_USEDEP}]
+ !~dev-python/retrying-1.3.0[${PYTHON_USEDEP}]
+ compute-only? (
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ sqlite? (
+ >=dev-python/sqlalchemy-0.9.7[sqlite,${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[sqlite,${PYTHON_USEDEP}]
+ )
+ mysql? (
+ dev-python/mysql-python
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ postgres? (
+ dev-python/psycopg:2
+ >=dev-python/sqlalchemy-0.9.7[${PYTHON_USEDEP}]
+ <=dev-python/sqlalchemy-0.9.99[${PYTHON_USEDEP}]
+ )
+ >=dev-python/webob-1.2.3[${PYTHON_USEDEP}]
+ >=dev-python/python-keystoneclient-1.2.0[${PYTHON_USEDEP}]
+ <dev-python/python-keystoneclient-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/alembic-0.7.2[${PYTHON_USEDEP}]
+ >=dev-python/six-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/stevedore-1.3.0[${PYTHON_USEDEP}]
+ <dev-python/stevedore-1.4.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-concurrency-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-concurrency-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-config-1.9.3[${PYTHON_USEDEP}]
+ <dev-python/oslo-config-1.10.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-context-0.2.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-context-0.3.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-db-1.7.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-db-1.8.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-i18n-1.5.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-i18n-1.6.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-log-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-log-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-messaging-1.8.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-messaging-1.9.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-middleware-1.0.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-middleware-1.1.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-rootwrap-1.6.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-rootwrap-1.7.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-serialization-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-serialization-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/oslo-utils-1.4.0[${PYTHON_USEDEP}]
+ <dev-python/oslo-utils-1.5.0[${PYTHON_USEDEP}]
+ >=dev-python/python-novaclient-2.22.0[${PYTHON_USEDEP}]
+ <dev-python/python-novaclient-2.24.0[${PYTHON_USEDEP}]
+ dev-python/pyudev[${PYTHON_USEDEP}]
+ sys-apps/iproute2
+ net-misc/bridge-utils
+ net-firewall/ipset
+ net-firewall/iptables
+ net-firewall/ebtables
+ openvswitch? ( net-misc/openvswitch )
+ dhcp? ( net-dns/dnsmasq[dhcp-tools] )"
+
+PATCHES=(
+
+)
+
+pkg_setup() {
+ 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
+ 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() {
+ #it's /bin/ip not /sbin/ip
+ sed -i 's/sbin\/ip\,/bin\/ip\,/g' etc/neutron/rootwrap.d/*
+ distutils-r1_src_prepare
+}
+
+python_compile_all() {
+ use doc && make -C doc html
+}
+
+python_test() {
+ # https://bugs.launchpad.net/neutron/+bug/1234857
+ # https://bugs.launchpad.net/swift/+bug/1249727
+ # https://bugs.launchpad.net/neutron/+bug/1251657
+ # turn multiprocessing off, testr will use it --parallel
+ local DISTUTILS_NO_PARALLEL_BUILD=1
+ # Move tests out that attempt net connection, have failures
+ mv $(find . -name test_ovs_tunnel.py) . || die
+ sed -e 's:test_app_using_ipv6_and_ssl:_&:' \
+ -e 's:test_start_random_port_with_ipv6:_&:' \
+ -i neutron/tests/unit/test_wsgi.py || die
+ testr init
+ testr run --parallel || die "failed testsuite under python2.7"
+}
+
+python_install() {
+ distutils-r1_python_install
+ 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
+ rm "${D}etc/neutron/quantum"
+ 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"
+
+ insopts -m 0644
+ insinto "/usr/lib64/python2.7/site-packages/neutron/db/migration/alembic_migrations/"
+ doins -r "neutron/db/migration/alembic_migrations/versions"
+
+ #add sudoers definitions for user neutron
+ insinto /etc/sudoers.d/
+ insopts -m 0440 -o root -g root
+ newins "${FILESDIR}/neutron.sudoersd" neutron
+
+ #remove superfluous stuff
+ rm -R "${D}/usr/etc/"
+}
+
+python_install_all() {
+ use doc && local HTML_DOCS=( doc/build/html/. )
+ distutils-r1_python_install_all
+}
+
+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
+}