+import json
 import time
 import logging
 from io import BytesIO
 
 from tasks.mgr.mgr_test_case import MgrTestCase
+from teuthology.exceptions import CommandFailedError
 
 log = logging.getLogger(__name__)
 
     def _check_nfs_status(self):
         return self._orch_cmd('ls', 'nfs')
 
+    def _test_idempotency(self, cmd_func, cmd_args):
+        cmd_func()
+        ret = self.mgr_cluster.mon_manager.raw_cluster_cmd_result(*cmd_args)
+        if ret != 0:
+            raise RuntimeError("Idempotency test failed")
+
     def _test_create_cluster(self):
         self._check_nfs_server_status()
         self._nfs_cmd('cluster', 'create', self.export_type, self.cluster_id)
         self._test_create_cluster()
         self._test_delete_cluster()
 
+    def test_create_delete_cluster_idempotency(self):
+        self._test_idempotency(self._test_create_cluster, ['nfs', 'cluster', 'create', self.export_type,
+                                                           self.cluster_id])
+        self._test_idempotency(self._test_delete_cluster, ['nfs', 'cluster', 'delete', self.cluster_id])
+
     def test_export_create_and_delete(self):
         self._create_default_export()
         self._delete_export()
         self._check_export_obj_deleted()
         self._test_delete_cluster()
 
+    def test_create_delete_export_idempotency(self):
+        self._test_idempotency(self._create_default_export, ['nfs', 'export', 'create', 'cephfs',
+                                                             self.fs_name, self.cluster_id,
+                                                             self.pseudo_path])
+        self._test_idempotency(self._delete_export, ['nfs', 'export', 'delete', self.cluster_id,
+                                                     self.pseudo_path])
+
     def test_create_multiple_exports(self):
         #Export-1 with default values
         self._create_default_export()