Esempio n. 1
0
    def test_create_cgsnapshot(self):
        mock_cgsnap = mock.Mock()
        mock_cgsnap.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
        mock_cgsnap.consistencygroup_id = \
            "4a2f7e3a-312a-40c5-96a8-536b8a0fe075"
        mock_context = mock.Mock()
        self.driver.db = mock.Mock()
        mock_snap = mock.MagicMock()
        expected_snaps = [mock_snap]
        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \
            expected_snaps

        model_update, snapshots = \
            self.driver.create_cgsnapshot(mock_context, mock_cgsnap)

        expected_pgroup_name = \
            pure._get_pgroup_name_from_id(mock_cgsnap.consistencygroup_id)
        expected_snap_suffix = pure._get_pgroup_snap_suffix(mock_cgsnap)
        self.array.create_pgroup_snapshot\
            .assert_called_with(expected_pgroup_name,
                                suffix=expected_snap_suffix)
        self.assertEqual({'status': 'available'}, model_update)
        self.assertEqual(expected_snaps, snapshots)
        self.assertEqual('available', mock_snap.status)

        self.assert_error_propagates([self.array.create_pgroup_snapshot],
                                     self.driver.create_cgsnapshot,
                                     mock_context, mock_cgsnap)
Esempio n. 2
0
    def test_create_cgsnapshot(self):
        mock_cgsnap = mock.Mock()
        mock_cgsnap.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
        mock_cgsnap.consistencygroup_id = \
            "4a2f7e3a-312a-40c5-96a8-536b8a0fe075"
        mock_context = mock.Mock()
        self.driver.db = mock.Mock()
        mock_snap = mock.MagicMock()
        expected_snaps = [mock_snap]
        self.driver.db.snapshot_get_all_for_cgsnapshot.return_value = \
            expected_snaps

        model_update, snapshots = \
            self.driver.create_cgsnapshot(mock_context, mock_cgsnap)

        expected_pgroup_name = \
            pure._get_pgroup_name_from_id(mock_cgsnap.consistencygroup_id)
        expected_snap_suffix = pure._get_pgroup_snap_suffix(mock_cgsnap)
        self.array.create_pgroup_snapshot\
            .assert_called_with(expected_pgroup_name,
                                suffix=expected_snap_suffix)
        self.assertEqual({'status': 'available'}, model_update)
        self.assertEqual(expected_snaps, snapshots)
        self.assertEqual('available', mock_snap.status)

        self.assert_error_propagates(
            [self.array.create_pgroup_snapshot],
            self.driver.create_cgsnapshot, mock_context, mock_cgsnap)
Esempio n. 3
0
    def test_delete_consistencygroup(self, mock_delete_volume):
        mock_cgroup = mock.MagicMock()
        mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
        mock_cgroup['status'] = "deleted"
        mock_context = mock.Mock()
        self.driver.db = mock.Mock()
        mock_volume = mock.MagicMock()
        expected_volumes = [mock_volume]
        self.driver.db.volume_get_all_by_group.return_value = expected_volumes

        model_update, volumes = \
            self.driver.delete_consistencygroup(mock_context, mock_cgroup)

        expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        self.assertEqual(expected_volumes, volumes)
        self.assertEqual(mock_cgroup['status'], model_update['status'])
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = \
            self.purestorage_module.PureHTTPError(
                code=400,
                text="Protection group has been destroyed."
            )
        self.driver.delete_consistencygroup(mock_context, mock_cgroup)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = \
            self.purestorage_module.PureHTTPError(
                code=400,
                text="Protection group does not exist"
            )
        self.driver.delete_consistencygroup(mock_context, mock_cgroup)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = \
            self.purestorage_module.PureHTTPError(
                code=400,
                text="Some other error"
            )
        self.assertRaises(self.purestorage_module.PureHTTPError,
                          self.driver.delete_consistencygroup, mock_context,
                          mock_volume)

        self.array.destroy_pgroup.side_effect = \
            self.purestorage_module.PureHTTPError(
                code=500,
                text="Another different error"
            )
        self.assertRaises(self.purestorage_module.PureHTTPError,
                          self.driver.delete_consistencygroup, mock_context,
                          mock_volume)

        self.array.destroy_pgroup.side_effect = None
        self.assert_error_propagates([self.array.destroy_pgroup],
                                     self.driver.delete_consistencygroup,
                                     mock_context, mock_cgroup)
Esempio n. 4
0
    def test_create_consistencygroup(self):
        mock_cgroup = mock.Mock()
        mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"

        model_update = self.driver.create_consistencygroup(None, mock_cgroup)

        expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id)
        self.array.create_pgroup.assert_called_with(expected_name)
        self.assertEqual({"status": "available"}, model_update)

        self.assert_error_propagates([self.array.create_pgroup], self.driver.create_consistencygroup, None, mock_cgroup)
Esempio n. 5
0
    def test_create_consistencygroup(self):
        mock_cgroup = mock.Mock()
        mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"

        model_update = self.driver.create_consistencygroup(None, mock_cgroup)

        expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id)
        self.array.create_pgroup.assert_called_with(expected_name)
        self.assertEqual({'status': 'available'}, model_update)

        self.assert_error_propagates([self.array.create_pgroup],
                                     self.driver.create_consistencygroup, None,
                                     mock_cgroup)
Esempio n. 6
0
    def test_delete_consistencygroup(self, mock_delete_volume):
        mock_cgroup = mock.MagicMock()
        mock_cgroup.id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
        mock_cgroup["status"] = "deleted"
        mock_context = mock.Mock()
        self.driver.db = mock.Mock()
        mock_volume = mock.MagicMock()
        expected_volumes = [mock_volume]
        self.driver.db.volume_get_all_by_group.return_value = expected_volumes

        model_update, volumes = self.driver.delete_consistencygroup(mock_context, mock_cgroup)

        expected_name = pure._get_pgroup_name_from_id(mock_cgroup.id)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        self.assertEqual(expected_volumes, volumes)
        self.assertEqual(mock_cgroup["status"], model_update["status"])
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError(
            code=400, text="Protection group has been destroyed."
        )
        self.driver.delete_consistencygroup(mock_context, mock_cgroup)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError(
            code=400, text="Protection group does not exist"
        )
        self.driver.delete_consistencygroup(mock_context, mock_cgroup)
        self.array.destroy_pgroup.assert_called_with(expected_name)
        mock_delete_volume.assert_called_with(self.driver, mock_volume)

        self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError(code=400, text="Some other error")
        self.assertRaises(
            self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume
        )

        self.array.destroy_pgroup.side_effect = self.purestorage_module.PureHTTPError(
            code=500, text="Another different error"
        )
        self.assertRaises(
            self.purestorage_module.PureHTTPError, self.driver.delete_consistencygroup, mock_context, mock_volume
        )

        self.array.destroy_pgroup.side_effect = None
        self.assert_error_propagates(
            [self.array.destroy_pgroup], self.driver.delete_consistencygroup, mock_context, mock_cgroup
        )
Esempio n. 7
0
 def test_get_pgroup_name_from_id(self):
     id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
     expected_name = "consisgroup-%s-cinder" % id
     actual_name = pure._get_pgroup_name_from_id(id)
     self.assertEqual(expected_name, actual_name)
Esempio n. 8
0
 def test_get_pgroup_name_from_id(self):
     id = "4a2f7e3a-312a-40c5-96a8-536b8a0fe074"
     expected_name = "consisgroup-%s-cinder" % id
     actual_name = pure._get_pgroup_name_from_id(id)
     self.assertEqual(expected_name, actual_name)