summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2015-03-10 15:01:39 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2015-03-20 16:06:23 +0000
commitbc3262db549a32f88727f7e19bf4712991ead5cb (patch)
tree25682c7a1ff7f8445555fedd6ff4ab57b8fd46f0
parentc749c3bcc6b8c232dadfdd441360765990f1fd1a (diff)
downloaddefinitions-bc3262db549a32f88727f7e19bf4712991ead5cb.tar.gz
Move patch link creation into openvswitch
This is required for Open vSwitch to be able to signal that every network interface required has been configured. It also means we no longer need to set the links to promiscuous mode ourselves, since interfaces need to be set in promiscuous mode to allow bridging to work and Open vSwitch handles this responsibility if it is configured to be the one to do the link setup.
-rw-r--r--openstack-neutron.configure1
-rw-r--r--openstack/etc/systemd/system/openstack-neutron-server.service4
-rw-r--r--openstack/etc/systemd/system/openstack-neutron-setup.service4
-rw-r--r--openstack/etc/systemd/system/openvswitch-create-links-one-node.service14
-rw-r--r--openstack/manifest2
-rw-r--r--openstack/usr/share/openstack/create_openvswitch_veth_pairs32
-rw-r--r--openstack/usr/share/openstack/openstack-neutron-network-configuration-for-one-node34
7 files changed, 19 insertions, 72 deletions
diff --git a/openstack-neutron.configure b/openstack-neutron.configure
index 71b29713..9097336d 100644
--- a/openstack-neutron.configure
+++ b/openstack-neutron.configure
@@ -44,7 +44,6 @@ sed -f "$ROOT"/etc/openstack-neutron-setup.sed -i \
# Create the links to enable the neutron systemd services #
##########################################################################
services=("openstack-neutron-network-configuration-one-node.service" \
- "openvswitch-create-links-one-node.service" \
"openstack-neutron-dhcp-agent.service" \
"openstack-neutron-l3-agent.service" \
"openstack-neutron-metadata-agent.service" \
diff --git a/openstack/etc/systemd/system/openstack-neutron-server.service b/openstack/etc/systemd/system/openstack-neutron-server.service
index b9484b94..c8e816a5 100644
--- a/openstack/etc/systemd/system/openstack-neutron-server.service
+++ b/openstack/etc/systemd/system/openstack-neutron-server.service
@@ -1,7 +1,7 @@
[Unit]
Description=Neutron Api Server
-Wants=openvswitch-create-links-one-node.service
-After=network-online.target openstack-neutron-setup.service openvswitch-create-links-one-node.service
+Wants=openstack-neutron-network-configuration-one-node.service
+After=network-online.target openstack-neutron-setup.service openstack-neutron-network-configuration-one-node.service
[Service]
Type=simple
diff --git a/openstack/etc/systemd/system/openstack-neutron-setup.service b/openstack/etc/systemd/system/openstack-neutron-setup.service
index 4c09907e..858e76e9 100644
--- a/openstack/etc/systemd/system/openstack-neutron-setup.service
+++ b/openstack/etc/systemd/system/openstack-neutron-setup.service
@@ -1,7 +1,7 @@
[Unit]
Description=Run openstack-neutron-setup (once)
-Wants=openvswitch-create-links-one-node.service
-After=network-online.target openstack-keystone-setup.service openvswitch-create-links-one-node.service postgres-server.service
+Wants=openstack-neutron-network-configuration-one-node.service
+After=network-online.target openstack-keystone-setup.service openstack-neutron-network-configuration-one-node.service postgres-server.service
[Service]
Type=oneshot
diff --git a/openstack/etc/systemd/system/openvswitch-create-links-one-node.service b/openstack/etc/systemd/system/openvswitch-create-links-one-node.service
deleted file mode 100644
index bacfc433..00000000
--- a/openstack/etc/systemd/system/openvswitch-create-links-one-node.service
+++ /dev/null
@@ -1,14 +0,0 @@
-[Unit]
-Description=Create Veth pairs
-Wants=openstack-neutron-network-configuration-one-node.service
-After=network-online.target openstack-neutron-network-configuration-one-node.service
-
-[Service]
-Type=oneshot
-ExecStart=/usr/share/openstack/create_openvswitch_veth_pairs
-RemainAfterExit=yes
-Restart=no
-
-[Install]
-WantedBy=multi-user.target
-
diff --git a/openstack/manifest b/openstack/manifest
index 8c7b9915..691b2343 100644
--- a/openstack/manifest
+++ b/openstack/manifest
@@ -157,6 +157,4 @@
0100644 0 0 /etc/horizon/apache-horizon.conf
0100644 0 0 /etc/horizon/openstack_dashboard/local_settings.py
0100644 0 0 /etc/sysctl.conf
-0100644 0 0 /etc/systemd/system/openvswitch-create-links-one-node.service
-0100755 0 0 /usr/share/openstack/create_openvswitch_veth_pairs
0100644 0 0 /etc/hosts
diff --git a/openstack/usr/share/openstack/create_openvswitch_veth_pairs b/openstack/usr/share/openstack/create_openvswitch_veth_pairs
deleted file mode 100644
index a239ac73..00000000
--- a/openstack/usr/share/openstack/create_openvswitch_veth_pairs
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-#
-# Copyright (C) 2015 Codethink Limited
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; version 2 of the License.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-set -xe
-
-# Get the first ethernet driver and its ip
-eth_dev="$(ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*inet ([^/]+)/@) { print "$iface $1\n"; } $_=undef;' | grep "^e" | head -1 | awk '{ print $1 } ')"
-eth_ip="$(ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*inet ([^/]+)/@) { print "$iface $1\n"; } $_=undef;' | grep "^e" | head -1 | awk '{ print $2 } ')"
-
-# Create the veth pairs between bridges (configuration one node)
-ifconfig br-eth0 $eth_ip up
-ip link set br-eth0 promisc on
-ip link set eth1-br-proxy up promisc on
-ip link set ex-br-proxy up promisc on
-ip link set proxy-br-eth1 up promisc on
-ip link set proxy-br-ex up promisc on
-
-exit 0
diff --git a/openstack/usr/share/openstack/openstack-neutron-network-configuration-for-one-node b/openstack/usr/share/openstack/openstack-neutron-network-configuration-for-one-node
index dadbaaa6..f5f5444a 100644
--- a/openstack/usr/share/openstack/openstack-neutron-network-configuration-for-one-node
+++ b/openstack/usr/share/openstack/openstack-neutron-network-configuration-for-one-node
@@ -22,9 +22,6 @@ eth_dev="$(ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*ine
eth_ip="$(ip addr | perl -pe 'if (/^\d+: ([^:]+)/) { $iface=$1; } if (m@^\s*inet ([^/]+)/@) { print "$iface $1\n"; } $_=undef;' | grep "^e" | head -1 | awk '{ print $2 } ')"
eth_mac="$(ip link show $eth_dev | tr -s '[:space:]' '\n' | sed -n '/link\/ether/{n;p}')"
-ip link add proxy-br-eth1 type veth peer name eth1-br-proxy
-ip link add proxy-br-ex type veth peer name ex-br-proxy
-
if [ -f /var/openstack/openvswitch-one-node-setup ]; then
exit 0
fi
@@ -51,12 +48,12 @@ systemctl restart systemd-networkd.service
ip addr del $eth_ip dev $eth_dev
# Create our external bridge
-ovs-vsctl add-br br-eth0
# Bind our external device to the bridge
-ovs-vsctl add-port br-eth0 $eth_dev
# Tell the bridge that it has the mac address of the external device now
-ovs-vsctl set bridge br-eth0 other-config:hwaddr=$eth_mac
-ip link set br-eth0 promisc on
+ovs-vsctl \
+ -- add-br br-eth0 \
+ -- add-port br-eth0 $eth_dev \
+ -- set bridge br-eth0 other-config:hwaddr=$eth_mac
# restart networkd again so it will DHCP on the Open vSwitch device that
# replaces our external interface, but with the mac address of the external
@@ -72,19 +69,18 @@ systemctl restart systemd-networkd.service
# Add the rest of the bridges
-ovs-vsctl add-br br-eth1
-ovs-vsctl add-br br-ex
-ovs-vsctl add-port br-eth1 eth1-br-proxy
-ovs-vsctl add-port br-ex ex-br-proxy
-ovs-vsctl add-port br-eth0 proxy-br-eth1
-ovs-vsctl add-port br-eth0 proxy-br-ex
-ip link set eth1-br-proxy up promisc on
-ip link set ex-br-proxy up promisc on
-ip link set proxy-br-eth1 up promisc on
-ip link set proxy-br-ex up promisc on
+ovs-vsctl \
+ -- add-br br-eth1 \
+ -- add-port br-eth1 eth1-br-proxy \
+ -- set interface eth1-br-proxy type=patch options:peer=proxy-br-eth1 \
+ -- add-port br-eth0 proxy-br-eth1 \
+ -- set interface proxy-br-eth1 type=patch options:peer=eth1-br-proxy \
+ -- add-br br-ex \
+ -- add-port br-ex ex-br-proxy \
+ -- set interface ex-br-proxy type=patch options:peer=proxy-br-ex \
+ -- add-port br-eth0 proxy-br-ex \
+ -- set interface proxy-br-ex type=patch options:peer=ex-br-proxy
install -D -m 644 /proc/self/fd/0 <<'EOF' /var/openstack/openvswitch-one-node-setup
Openvswitch one node setup: success
EOF
-
-exit 0