diff --git a/designate_tempest_plugin/common/waiters.py b/designate_tempest_plugin/common/waiters.py
index 5c06623..e4645ea 100644
--- a/designate_tempest_plugin/common/waiters.py
+++ b/designate_tempest_plugin/common/waiters.py
@@ -149,31 +149,31 @@
             raise lib_exc.TimeoutException(message)
 
 
-def wait_for_recordset_status(client, zone_id, recordset_id, status):
+def wait_for_recordset_status(client, zone_id, recordset_id,
+                              status, headers=None):
     """Waits for a recordset to reach the given status."""
     LOG.info('Waiting for recordset %s to reach %s',
              recordset_id, status)
 
-    _, recordset = client.show_recordset(zone_id, recordset_id)
+    _, recordset = client.show_recordset(zone_id, recordset_id,
+                                         headers=headers)
     start = int(time.time())
 
     while recordset['status'] != status:
         time.sleep(client.build_interval)
-        _, recordset = client.show_recordset(zone_id, recordset_id)
+        _, recordset = client.show_recordset(zone_id, recordset_id,
+                                             headers=headers)
         status_curr = recordset['status']
         if status_curr == status:
             LOG.info('Recordset %s reached %s', recordset_id, status)
             return
 
         if int(time.time()) - start >= client.build_timeout:
-            message = ('Recordset %(recordset_id)s failed to reach '
-                       'status=%(status) within the required time '
-                       '(%(timeout)s s). Current '
-                       'status: %(status_curr)s' %
-                       {'recordset_id': recordset_id,
-                        'status': status,
-                        'status_curr': status_curr,
-                        'timeout': client.build_timeout})
+            message = ('Recordset {0} failed to reach '
+                       'status={1} within the required time '
+                       '({2} s). Current status: {3}'.
+                       format(recordset_id, status,
+                              client.build_timeout, status_curr))
 
             caller = test_utils.find_test_caller()
 
