]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/mgr/dashboard: rbd: snapshot edit tests
authorRicardo Dias <rdias@suse.com>
Tue, 10 Apr 2018 09:42:37 +0000 (10:42 +0100)
committerRicardo Dias <rdias@suse.com>
Fri, 13 Apr 2018 14:58:48 +0000 (15:58 +0100)
Signed-off-by: Ricardo Dias <rdias@suse.com>
qa/tasks/mgr/dashboard/test_rbd.py

index 4f3b962520939ceaf3357972905fb096ed563ea0..33342de994933fa571e4b28b178b5171731a2e8c 100644 (file)
@@ -1,4 +1,5 @@
 # -*- coding: utf-8 -*-
+# pylint: disable=too-many-public-methods
 
 from __future__ import absolute_import
 
@@ -58,6 +59,14 @@ class RbdTest(DashboardTestCase):
                                 {'pool_name': pool, 'image_name': image,
                                  'snapshot_name': snapshot})
 
+    @classmethod
+    def update_snapshot(cls, pool, image, snapshot, new_name, is_protected):
+        return cls._task_put('/api/rbd//{}/{}/snap/{}'.format(pool, image, snapshot),
+                             'rbd/snap/edit',
+                             {'pool_name': pool, 'image_name': image,
+                              'snapshot_name': snapshot},
+                             {'new_snap_name': new_name, 'is_protected': is_protected})
+
     @classmethod
     def setUpClass(cls):
         super(RbdTest, cls).setUpClass()
@@ -140,6 +149,17 @@ class RbdTest(DashboardTestCase):
             else:
                 self.assertEqual(snap[k], v)
 
+    def _validate_snapshot_list(self, snap_list, snap_name=None, **kwargs):
+        found = False
+        for snap in snap_list:
+            self.assertIn('name', snap)
+            if snap_name and snap['name'] == snap_name:
+                found = True
+                self._validate_snapshot(snap, **kwargs)
+                break
+        if snap_name and not found:
+            self.fail("Snapshot {} not found".format(snap_name))
+
     def test_list(self):
         data = self._view_cache_get('/api/rbd')
         self.assertStatus(200)
@@ -353,3 +373,27 @@ class RbdTest(DashboardTestCase):
                                                  'journaling', 'layering'])
         res = self.remove_image('rbd', 'edit_img')
         self.assertTrue(res['success'])
+
+    def test_update_snapshot(self):
+        res = self.create_snapshot('rbd', 'img1', 'snap5')
+        self.assertTrue(res['success'])
+        img = self._get('/api/rbd/rbd/img1')
+        self._validate_snapshot_list(img['snapshots'], 'snap5', is_protected=False)
+
+        res = self.update_snapshot('rbd', 'img1', 'snap5', 'snap6', None)
+        self.assertTrue(res['success'])
+        img = self._get('/api/rbd/rbd/img1')
+        self._validate_snapshot_list(img['snapshots'], 'snap6', is_protected=False)
+
+        res = self.update_snapshot('rbd', 'img1', 'snap6', None, True)
+        self.assertTrue(res['success'])
+        img = self._get('/api/rbd/rbd/img1')
+        self._validate_snapshot_list(img['snapshots'], 'snap6', is_protected=True)
+
+        res = self.update_snapshot('rbd', 'img1', 'snap6', 'snap5', False)
+        self.assertTrue(res['success'])
+        img = self._get('/api/rbd/rbd/img1')
+        self._validate_snapshot_list(img['snapshots'], 'snap5', is_protected=False)
+
+        res = self.remove_snapshot('rbd', 'img1', 'snap5')
+        self.assertTrue(res['success'])