Stability fixes for SR Tests and small fixes for running ONOS in docker

- move checkOptions to component driver
- use karafTimeout for SR tests
- Fix some docker options
- Make sure mn docker can resolve own hostname
- Fix config file ip format for DHCP relay app

Change-Id: I85e8c52384e0fb478462fa9bbaf0b31a599b632b
(cherry picked from commit 521ecde3f8d28288303ea11129faa0cfd86b9bcd)
diff --git a/TestON/drivers/common/cli/onosclidriver.py b/TestON/drivers/common/cli/onosclidriver.py
index 7a0641e..72ed62c 100755
--- a/TestON/drivers/common/cli/onosclidriver.py
+++ b/TestON/drivers/common/cli/onosclidriver.py
@@ -58,15 +58,12 @@
         self.handle = None
         self.karafUser = None
         self.karafPass = None
+        self.karafTimeout = None
+
         self.dockerPrompt = None
         self.graph = Graph()
         super( OnosCliDriver, self ).__init__()
 
-    def checkOptions( self, var, defaultVar ):
-        if var is None or var == "":
-            return defaultVar
-        return var
-
     def connect( self, **connectargs ):
         """
         Creates ssh handle for ONOS cli.
@@ -85,10 +82,13 @@
                     self.karafPass = self.options[ key ]
                 elif key == "docker_prompt":
                     self.dockerPrompt = self.options[ key ]
+                elif key == "karaf_timeout":
+                    self.karafTimeout = self.options[ key ]
             self.home = self.checkOptions( self.home, "~/onos" )
             self.karafUser = self.checkOptions( self.karafUser, self.user_name )
             self.karafPass = self.checkOptions( self.karafPass, self.pwd )
             self.dockerPrompt = self.checkOptions( self.dockerPrompt, "~/onos#" )
+            self.karafTimeout = self.checkOptions( self.karafTimeout, 7200000  )
 
             for key in self.options:
                 if key == 'onosIp':
@@ -301,6 +301,7 @@
                 startCliCommand = "onos " + str( ONOSIp )
             self.handle.sendline( startCliCommand )
             tries = 0
+            setTimeout = False
             while tries < 5:
                 i = self.handle.expect( [
                     self.karafPrompt,
@@ -308,14 +309,17 @@
                     pexpect.TIMEOUT ], onosStartTimeout )
 
                 if i == 0:
-                    main.log.info( str( ONOSIp ) + " CLI Started successfully" )
+                    if setTimeout:
+                        main.log.info( str( ONOSIp ) + " CLI Started successfully" )
+                        return main.TRUE
                     if karafTimeout:
                         self.handle.sendline(
                             "config:property-set -p org.apache.karaf.shell\
                                      sshIdleTimeout " +
-                            karafTimeout )
-                        self.handle.expect( self.karafPrompt )
-                    return main.TRUE
+                            str( karafTimeout ) )
+                        self.handle.expect( "closed by remote host" )
+                        self.handle.sendline( startCliCommand )
+                        setTimeout = True
                 elif i == 1:
                     main.log.info( str( ONOSIp ) + " CLI asking for password" )
                     main.log.debug( "Sending %s" % self.karafPass )
@@ -6739,8 +6743,6 @@
                 if not ready:
                     self.handle.expect( self.dockerPrompt )
                 time.sleep( 1 )
-            #main.log.debug( "%s: It took %s tries for onos log folder to %sbe created" %
-            #                    ( self.name, retries, "" if ready else "NOT " ) )
 
             cmdList = []
             cmdList.append( "apt-get update" )