diff options
Diffstat (limited to 'sys-cluster/neutron')
-rw-r--r-- | sys-cluster/neutron/Manifest | 2 | ||||
-rw-r--r-- | sys-cluster/neutron/files/cve-2015-3221_2015.1.0.patch | 127 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-dhcp-agent.confd | 2 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-l3-agent.confd | 2 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-linuxbridge-agent.confd | 1 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-metadata-agent.confd | 2 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-openvswitch-agent.confd | 1 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-ovs-cleanup.confd | 1 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron-server.confd | 1 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron.initd | 21 | ||||
-rw-r--r-- | sys-cluster/neutron/files/neutron.sudoersd | 4 | ||||
-rw-r--r-- | sys-cluster/neutron/metadata.xml | 29 | ||||
-rw-r--r-- | sys-cluster/neutron/neutron-2015.1.0-r2.ebuild | 249 | ||||
-rw-r--r-- | sys-cluster/neutron/neutron-2015.1.1.ebuild | 252 | ||||
-rw-r--r-- | sys-cluster/neutron/neutron-2015.1.9999.ebuild | 253 |
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 +} |