diff --git a/src/test/setup/cord-test.py b/src/test/setup/cord-test.py
index ef516f3..08eb528 100755
--- a/src/test/setup/cord-test.py
+++ b/src/test/setup/cord-test.py
@@ -109,13 +109,14 @@
         egress_map = { 'ether': '00:00:00:00:00:03', 'ip': '192.168.30.1' }
         ingress_map = { 'ether': '00:00:00:00:00:04', 'ip': '192.168.40.1' }
         device_id = 'of:{}'.format(get_mac(switch))
+        ctlr = self.ctlr_ip.split(',')[0]
         flow = OnosFlowCtrl(deviceId = device_id,
                             egressPort = egress,
                             ingressPort = ingress,
                             ethType = '0x800',
                             ipSrc = ('IPV4_SRC', ingress_map['ip']+'/32'),
                             ipDst = ('IPV4_DST', egress_map['ip']+'/32'),
-                            controller = self.ctlr_ip
+                            controller = ctlr
                             )
         result = flow.addFlow()
         if result != True:
@@ -136,7 +137,8 @@
         if not self.olt:
             return False
         device_id = 'of:{}'.format(get_mac(switch))
-        devices = OnosCtrl.get_devices(controller = self.ctlr_ip)
+        ctlr = self.ctlr_ip.split(',')[0]
+        devices = OnosCtrl.get_devices(controller = ctlr)
         if devices:
             device = filter(lambda d: d['id'] == device_id, devices)
             return True
@@ -448,6 +450,8 @@
     service_profile = test_manifest.service_profile
     synchronizer = test_manifest.synchronizer
     onos_cord = None
+    Onos.update_data_dir(test_manifest.karaf_version)
+
     if onos_cord_loc:
         if onos_cord_loc.find(os.path.sep) < 0:
             onos_cord_loc = os.path.join(os.getenv('HOME'), onos_cord_loc)
@@ -582,7 +586,8 @@
                      'LOG_LEVEL': test_manifest.log_level,
                      'MANIFEST': int(use_manifest),
                      'HEAD_NODE': head_node if head_node else CORD_TEST_HOST,
-                     'MAAS_API_KEY': maas_api_key
+                     'MAAS_API_KEY': maas_api_key,
+                     'KARAF_VERSION' : test_manifest.karaf_version
                    }
 
     if ssh_key_file:
@@ -708,6 +713,8 @@
     synchronizer = test_manifest.synchronizer
     onos_cord = None
     onos_cord_loc = test_manifest.onos_cord
+    Onos.update_data_dir(test_manifest.karaf_version)
+
     if onos_cord_loc:
         if onos_cord_loc.find(os.path.sep) < 0:
             onos_cord_loc = os.path.join(os.getenv('HOME'), onos_cord_loc)
@@ -842,7 +849,8 @@
                          'LOG_LEVEL': test_manifest.log_level,
                          'MANIFEST': int(use_manifest),
                          'HEAD_NODE': head_node if head_node else CORD_TEST_HOST,
-                         'MAAS_API_KEY': maas_api_key
+                         'MAAS_API_KEY': maas_api_key,
+                         'KARAF_VERSION' : test_manifest.karaf_version
                        }
 
         if ssh_key_file:
@@ -1145,6 +1153,7 @@
     parser_run.add_argument('-synchronizer', '--synchronizer', default='', type=str,
                             help='Specify the synchronizer to use for ONOS cord instance when running on podd.'
                             'Eg: vtn,fabric,cord')
+    parser_run.add_argument('-karaf', '--karaf', default='3.0.5', type=str, help='Karaf version for ONOS')
     parser_run.set_defaults(func=runTest)
 
     parser_setup = subparser.add_parser('setup', help='Setup cord tester environment')
@@ -1186,6 +1195,7 @@
     parser_setup.add_argument('-f', '--foreground', action='store_true', help='Run in foreground')
     parser_setup.add_argument('-jvm-heap-size', '--jvm-heap-size', default='', type=str, help='ONOS JVM heap size')
     parser_setup.add_argument('-network', '--network', default='', type=str, help='Docker network to attach')
+    parser_setup.add_argument('-karaf', '--karaf', default='3.0.5', type=str, help='Karaf version for ONOS')
     parser_setup.set_defaults(func=setupCordTester)
 
     parser_xos = subparser.add_parser('xos', help='Building xos into cord tester environment')
diff --git a/src/test/setup/manifest.json b/src/test/setup/manifest.json
index 862662d..d9bb2e4 100644
--- a/src/test/setup/manifest.json
+++ b/src/test/setup/manifest.json
@@ -4,5 +4,6 @@
     "start_switch": true,
     "onos_image": "onosproject/onos:latest",
     "log_level" : "INFO",
-    "jvm_heap_size" : "1G"
+    "jvm_heap_size" : "1G",
+    "karaf_version" : "3.0.5"
 }
