diff --git a/tcp_tests/managers/common_services_manager.py b/tcp_tests/managers/common_services_manager.py
index e29cdd6..1e783a8 100644
--- a/tcp_tests/managers/common_services_manager.py
+++ b/tcp_tests/managers/common_services_manager.py
@@ -41,6 +41,9 @@
         """Get minion ID where keepalived VIP is at the moment"""
         tgt = 'I@keepalived:cluster:enabled:True'
         grains = 'ip_interfaces'
+        # Refresh grains first
+        self._salt.run_state(tgt, 'saltutil.refresh_grains')
+        # Get grains
         result = self._salt.get_grains(tgt=tgt, grains=grains)[0]
         minion_ids = [
             minion_id for minion_id, interfaces in result.items()
diff --git a/tcp_tests/managers/rallymanager.py b/tcp_tests/managers/rallymanager.py
index 87f8805..8282bcc 100644
--- a/tcp_tests/managers/rallymanager.py
+++ b/tcp_tests/managers/rallymanager.py
@@ -72,8 +72,8 @@
         docker_cmd = ('docker exec -i {docker_id} bash -c "{cmd}"'
                       .format(cmd=cmd, docker_id=self.docker_id))
         LOG.info("Executing: {docker_cmd}".format(docker_cmd=docker_cmd))
-        self._underlay.check_call(docker_cmd, node_name=self._node_name,
-                                  verbose=verbose, timeout=timeout)
+        return self._underlay.check_call(docker_cmd, node_name=self._node_name,
+                                         verbose=verbose, timeout=timeout)
 
     def _run(self):
         """Start the rally container in the background"""
@@ -148,20 +148,26 @@
             task_path=task_path, task_content=task_content)
         self._underlay.check_call(cmd, node_name=self._node_name)
 
-    def run_task(self, task='', timeout=None, raise_on_timeout=True):
+    def run_task(self, task='', timeout=None, raise_on_timeout=True,
+                 verbose=False):
         """Run rally task
 
         :param taks: path to json or yaml file with the task definition
         :param raise_on_timeout: bool, ignore TimeoutError if False
+        :param verbose: show rally output to console if True
         """
         try:
-            self._docker_exec("rally task start {task}".format(task=task),
-                              timeout=timeout, verbose=True)
+            res = self._docker_exec(
+                "rally task start {task}".format(task=task),
+                timeout=timeout,
+                verbose=verbose)
         except error.TimeoutError:
             if raise_on_timeout:
                 raise
             else:
+                res = None
                 pass
+        return res
 
     # Updated to replace the OpenStackManager method run_tempest
     def run_tempest(self, conf_name='/var/lib/lvm_mcp.conf',
diff --git a/tcp_tests/managers/saltmanager.py b/tcp_tests/managers/saltmanager.py
index 5249186..1ff5324 100644
--- a/tcp_tests/managers/saltmanager.py
+++ b/tcp_tests/managers/saltmanager.py
@@ -17,7 +17,8 @@
 from collections import defaultdict
 
 from datetime import datetime
-from pepper.libpepper import Pepper
+from pepper import libpepper
+from tcp_tests.helpers import utils
 from tcp_tests import settings
 from tcp_tests import logger
 from tcp_tests.managers.execute_commands import ExecuteCommandsMixin
@@ -94,7 +95,7 @@
         url = "http://{host}:{port}".format(
             host=self.host, port=self.port)
         LOG.info("Connecting to Salt API {0}".format(url))
-        self.__api = Pepper(url)
+        self.__api = libpepper.Pepper(url)
         self.__session_start = login()
         return self.__api
 
@@ -208,3 +209,18 @@
     def service_stop(self, tgt, service):
         result = self.local(tgt=tgt, fun='service.stop', args=service)
         return result['return']
+
+    @utils.retry(3, exception=libpepper.PepperException)
+    def sync_time(self, tgt='*'):
+        LOG.info("NTP time sync on the salt minions '{0}'".format(tgt))
+        # Force authentication update on the next API access
+        # because previous authentication most probably is not valid
+        # before or after time sync.
+        self.__api = None
+        self.run_state(
+            tgt,
+            'cmd.run', 'service ntp stop; ntpd -gq; service ntp start')
+        new_time_res = self.run_state(tgt, 'cmd.run', 'date')
+        for node_name, time in sorted(new_time_res[0]['return'][0].items()):
+            LOG.info("{0}: {1}".format(node_name, time))
+        self.__api = None
