Add sleep between retires in bindings

In bindings.py the common retry() function uses a busy loop to retry, in
some cases the busy loop just increase the work loads of mapper and the
caller still get the ObjectPathInUse exception. It's better to sleep for
a while between retries.

A sleep interval is added as parameter default to 0, so the change does
not break existing functions. Then the caller has an option to pass a
sleep interval to indiciate it would sleep for an interval between
retries.

Change-Id: Ie1f248dc0b1be291dfa597eba2f58ba9bf247d6b
Signed-off-by: Lei YU <mine260309@gmail.com>
diff --git a/obmc/mapper/bindings.py b/obmc/mapper/bindings.py
index 43d1af2..820efa7 100644
--- a/obmc/mapper/bindings.py
+++ b/obmc/mapper/bindings.py
@@ -34,7 +34,7 @@
             obj, dbus_interface=MAPPER_IFACE)
 
     @staticmethod
-    def retry(func, retries):
+    def retry(func, retries, interval):
         e = None
         count = 0
         while count < retries:
@@ -46,32 +46,35 @@
                     raise
 
                 count += 1
+                if interval > 0:
+                    from time import sleep
+                    sleep(interval)
         if e:
             raise e
 
-    def get_object(self, path, retries=5, interfaces=[]):
+    def get_object(self, path, retries=5, interfaces=[], interval=0):
         return self.retry(
             lambda: self.iface.GetObject(
                 path, interfaces, signature='sas'),
-            retries)
+            retries, interval)
 
-    def get_subtree_paths(self, path='/', depth=0, retries=5, interfaces=[]):
+    def get_subtree_paths(self, path='/', depth=0, retries=5, interfaces=[], interval=0):
         return self.retry(
             lambda: self.iface.GetSubTreePaths(
                 path, depth, interfaces, signature='sias'),
-            retries)
+            retries, interval)
 
-    def get_subtree(self, path='/', depth=0, retries=5, interfaces=[]):
+    def get_subtree(self, path='/', depth=0, retries=5, interfaces=[], interval=0):
         return self.retry(
             lambda: self.iface.GetSubTree(
                 path, depth, interfaces, signature='sias'),
-            retries)
+            retries, interval)
 
-    def get_ancestors(self, path, retries=5, interfaces=[]):
+    def get_ancestors(self, path, retries=5, interfaces=[], interval=0):
         return self.retry(
             lambda: self.iface.GetAncestors(
                 path, interfaces, signature='sas'),
-            retries)
+            retries, interval)
 
     @staticmethod
     def __try_properties_interface(f, *a):