diff --git a/src/test/setup/prerequisites.sh b/src/test/setup/prerequisites.sh
index 6a8a0c1..8a3c06d 100755
--- a/src/test/setup/prerequisites.sh
+++ b/src/test/setup/prerequisites.sh
@@ -19,6 +19,7 @@
     echo "Installing Docker"
     apt-get -y install docker-engine
     service docker restart
+    sleep 5
     echo "Verifying Docker installation"
     docker run --rm hello-world || exit 127
     docker rmi hello-world
diff --git a/src/test/utils/CordContainer.py b/src/test/utils/CordContainer.py
index bda9359..81df366 100644
--- a/src/test/utils/CordContainer.py
+++ b/src/test/utils/CordContainer.py
@@ -465,6 +465,7 @@
     host_config_dir = os.path.join(setup_dir, 'onos-config')
     guest_config_dir = '/root/onos/config'
     guest_data_dir = '/root/onos/apache-karaf-3.0.5/data'
+    guest_log_file = '/root/onos/apache-karaf-3.0.5/data/log/karaf.log'
     onos_gen_partitions = os.path.join(setup_dir, 'onos-gen-partitions')
     onos_form_cluster = os.path.join(setup_dir, 'onos-form-cluster')
     cord_apps_dir = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'apps')
@@ -521,6 +522,11 @@
         if os.path.exists(host_volume_dir):
             shutil.rmtree(host_volume_dir)
 
+    @classmethod
+    def update_data_dir(cls, karaf):
+        Onos.guest_data_dir = '/root/onos/apache-karaf-{}/data'.format(karaf)
+        Onos.guest_log_file = '/root/onos/apache-karaf-{}/data/log/karaf.log'.format(karaf)
+
     def remove_data_volume(self):
         if self.data_map is not None:
             self.remove_data_map(*self.data_map)
@@ -643,7 +649,7 @@
 
     @classmethod
     def wait_for_onos_start(cls, ip, tries = 30):
-        onos_log = OnosLog(host = ip)
+        onos_log = OnosLog(host = ip, log_file = Onos.guest_log_file)
         num_tries = 0
         started = None
         while not started and num_tries < tries:
diff --git a/src/test/utils/OnosLog.py b/src/test/utils/OnosLog.py
index 0a31b80..15fb216 100644
--- a/src/test/utils/OnosLog.py
+++ b/src/test/utils/OnosLog.py
@@ -6,10 +6,14 @@
     CLI_USER = 'karaf'
     CLI_PASSWD = 'karaf'
     CLI_PORT = 8101
+    KARAF_VERSION = os.getenv('KARAF_VERSION', '3.0.5')
     HOST = os.getenv('ONOS_CONTROLLER_IP', '172.17.0.2').split(',')[0]
     last_snapshot_map = {}
 
-    def __init__(self, host = HOST):
+    def __init__(self, host = HOST, log_file = None):
+        if log_file is None:
+            log_file = '/root/onos/apache-karaf-{}/data/log/karaf.log'.format(self.KARAF_VERSION)
+        self.log_file = log_file
         self.ssh_agent = SSHTestAgent(host = host, user = self.CLI_USER,
                                       password = self.CLI_PASSWD, port = self.CLI_PORT)
         if not OnosLog.last_snapshot_map.has_key(host):
@@ -27,7 +31,7 @@
 
     def get_log(self, search_terms = None, exception = True, cache_result = True):
         """Run the command on the test host"""
-        cmd = 'cat /root/onos/apache-karaf-3.0.5/data/log/karaf.log'
+        cmd = 'cat {}'.format(self.log_file)
         st, output = self.ssh_agent.run_cmd(cmd)
         if st is False:
             return st, output
@@ -64,7 +68,7 @@
 
     def search_log_pattern(self, pattern):
         r_pat = re.compile(pattern)
-        cmd = 'cat /root/onos/apache-karaf-3.0.5/data/log/karaf.log'
+        cmd = 'cat {}'.format(self.log_file)
         st, output = self.ssh_agent.run_cmd(cmd)
         if st is False:
             return None
diff --git a/src/test/utils/TestManifest.py b/src/test/utils/TestManifest.py
index b5ec2d4..143727c 100644
--- a/src/test/utils/TestManifest.py
+++ b/src/test/utils/TestManifest.py
@@ -48,6 +48,7 @@
             self.iterations = None
             self.server = args.server
             self.jvm_heap_size = args.jvm_heap_size if args.jvm_heap_size else None
+            self.karaf_version = args.karaf
         else:
             with open(self.manifest, 'r') as fd:
                 data = json.load(fd)
@@ -72,3 +73,4 @@
             self.server = data.get('test_server', '{}:{}'.format(CORD_TEST_HOST, CORD_TEST_PORT))
             self.iterations = data.get('iterations', None)
             self.jvm_heap_size = data.get('jvm_heap_size', None)
+            self.karaf_version = data.get('karaf_version', '3.0.5')
