summaryrefslogtreecommitdiffstats
path: root/anslib/patches/networkmanager-ds-use-openshift-interface.patch
blob: 687be8acac4ae2ab9f9cc31c5e4637c3c50aeac3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
diff --git a/roles/openshift_node/files/bootstrap.yml b/roles/openshift_node/files/bootstrap.yml
index ea28064..df95ba3 100644
--- a/roles/openshift_node/files/bootstrap.yml
+++ b/roles/openshift_node/files/bootstrap.yml
@@ -8,7 +8,7 @@
       lines:
       - regex: ^listen-address
         state: present
-        line: "listen-address={{ ansible_default_ipv4.address }}"
+        line: "listen-address={{ openshift_dns_ip }}"
     node_dns:
       file: /etc/dnsmasq.d/node-dnsmasq.conf
       lines:
diff --git a/roles/openshift_node/files/networkmanager/99-origin-dns.sh b/roles/openshift_node/files/networkmanager/99-origin-dns.sh
index acf3e2f..16129a2 100755
--- a/roles/openshift_node/files/networkmanager/99-origin-dns.sh
+++ b/roles/openshift_node/files/networkmanager/99-origin-dns.sh
@@ -43,10 +43,25 @@ if [[ $2 =~ ^(up|dhcp4-change|dhcp6-change)$ ]]; then
   ######################################################################
   # couldn't find an existing method to determine if the interface owns the
   # default route
-  def_route=$(/sbin/ip route list match 0.0.0.0/0 | awk '{print $3 }')
-  def_route_int=$(/sbin/ip route get to ${def_route} | awk '{print $3}')
-  def_route_ip=$(/sbin/ip route get to ${def_route} | awk '{print $5}')
-  if [[ ${DEVICE_IFACE} == ${def_route_int} ]]; then
+  #SDS
+  #def_route=$(/sbin/ip route list match 0.0.0.0/0 | awk '{print $3 }')
+  #def_route_int=$(/sbin/ip route get to ${def_route} | awk '{print $3}')
+  #def_route_ip=$(/sbin/ip route get to ${def_route} | awk '{print $5}')
+  #EDS
+  def_route_ip=$(cat /etc/hosts | grep openshift_dns_ip | awk '{ print $1 }')
+  [ -n "$def_route_ip" ] && def_route_int=$(ip -o addr show | grep ${def_route_ip} | awk '{ print $2 }')
+  if [ -z "$def_route_ip" -o -z "$def_route_int" ]; then
+    def_route=$(/sbin/ip route list match 0.0.0.0/0 | awk '{print $3 }')
+    def_route_int=$(/sbin/ip route get to ${def_route} | awk '{print $3}' | head -n 1)
+    def_route_ip=$(/sbin/ip -f inet addr show dev ${def_route_int} scope global up | grep -Po 'inet \K[\d.]+' | head -n 1)
+  fi
+
+  def_routes=$(/sbin/ip route list match 0.0.0.0/0 | awk '{print $3 }')
+  def_routes_int=$(for r in ${def_routes}; do /sbin/ip route get to ${r} | awk '{print $3}'; done)
+  interfaces="${def_route_int} ${def_routes_int}"
+
+  if [[ "${interfaces}" =~ (^|[[:space:]])${DEVICE_IFACE}($|[[:space:]]) ]]; then
+#  if [[ ${DEVICE_IFACE} == ${def_route_int} ]]; then
     if [ ! -f /etc/dnsmasq.d/origin-dns.conf ]; then
       cat << EOF > /etc/dnsmasq.d/origin-dns.conf
 no-resolv