1 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
2 : Copyright (c) 2018 Mirantis Inc., Enea AB and others.
4 : All rights reserved. This program and the accompanying materials
5 : are made available under the terms of the Apache License, Version 2.0
6 : which accompanies this distribution, and is available at
7 : http://www.apache.org/licenses/LICENSE-2.0
8 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
9 From: Michael Polenchuk <mpolenchuk@mirantis.com>
10 Date: Wed, 28 Feb 2018 17:54:28 +0400
11 Subject: [PATCH] Set ovs bridges as L3 interfaces
13 Change-Id: I1e83129cc184cf481bea21d7aa452bf60d9e0499
15 diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge
17 index 0000000..575d38f
19 +++ b/linux/files/ovs_bridge
21 +auto {{ bridge_name }}
22 +allow-ovs {{ bridge_name }}
23 +iface {{ bridge_name }} inet static
25 + address {{ bridge.address }}
26 + netmask {{ bridge.netmask }}
27 + {%- if bridge.gateway is defined %}
28 + gateway {{ bridge.gateway }}
30 + {%- if bridge.ovs_options is defined %}
31 + ovs_options {{ bridge.ovs_options }}
33 diff --git a/linux/files/ovs_port b/linux/files/ovs_port
34 index 222ca8e..efb0307 100644
35 --- a/linux/files/ovs_port
36 +++ b/linux/files/ovs_port
39 allow-{{ port.bridge }} {{ port_name }}
40 iface {{ port_name }} inet {{ port.get('proto', 'manual') }}
41 +{%- if '.' in port_name %}
42 +vlan-raw-device {{ port_name.split('.')[0] }}
44 ovs_type {{ port.get('ovs_port_type', 'OVSIntPort') }}
45 mtu {{ port.get('mtu', '1500') }}
46 ovs_bridge {{ port.bridge }}
47 diff --git a/linux/network/interface.sls b/linux/network/interface.sls
48 index 3e79847..dc7180a 100644
49 --- a/linux/network/interface.sls
50 +++ b/linux/network/interface.sls
51 @@ -72,6 +72,34 @@ remove_cloud_init_file:
52 ovs_bridge_{{ interface_name }}:
53 openvswitch_bridge.present:
54 - name: {{ interface_name }}
55 +{%- if interface.get('proto', 'manual') == 'static' %}
57 + - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }}
59 + - source: salt://linux/files/ovs_bridge
61 + bridge: {{ interface|yaml }}
62 + bridge_name: {{ interface_name }}
65 +linux_interfaces_include_{{ interface_name }}:
67 + - name: /etc/network/interfaces
69 + source /etc/network/interfaces.d/*
70 + # Workaround for Upstream-Bug: https://github.com/saltstack/salt/issues/40262
71 + source /etc/network/interfaces.u/*
73 +ovs_bridge_up_{{ interface_name }}:
75 + - name: ifup {{ interface_name }}
77 + - file: ovs_bridge_{{ interface_name }}
78 + - openvswitch_bridge: ovs_bridge_{{ interface_name }}
79 + - file: linux_interfaces_final_include
81 + - ip link show {{ interface_name }} | grep -q '\<UP\>'
84 {# add linux network interface into OVS bridge #}
85 {%- for int_name, int in network.interface.items() %}