Merge "Restart 'nscd' service on changes in nsswitch.conf and nslcd.conf" into release/2019.2.0
diff --git a/linux/network/interface.sls b/linux/network/interface.sls
index fbbe871..4c9c140 100644
--- a/linux/network/interface.sls
+++ b/linux/network/interface.sls
@@ -395,31 +395,49 @@
 {%- endif %}
 
 {%- if interface.type in ('eth','ovs_port') %}
-{%- if interface.get('ipflush_onchange', False) %}
 
+  {%- if interface.get('ifdown_before_changes', False) %}
+linux_interface_down_before_change_{{ interface_name }}:
+  cmd.run:
+  - name: ifdown {{ interface_name }}
+  - prereq:
+    {%- if interface.type == 'eth' %}
+    - network: linux_interface_{{ interface_name }}
+    {%- else %}
+    - file: ovs_port_{{ interface_name }}
+    {%- endif %}
+
+linux_interface_up_after_change_{{ interface_name }}:
+  cmd.run:
+  - name: ifup {{ interface_name }}
+  - onchanges:
+    {%- if interface.type == 'eth' %}
+    - network: linux_interface_{{ interface_name }}
+    {%- else %}
+    - file: ovs_port_{{ interface_name }}
+    {%- endif %}
+  {%- endif %}
+
+  {%- if interface.get('ipflush_onchange', False) %}
 linux_interface_ipflush_onchange_{{ interface_name }}:
   cmd.run:
   - name: "/sbin/ip address flush dev {{ interface_name }}"
-{%- if interface.type == 'eth' %}
+    {%- if interface.type == 'eth' %}
   - onchanges:
     - network: linux_interface_{{ interface_name }}
-{%- elif interface.type == 'ovs_port' %}
+    {%- elif interface.type == 'ovs_port' %}
   - onchanges:
     - file: ovs_port_{{ interface_name }}
-{%- endif %}
+    {%- endif %}
 
-{%- if interface.get('restart_on_ipflush', False) %}
-
+    {%- if interface.get('restart_on_ipflush', False) %}
 linux_interface_restart_on_ipflush_{{ interface_name }}:
   cmd.run:
   - name: "ifdown {{ interface_name }}; ifup {{ interface_name }};"
   - onchanges:
     - cmd: linux_interface_ipflush_onchange_{{ interface_name }}
-
-{%- endif %}
-
-{%- endif %}
-
+    {%- endif %}
+  {%- endif %}
 {%- endif %}
 
 {%- endfor %}