Add recordset_client's methods and tests to Designate tempest plugin

Partially-Implements: blueprint designate-tempest-plugin

Change-Id: I55ebc5210f7b1e50b59411658a1ae4d1f39a3ff4
diff --git a/designate_tempest_plugin/common/waiters.py b/designate_tempest_plugin/common/waiters.py
index 9563656..dbdbd5a 100644
--- a/designate_tempest_plugin/common/waiters.py
+++ b/designate_tempest_plugin/common/waiters.py
@@ -114,3 +114,37 @@
                 message = '(%s) %s' % (caller, message)
 
             raise lib_exc.TimeoutException(message)
+
+
+def wait_for_recordset_status(client, recordset_id, status):
+    """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(recordset_id)
+    start = int(time.time())
+
+    while recordset['status'] != status:
+        time.sleep(client.build_interval)
+        _, recordset = client.show_recordset(recordset_id)
+        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})
+
+            caller = misc_utils.find_test_caller()
+
+            if caller:
+                message = '(%s) %s' % (caller, message)
+
+            raise lib_exc.TimeoutException(message)
\ No newline at end of file