def test_create_with_source_cgsnapshot_id_with_members_error(self): snap = fake_cgsnapshot("fake_source_cgsnapshot_id", status=constants.STATUS_AVAILABLE) member = stubs.stub_cgsnapshot_member("fake_member_id") member_2 = stubs.stub_cgsnapshot_member("fake_member2_id") share = stubs.stub_share("fakeshareid") fake_share_type_mapping = {"share_type_id": "fake_share_type_id"} orig_cg = fake_cg( "fakeorigid", user_id=self.context.user_id, project_id=self.context.project_id, share_types=[fake_share_type_mapping], status=constants.STATUS_AVAILABLE, share_network_id="fake_network_id", share_server_id="fake_server_id", ) cg = fake_cg( "fakeid", user_id=self.context.user_id, project_id=self.context.project_id, share_types=[fake_share_type_mapping], status=constants.STATUS_CREATING, share_network_id="fake_network_id", share_server_id="fake_server_id", ) expected_values = cg.copy() for name in ("id", "created_at", "share_network_id", "share_server_id"): expected_values.pop(name, None) expected_values["source_cgsnapshot_id"] = snap["id"] expected_values["share_types"] = ["fake_share_type_id"] expected_values["share_network_id"] = "fake_network_id" expected_values["share_server_id"] = "fake_server_id" self.mock_object(db_driver, "cgsnapshot_get", mock.Mock(return_value=snap)) self.mock_object(db_driver, "consistency_group_get", mock.Mock(return_value=orig_cg)) self.mock_object(db_driver, "share_network_get") self.mock_object(db_driver, "share_instance_get", mock.Mock(return_value=share)) self.mock_object(db_driver, "consistency_group_create", mock.Mock(return_value=cg)) self.mock_object(share_types, "get_share_type", mock.Mock(return_value={"id": "fake_share_type_id"})) self.mock_object(db_driver, "cgsnapshot_members_get_all", mock.Mock(return_value=[member, member_2])) self.mock_object(self.share_api, "create", mock.Mock(side_effect=[None, exception.Error])) self.mock_object(db_driver, "consistency_group_destroy") self.assertRaises(exception.Error, self.api.create, self.context, source_cgsnapshot_id=snap["id"]) db_driver.consistency_group_create.assert_called_once_with(self.context, expected_values) self.assertEqual(2, self.share_api.create.call_count) self.assertEqual(1, db_driver.consistency_group_destroy.call_count)
def test_create_with_source_cgsnapshot_id_with_member(self): snap = fake_cgsnapshot("fake_source_cgsnapshot_id", status=constants.STATUS_AVAILABLE) share = stubs.stub_share("fakeshareid") member = stubs.stub_cgsnapshot_member("fake_member_id") fake_share_type_mapping = {"share_type_id": "fake_share_type_id"} orig_cg = fake_cg( "fakeorigid", user_id=self.context.user_id, project_id=self.context.project_id, share_types=[fake_share_type_mapping], status=constants.STATUS_AVAILABLE, share_network_id="fake_network_id", share_server_id="fake_server_id", ) cg = fake_cg( "fakeid", user_id=self.context.user_id, project_id=self.context.project_id, share_types=[fake_share_type_mapping], status=constants.STATUS_CREATING, share_network_id="fake_network_id", share_server_id="fake_server_id", ) expected_values = cg.copy() for name in ("id", "created_at", "fake_network_id", "fake_share_server_id"): expected_values.pop(name, None) expected_values["source_cgsnapshot_id"] = snap["id"] expected_values["share_types"] = ["fake_share_type_id"] expected_values["share_network_id"] = "fake_network_id" expected_values["share_server_id"] = "fake_server_id" self.mock_object(db_driver, "cgsnapshot_get", mock.Mock(return_value=snap)) self.mock_object(db_driver, "consistency_group_get", mock.Mock(return_value=orig_cg)) self.mock_object(db_driver, "consistency_group_create", mock.Mock(return_value=cg)) self.mock_object(share_types, "get_share_type", mock.Mock(return_value={"id": "fake_share_type_id"})) self.mock_object(db_driver, "share_network_get") self.mock_object(db_driver, "share_instance_get", mock.Mock(return_value=share)) self.mock_object(db_driver, "cgsnapshot_members_get_all", mock.Mock(return_value=[member])) self.mock_object(self.share_api, "create") self.api.create(self.context, source_cgsnapshot_id=snap["id"]) db_driver.consistency_group_create.assert_called_once_with(self.context, expected_values) self.assertTrue(self.share_api.create.called) self.share_rpcapi.create_consistency_group.assert_called_once_with(self.context, cg, orig_cg["host"])