diff --git a/src/test/cluster/clusterTest.py b/src/test/cluster/clusterTest.py
index 2260612..a0281db 100644
--- a/src/test/cluster/clusterTest.py
+++ b/src/test/cluster/clusterTest.py
@@ -63,6 +63,7 @@
     subscriber = cluster_subscriber()
     testcaseLoggers = ('test_cluster_controller_restarts', 'test_cluster_graceful_controller_restarts',
                        'test_cluster_single_controller_restarts', 'test_cluster_restarts')
+    iterations = os.getenv('ITERATIONS', 10)
 
     def setUp(self):
         if self._testMethodName not in self.testcaseLoggers:
@@ -401,7 +402,7 @@
             return controller
 
         next_controller = None
-        tries = 10
+        tries = self.iterations
         for num in range(tries):
             index = num % ctlr_len
             #index = random.randrange(0, ctlr_len)
@@ -490,7 +491,7 @@
 
             return controller
 
-        tries = 10
+        tries = self.iterations
         #chose a random controller for shutdown/restarts
         controller = controllers[random.randrange(0, ctlr_len)]
         controller_name = onos_map[controller]
@@ -569,7 +570,7 @@
                                                iteration = 'FAILED')
                 assert_equal(len(ips), len(controllers))
 
-        tries = 10
+        tries = self.iterations
         for num in range(tries):
             log.info('ITERATION: %d. Restarting cluster with controllers at %s' %(num+1, controllers))
             try:
diff --git a/src/test/setup/cord-test.py b/src/test/setup/cord-test.py
index bb261ad..b0b2f2f 100755
--- a/src/test/setup/cord-test.py
+++ b/src/test/setup/cord-test.py
@@ -396,6 +396,7 @@
     onos_ip = test_manifest.onos_ip
     radius_ip = test_manifest.radius_ip
     head_node = test_manifest.head_node
+    iterations = test_manifest.iterations
 
     #don't spawn onos if the user has specified external test controller with test interface config
     if args.test_controller:
@@ -519,6 +520,9 @@
         olt_conf_test_loc = os.path.join(CordTester.sandbox_setup, 'olt_config.json')
         test_cnt_env['OLT_CONFIG'] = olt_conf_test_loc
 
+    if iterations is not None:
+        test_cnt_env['ITERATIONS'] = iterations
+
     if args.num_containers > 1 and args.container:
         print('Cannot specify number of containers with container option')
         sys.exit(1)
@@ -633,6 +637,8 @@
     onos_ip = test_manifest.onos_ip
     radius_ip = test_manifest.radius_ip
     head_node = test_manifest.head_node
+    iterations = test_manifest.iterations
+
     ##If onos/radius was already started
     if args.test_controller:
         ips = args.test_controller.split('/')
@@ -768,7 +774,8 @@
         if test_manifest.olt:
             olt_conf_test_loc = os.path.join(CordTester.sandbox_setup, 'olt_config.json')
             test_cnt_env['OLT_CONFIG'] = olt_conf_test_loc
-
+        if test_manifest.iterations is not None:
+            test_cnt_env['ITERATIONS'] = iterations
         test_cnt = CordTester((),
                               ctlr_ip = ctlr_addr,
                               image = nose_cnt['image'],
diff --git a/src/test/utils/TestManifest.py b/src/test/utils/TestManifest.py
index b8ca881..b56300d 100644
--- a/src/test/utils/TestManifest.py
+++ b/src/test/utils/TestManifest.py
@@ -35,6 +35,7 @@
             self.start_switch = args.start_switch
             self.image_prefix = args.prefix
             self.onos_image = args.onos
+            self.iterations = None
             self.server = '{}:{}'.format(CORD_TEST_HOST, CORD_TEST_PORT)
         else:
             with open(self.manifest, 'r') as fd:
@@ -51,3 +52,4 @@
             self.image_prefix = data.get('image_prefix', '')
             self.onos_image = data.get('onos_image', 'onosproject/onos:latest')
             self.server = data.get('test_server', '{}:{}'.format(CORD_TEST_HOST, CORD_TEST_PORT))
+            self.iterations = data.get('iterations', None)
