Merge "ipapply:  Disable for an hour when /tmp/ipapply_disabled exists."
diff --git a/fs/skeleton/bin/ipapply b/fs/skeleton/bin/ipapply
index e11d4ef..d2117cf 100755
--- a/fs/skeleton/bin/ipapply
+++ b/fs/skeleton/bin/ipapply
@@ -23,6 +23,8 @@
 import struct
 import subprocess
 import sys
+import time
+
 import options
 
 optspec = """
@@ -38,6 +40,7 @@
 STATIC_IP_CONFIGS_DIR = base_path + '/config/ip/static'
 DYNAMIC_IP_CONFIGS_DIR = base_path + '/tmp/ip/dynamic'
 TMP_CONMAN_DIR = base_path + '/tmp/conman'
+DISABLED_FILE = base_path + '/tmp/ipapply_disabled'
 
 
 def AtomicWrite(filename, data):
@@ -270,7 +273,21 @@
   return ''.join((ApplyNetmask(ip, netmask), '/', netmask))
 
 
+def Disabled():
+  """Returns whether /tmp/ipapply_disabled has been written in the last hour."""
+  if os.path.exists(DISABLED_FILE):
+    disabled_s = (os.stat(DISABLED_FILE).st_mtime + 60 * 60) - time.time()
+    if disabled_s > 0:
+      Log('Disabled for the next %d seconds', disabled_s)
+      return True
+
+  return False
+
+
 def main():
+  if Disabled():
+    return
+
   o = options.Options(optspec)
   (_, _, extra) = o.parse(sys.argv[1:])
   if not extra:
diff --git a/fs/skeleton/bin/ipapply.test b/fs/skeleton/bin/ipapply.test
index c167122..87ea074 100755
--- a/fs/skeleton/bin/ipapply.test
+++ b/fs/skeleton/bin/ipapply.test
@@ -10,6 +10,7 @@
 STATIC_PATH=/config/ip/static
 DYNAMIC_PATH=/tmp/ip/dynamic
 TMP_CONMAN=/tmp/conman
+DISABLED_FILE=/tmp/ipapply_disabled
 
 runnable mktemp &&
 tmpdir=$(mktemp -d ipapplyXXXXXXXXXX) ||
@@ -56,6 +57,8 @@
   rm -rf $tmpdir/$STATIC_PATH
   rm -rf $tmpdir/$DYNAMIC_PATH
   rm -rf $tmpdir/$TMP_CONMAN
+  rm -f $tmpdir/$DISABLED_FILE
+
 
   mkdir -p $tmpdir/$STATIC_PATH
   mkdir -p $tmpdir/$DYNAMIC_PATH
@@ -82,7 +85,7 @@
 WVPASSEQ $? 0
 
 echo
-echo "TEST static config"
+echo "TEST static config and disable"
 export IIU_TEST_UP_INTERFACES="iface0"
 mkdir -p $tmpdir/$STATIC_PATH
 cat >$tmpdir/$STATIC_PATH/iface0 <<-EOF
@@ -93,6 +96,14 @@
 
 
 echo "1.1.1.0/24 dev br0  proto kernel  scope link  src 1.1.1.1" >"$tmpdir/ip_route_show"
+
+touch $tmpdir/$DISABLED_FILE
+output=$(ipapply iface0 2>&1 1>/dev/null)
+WVPASSEQ $? 0
+echo "${output}" | grep "Disabled for the next" >/dev/null
+WVPASSEQ $? 0
+
+rm $tmpdir/$DISABLED_FILE
 output=$(ipapply iface0 2>&1 1>/dev/null)
 WVPASSEQ $? 0
 echo "${output}" | grep "ip addr add 1.1.1.1/24 dev iface0" >/dev/null