Merge "Fix default allow filter regexp"
diff --git a/linux/files/ovs_bridge b/linux/files/ovs_bridge
index bf9b74f..40acb04 100644
--- a/linux/files/ovs_bridge
+++ b/linux/files/ovs_bridge
@@ -12,3 +12,6 @@
 {%- if bridge.ovs_options is defined %}
 ovs_options {{ bridge.ovs_options }}
 {%- endif %}
+{%- if bridge_ports %}
+ovs_ports {{ bridge_ports }}
+{%- endif %}
diff --git a/linux/meta/fluentd.yml b/linux/meta/fluentd.yml
index f6d6720..0f73580 100644
--- a/linux/meta/fluentd.yml
+++ b/linux/meta/fluentd.yml
@@ -87,6 +87,14 @@
               - name: ident
                 regexp: '^(.*)$'
                 result: $1.systemd
+  {%- if pillar.get('telegraf', {}).get('agent', {}).get('enabled', False) %}
+          push_to_telegraf:
+            require_in:
+              - push_to_default
+            tag: 'telegraf.systemd'
+            type: relabel
+            label: telegraf
+  {%- endif %}
           push_to_default:
             tag: '*.systemd'
             type: copy
diff --git a/linux/network/dpdk.sls b/linux/network/dpdk.sls
index 7cc4102..c400831 100644
--- a/linux/network/dpdk.sls
+++ b/linux/network/dpdk.sls
@@ -141,7 +141,45 @@
 linux_network_dpdk_bridge_interface_{{ interface_name }}:
   cmd.run:
     - name: "ovs-vsctl{%- if network.ovs_nowait %} --no-wait{%- endif %} add-br {{ interface_name }} -- set bridge {{ interface_name }} datapath_type=netdev{% if interface.tag is defined %} -- set port {{ interface_name }} tag={{ interface.tag }}{% endif %}"
-    - unless: "ovs-vsctl show | grep {{ interface_name }}"
+    - unless: 'ovs-vsctl show | grep "Bridge {{ interface_name }}"'
+
+    {# OVS dpdk needs ip address for vxlan termination on bridge br-prv #}
+    {%- if interface.address is defined %}
+
+{# create override for openvswitch dependency for dpdk br-prv #}
+/etc/systemd/system/ifup@{{ interface_name }}.service.d/override.conf:
+  file.managed:
+    - makedirs: true
+    - require:
+      - cmd: linux_network_dpdk_bridge_interface_{{ interface_name }}
+    - contents: |
+        [Unit]
+        Requires=openvswitch-switch.service
+        After=openvswitch-switch.service
+
+{# enforce ip address and mtu for ovs dpdk br-prv #}
+dpdk_ovs_bridge_{{ interface_name }}:
+  file.managed:
+    - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }}
+    - contents: |
+        auto {{ interface_name }}
+        iface {{ interface_name }} inet static
+        address {{ interface.address }}
+        netmask {{ interface.netmask }}
+        {%- if interface.mtu is defined %}
+        mtu {{ interface.mtu }}
+        {%- endif %}
+    - makedirs: True
+    - require:
+      - file: /etc/systemd/system/ifup@{{ interface_name }}.service.d/override.conf
+
+dpdk_ovs_bridge_up_{{ interface_name }}:
+  cmd.run:
+  - name: ifup {{ interface_name }}
+  - require:
+    - file: dpdk_ovs_bridge_{{ interface_name }}
+
+    {%- endif %}
 
   {%- elif interface.type == 'dpdk_ovs_port' and interface.bridge is defined %}
 
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index 65e7bb8..db6cd9f 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -82,43 +82,6 @@
     - name: ovs-vsctl{%- if network.ovs_nowait %} --no-wait{%- endif %} add-port {{ interface_name }} {{ int_name }}
 {%- endif %}
 {%- endfor %}
-
-linux_interfaces_include_{{ interface_name }}:
-  file.prepend:
-  - name: /etc/network/interfaces
-  - text: |
-      source /etc/network/interfaces.d/*
-      # Workaround for Upstream-Bug: https://github.com/saltstack/salt/issues/40262
-      source /etc/network/interfaces.u/*
-
-{# create override for openvswitch dependency for dpdk br-prv #}
-/etc/systemd/system/ifup@{{ interface_name }}.service.d/override.conf:
-  file.managed:
-    - makedirs: true
-    - require:
-      - cmd: linux_network_dpdk_bridge_interface_{{ interface_name }}
-    - contents: |
-        [Unit]
-        Requires=openvswitch-switch.service
-        After=openvswitch-switch.service
-
-dpdk_ovs_bridge_{{ interface_name }}:
-  file.managed:
-  - name: /etc/network/interfaces.u/ifcfg-{{ interface_name }}
-  - makedirs: True
-  - source: salt://linux/files/ovs_bridge
-  - defaults:
-      bridge: {{ interface|yaml }}
-      bridge_name: {{ interface_name }}
-  - template: jinja
-
-dpdk_ovs_bridge_up_{{ interface_name }}:
-  cmd.run:
-  - name: ifup {{ interface_name }}
-  - require:
-    - file: dpdk_ovs_bridge_{{ interface_name }}
-    - file: linux_interfaces_final_include
-
 {%- endif %}
 
 {# it is not used for any interface with type preffix dpdk,eg. dpdk_ovs_port #}
@@ -132,6 +95,8 @@
   openvswitch_bridge.present:
   - name: {{ interface_name }}
 
+{%- set ovs_ports = [] %}
+
 {# add linux network interface into OVS bridge #}
 {%- for int_name, int in network.interface.items() %}
 
@@ -144,6 +109,11 @@
     - unless: ovs-vsctl show | grep {{ int_name }}
     - name: ovs-vsctl{%- if network.ovs_nowait %} --no-wait{%- endif %} add-port {{ interface_name }} {{ int_name }}
 {%- endif %}
+
+{%- if int.bridge is defined and interface_name == int.bridge %}
+{%-   do ovs_ports.append(int_name) %}
+{%- endif %}
+
 {%- endfor %}
 
 linux_interfaces_include_{{ interface_name }}:
@@ -162,6 +132,7 @@
   - defaults:
       bridge: {{ interface|yaml }}
       bridge_name: {{ interface_name }}
+      bridge_ports: {{ " ".join(ovs_ports) }}
   - template: jinja
 
 ovs_bridge_up_{{ interface_name }}: