Trivial fix PEP 8 coding style violation and typo
PEP 8: unexpected spaces around keyword / parameter equals Change-Id: I58b490e2716662697f57c6e24b36efe39e9c2777
This commit is contained in:
parent
ae1df67883
commit
4aa2a2a74a
@ -418,7 +418,7 @@ class API(base.Base):
|
||||
Call backup manager to execute backup status reset operation.
|
||||
:param context: running context
|
||||
:param backup_id: which backup's status to be reset
|
||||
:parma status: backup's status to be reset
|
||||
:param status: backup's status to be reset
|
||||
:raises InvalidBackup:
|
||||
"""
|
||||
# get backup info
|
||||
|
@ -243,7 +243,7 @@ class SwiftBackupDriver(chunkeddriver.ChunkedBackupDriver):
|
||||
preauthurl=self.swift_url,
|
||||
preauthtoken=self.context.auth_token,
|
||||
starting_backoff=self.swift_backoff,
|
||||
insecure= (
|
||||
insecure=(
|
||||
self.backup_swift_auth_insecure),
|
||||
cacert=CONF.backup_swift_ca_cert_file)
|
||||
|
||||
|
@ -78,7 +78,7 @@ class CinderCleanableObject(base.CinderPersistentObject):
|
||||
|
||||
:param pinned: If we should check against pinned version or current
|
||||
version.
|
||||
:type pinned_version: bool
|
||||
:type pinned: bool
|
||||
:returns: Whether this needs a workers DB entry or not
|
||||
"""
|
||||
if pinned:
|
||||
|
@ -1220,7 +1220,7 @@ class BackupsAPITestCase(test.TestCase):
|
||||
volume_name = 'test1'
|
||||
volume_id = utils.create_volume(self.context,
|
||||
size=5,
|
||||
display_name = volume_name).id
|
||||
display_name=volume_name).id
|
||||
|
||||
body = {"restore": {"volume_id": volume_id, }}
|
||||
req = webob.Request.blank('/v2/%s/backups/%s/restore' % (
|
||||
@ -1602,7 +1602,7 @@ class BackupsAPITestCase(test.TestCase):
|
||||
volume_name = 'test1'
|
||||
volume_id = utils.create_volume(self.context,
|
||||
size=15,
|
||||
display_name = volume_name).id
|
||||
display_name=volume_name).id
|
||||
|
||||
body = {"restore": {"volume_id": volume_id, }}
|
||||
req = webob.Request.blank('/v2/%s/backups/%s/restore' % (
|
||||
|
@ -37,20 +37,20 @@ def rpcapi_get_capabilities(self, context, host, discover):
|
||||
'Cinder LVM driver, blah, blah.',
|
||||
replication_targets=[],
|
||||
visibility='public',
|
||||
properties = dict(
|
||||
compression = dict(
|
||||
properties=dict(
|
||||
compression=dict(
|
||||
title='Compression',
|
||||
description='Enables compression.',
|
||||
type='boolean'),
|
||||
qos = dict(
|
||||
qos=dict(
|
||||
title='QoS',
|
||||
description='Enables QoS.',
|
||||
type='boolean'),
|
||||
replication = dict(
|
||||
replication=dict(
|
||||
title='Replication',
|
||||
description='Enables replication.',
|
||||
type='boolean'),
|
||||
thin_provisioning = dict(
|
||||
thin_provisioning=dict(
|
||||
title='Thin Provisioning',
|
||||
description='Sets thin provisioning.',
|
||||
type='boolean'),
|
||||
|
@ -588,7 +588,7 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
|
||||
self._create_backup_db_entry(volume_id=volume_id)
|
||||
self.flags(backup_compression_algorithm='zlib')
|
||||
self.flags(backup_file_size=(1024 * 3))
|
||||
self.flags(backup_sha_block_size_bytes = 1024)
|
||||
self.flags(backup_sha_block_size_bytes=1024)
|
||||
service = nfs.NFSBackupDriver(self.ctxt)
|
||||
self.volume_file.seek(0)
|
||||
backup = objects.Backup.get_by_id(self.ctxt, fake.BACKUP_ID)
|
||||
@ -614,7 +614,7 @@ class BackupNFSSwiftBasedTestCase(test.TestCase):
|
||||
'_generate_object_name_prefix',
|
||||
_fake_generate_object_name_prefix)
|
||||
|
||||
self.flags(backup_file_size =(1024 * 8))
|
||||
self.flags(backup_file_size=(1024 * 8))
|
||||
self.flags(backup_sha_block_size_bytes=1024)
|
||||
|
||||
container_name = self.temp_dir.replace(tempfile.gettempdir() + '/',
|
||||
|
@ -462,7 +462,7 @@ class BackupSwiftTestCase(test.TestCase):
|
||||
self._create_backup_db_entry(volume_id=volume_id,
|
||||
container=container_name,
|
||||
backup_id=fake.BACKUP2_ID,
|
||||
parent_id= fake.BACKUP_ID)
|
||||
parent_id=fake.BACKUP_ID)
|
||||
self.mock_object(swift, 'Connection',
|
||||
fake_swift_client2.FakeSwiftClient2.Connection)
|
||||
service = swift_dr.SwiftBackupDriver(self.ctxt)
|
||||
|
@ -659,7 +659,7 @@ class BackupTestCase(BaseBackupTest):
|
||||
vol_id = self._create_volume_db_entry(size=vol_size,
|
||||
previous_status='in-use')
|
||||
backup = self._create_backup_db_entry(volume_id=vol_id)
|
||||
snap = self._create_snapshot_db_entry(volume_id = vol_id)
|
||||
snap = self._create_snapshot_db_entry(volume_id=vol_id)
|
||||
|
||||
vol = objects.Volume.get_by_id(self.ctxt, vol_id)
|
||||
mock_get_backup_device.return_value = (
|
||||
@ -740,7 +740,7 @@ class BackupTestCase(BaseBackupTest):
|
||||
vol_id = self._create_volume_db_entry(size=vol_size,
|
||||
previous_status='in-use')
|
||||
vol = objects.Volume.get_by_id(self.ctxt, vol_id)
|
||||
snap = self._create_snapshot_db_entry(volume_id = vol_id)
|
||||
snap = self._create_snapshot_db_entry(volume_id=vol_id)
|
||||
mock_create_vol_from_snap.return_value = {'provider_id':
|
||||
'fake_provider_id'}
|
||||
|
||||
|
@ -30,7 +30,7 @@ class VolumeTypeTestCase(test.TestCase):
|
||||
super(VolumeTypeTestCase, self).setUp()
|
||||
self.ctxt = context.RequestContext(user_id=fake.USER_ID,
|
||||
project_id=fake.PROJECT_ID,
|
||||
is_admin = True)
|
||||
is_admin=True)
|
||||
|
||||
def test_volume_type_delete(self):
|
||||
volume_type = db.volume_type_create(self.ctxt, {'name':
|
||||
@ -81,9 +81,9 @@ class VolumeTypeTestCase(test.TestCase):
|
||||
|
||||
def test_volume_type_update(self):
|
||||
vol_type_ref = volume_types.create(self.ctxt, 'fake volume type')
|
||||
updates = dict(name = 'test_volume_type_update',
|
||||
description = None,
|
||||
is_public = None)
|
||||
updates = dict(name='test_volume_type_update',
|
||||
description=None,
|
||||
is_public=None)
|
||||
db.volume_type_update(self.ctxt, vol_type_ref.id, updates)
|
||||
updated_vol_type = db.volume_type_get(self.ctxt, vol_type_ref.id)
|
||||
self.assertEqual('test_volume_type_update', updated_vol_type['name'])
|
||||
|
@ -97,24 +97,24 @@ class GroupAPITestCase(test.TestCase):
|
||||
mock_group_type_get.return_value = {'id': fake.GROUP_TYPE_ID}
|
||||
name = "test_group"
|
||||
description = "this is a test group"
|
||||
grp = utils.create_group(self.ctxt, group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova', host = None,
|
||||
name = name, description = description,
|
||||
status = fields.GroupStatus.CREATING)
|
||||
grp = utils.create_group(self.ctxt, group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[fake.VOLUME_TYPE_ID],
|
||||
availability_zone='nova', host=None,
|
||||
name=name, description=description,
|
||||
status=fields.GroupStatus.CREATING)
|
||||
mock_group.return_value = grp
|
||||
|
||||
ret_group = self.group_api.create(self.ctxt, name, description,
|
||||
fake.GROUP_TYPE_ID,
|
||||
[fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova')
|
||||
availability_zone='nova')
|
||||
mock_policy.assert_called_with(self.ctxt, 'create')
|
||||
self.assertEqual(grp.obj_to_primitive(), ret_group.obj_to_primitive())
|
||||
|
||||
ret_group.host = "test_host@fakedrv#fakepool"
|
||||
ret_group.status = fields.GroupStatus.AVAILABLE
|
||||
ret_group.assert_not_frozen = mock.Mock(return_value=True)
|
||||
self.group_api.delete(self.ctxt, ret_group, delete_volumes = True)
|
||||
self.group_api.delete(self.ctxt, ret_group, delete_volumes=True)
|
||||
mock_volume_get_all.assert_called_once_with(mock.ANY, ret_group.id)
|
||||
mock_volumes_update.assert_called_once_with(self.ctxt, [])
|
||||
mock_rpc_delete_group.assert_called_once_with(self.ctxt, ret_group)
|
||||
@ -251,17 +251,17 @@ class GroupAPITestCase(test.TestCase):
|
||||
mock_group_type_get.return_value = {'id': fake.GROUP_TYPE_ID}
|
||||
name = "test_group"
|
||||
description = "this is a test group"
|
||||
grp = utils.create_group(self.ctxt, group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova', host = None,
|
||||
name = name, description = description,
|
||||
status = fields.GroupStatus.CREATING)
|
||||
grp = utils.create_group(self.ctxt, group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[fake.VOLUME_TYPE_ID],
|
||||
availability_zone='nova', host=None,
|
||||
name=name, description=description,
|
||||
status=fields.GroupStatus.CREATING)
|
||||
mock_group.return_value = grp
|
||||
|
||||
ret_group = self.group_api.create(self.ctxt, name, description,
|
||||
fake.GROUP_TYPE_ID,
|
||||
[fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova')
|
||||
availability_zone='nova')
|
||||
self.assertEqual(grp.obj_to_primitive(), ret_group.obj_to_primitive())
|
||||
|
||||
ret_group.volume_types = [vol_type]
|
||||
@ -270,15 +270,15 @@ class GroupAPITestCase(test.TestCase):
|
||||
ret_group.id = fake.GROUP_ID
|
||||
|
||||
vol1 = utils.create_volume(
|
||||
self.ctxt, host = ret_group.host,
|
||||
availability_zone = ret_group.availability_zone,
|
||||
volume_type_id = fake.VOLUME_TYPE_ID)
|
||||
self.ctxt, host=ret_group.host,
|
||||
availability_zone=ret_group.availability_zone,
|
||||
volume_type_id=fake.VOLUME_TYPE_ID)
|
||||
|
||||
vol2 = utils.create_volume(
|
||||
self.ctxt, host = ret_group.host,
|
||||
availability_zone = ret_group.availability_zone,
|
||||
volume_type_id = fake.VOLUME_TYPE_ID,
|
||||
group_id = fake.GROUP_ID)
|
||||
self.ctxt, host=ret_group.host,
|
||||
availability_zone=ret_group.availability_zone,
|
||||
volume_type_id=fake.VOLUME_TYPE_ID,
|
||||
group_id=fake.GROUP_ID)
|
||||
vol2_dict = {
|
||||
'id': vol2.id,
|
||||
'group_id': fake.GROUP_ID,
|
||||
@ -295,8 +295,8 @@ class GroupAPITestCase(test.TestCase):
|
||||
vol1.id, vol2.id)
|
||||
mock_volume_get_all.assert_called_once_with(mock.ANY, ret_group.id)
|
||||
mock_rpc_update_group.assert_called_once_with(self.ctxt, ret_group,
|
||||
add_volumes = vol1.id,
|
||||
remove_volumes = vol2.id)
|
||||
add_volumes=vol1.id,
|
||||
remove_volumes=vol2.id)
|
||||
mock_policy.assert_called_with(self.ctxt, 'update', mock.ANY)
|
||||
|
||||
@mock.patch('cinder.objects.GroupSnapshot.get_by_id')
|
||||
@ -411,35 +411,35 @@ class GroupAPITestCase(test.TestCase):
|
||||
|
||||
grp_snap = utils.create_group_snapshot(
|
||||
self.ctxt, fake.GROUP_ID,
|
||||
group_type_id = fake.GROUP_TYPE_ID,
|
||||
status = fields.GroupStatus.CREATING)
|
||||
group_type_id=fake.GROUP_TYPE_ID,
|
||||
status=fields.GroupStatus.CREATING)
|
||||
mock_group_snap_get.return_value = grp_snap
|
||||
vol1 = utils.create_volume(
|
||||
self.ctxt,
|
||||
availability_zone = 'nova',
|
||||
volume_type_id = vol_type['id'],
|
||||
group_id = fake.GROUP_ID)
|
||||
availability_zone='nova',
|
||||
volume_type_id=vol_type['id'],
|
||||
group_id=fake.GROUP_ID)
|
||||
|
||||
snap = utils.create_snapshot(self.ctxt, vol1.id,
|
||||
volume_type_id = vol_type['id'],
|
||||
status = fields.GroupStatus.CREATING)
|
||||
volume_type_id=vol_type['id'],
|
||||
status=fields.GroupStatus.CREATING)
|
||||
mock_snap_get_all.return_value = [snap]
|
||||
|
||||
name = "test_group"
|
||||
description = "this is a test group"
|
||||
grp = utils.create_group(self.ctxt, group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [vol_type['id']],
|
||||
availability_zone = 'nova',
|
||||
name = name, description = description,
|
||||
group_snapshot_id = grp_snap.id,
|
||||
status = fields.GroupStatus.CREATING)
|
||||
grp = utils.create_group(self.ctxt, group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[vol_type['id']],
|
||||
availability_zone='nova',
|
||||
name=name, description=description,
|
||||
group_snapshot_id=grp_snap.id,
|
||||
status=fields.GroupStatus.CREATING)
|
||||
|
||||
vol2 = utils.create_volume(
|
||||
self.ctxt,
|
||||
availability_zone = grp.availability_zone,
|
||||
volume_type_id = vol_type['id'],
|
||||
group_id = grp.id,
|
||||
snapshot_id = snap.id)
|
||||
availability_zone=grp.availability_zone,
|
||||
volume_type_id=vol_type['id'],
|
||||
group_id=grp.id,
|
||||
snapshot_id=snap.id)
|
||||
mock_volume_get_all.return_value = [vol2]
|
||||
|
||||
self.group_api._create_group_from_group_snapshot(self.ctxt, grp,
|
||||
@ -447,11 +447,11 @@ class GroupAPITestCase(test.TestCase):
|
||||
|
||||
mock_volume_api_create.assert_called_once_with(
|
||||
self.ctxt, 1, None, None,
|
||||
availability_zone = grp.availability_zone,
|
||||
group_snapshot = grp_snap,
|
||||
group = grp,
|
||||
snapshot = snap,
|
||||
volume_type = vol_type)
|
||||
availability_zone=grp.availability_zone,
|
||||
group_snapshot=grp_snap,
|
||||
group=grp,
|
||||
snapshot=snap,
|
||||
volume_type=vol_type)
|
||||
|
||||
mock_rpc_create_group_from_src.assert_called_once_with(
|
||||
self.ctxt, grp, grp_snap)
|
||||
@ -481,43 +481,43 @@ class GroupAPITestCase(test.TestCase):
|
||||
name='fake_volume_type')
|
||||
mock_get_volume_type.return_value = vol_type
|
||||
|
||||
grp = utils.create_group(self.ctxt, group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [vol_type['id']],
|
||||
availability_zone = 'nova',
|
||||
status = fields.GroupStatus.CREATING)
|
||||
grp = utils.create_group(self.ctxt, group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[vol_type['id']],
|
||||
availability_zone='nova',
|
||||
status=fields.GroupStatus.CREATING)
|
||||
mock_group_get.return_value = grp
|
||||
|
||||
vol = utils.create_volume(
|
||||
self.ctxt,
|
||||
availability_zone = grp.availability_zone,
|
||||
volume_type_id = fake.VOLUME_TYPE_ID,
|
||||
group_id = grp.id)
|
||||
availability_zone=grp.availability_zone,
|
||||
volume_type_id=fake.VOLUME_TYPE_ID,
|
||||
group_id=grp.id)
|
||||
mock_volume_get_all.return_value = [vol]
|
||||
|
||||
grp2 = utils.create_group(self.ctxt,
|
||||
group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [vol_type['id']],
|
||||
availability_zone = 'nova',
|
||||
source_group_id = grp.id,
|
||||
status = fields.GroupStatus.CREATING)
|
||||
group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[vol_type['id']],
|
||||
availability_zone='nova',
|
||||
source_group_id=grp.id,
|
||||
status=fields.GroupStatus.CREATING)
|
||||
|
||||
vol2 = utils.create_volume(
|
||||
self.ctxt,
|
||||
availability_zone = grp.availability_zone,
|
||||
volume_type_id = vol_type['id'],
|
||||
group_id = grp2.id,
|
||||
source_volid = vol.id)
|
||||
availability_zone=grp.availability_zone,
|
||||
volume_type_id=vol_type['id'],
|
||||
group_id=grp2.id,
|
||||
source_volid=vol.id)
|
||||
|
||||
self.group_api._create_group_from_source_group(self.ctxt, grp2,
|
||||
grp.id)
|
||||
|
||||
mock_volume_api_create.assert_called_once_with(
|
||||
self.ctxt, 1, None, None,
|
||||
availability_zone = grp.availability_zone,
|
||||
source_group = grp,
|
||||
group = grp2,
|
||||
source_volume = vol,
|
||||
volume_type = vol_type)
|
||||
availability_zone=grp.availability_zone,
|
||||
source_group=grp,
|
||||
group=grp2,
|
||||
source_volume=vol,
|
||||
volume_type=vol_type)
|
||||
|
||||
mock_rpc_create_group_from_src.assert_called_once_with(
|
||||
self.ctxt, grp2, None, grp)
|
||||
@ -539,44 +539,44 @@ class GroupAPITestCase(test.TestCase):
|
||||
mock_create_from_snap):
|
||||
name = "test_group"
|
||||
description = "this is a test group"
|
||||
grp = utils.create_group(self.ctxt, group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova',
|
||||
name = name, description = description,
|
||||
status = fields.GroupStatus.AVAILABLE,)
|
||||
grp = utils.create_group(self.ctxt, group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[fake.VOLUME_TYPE_ID],
|
||||
availability_zone='nova',
|
||||
name=name, description=description,
|
||||
status=fields.GroupStatus.AVAILABLE,)
|
||||
|
||||
vol1 = utils.create_volume(
|
||||
self.ctxt,
|
||||
availability_zone = 'nova',
|
||||
volume_type_id = fake.VOLUME_TYPE_ID,
|
||||
group_id = grp.id)
|
||||
availability_zone='nova',
|
||||
volume_type_id=fake.VOLUME_TYPE_ID,
|
||||
group_id=grp.id)
|
||||
|
||||
snap = utils.create_snapshot(self.ctxt, vol1.id,
|
||||
volume_type_id = fake.VOLUME_TYPE_ID,
|
||||
status = fields.SnapshotStatus.AVAILABLE)
|
||||
volume_type_id=fake.VOLUME_TYPE_ID,
|
||||
status=fields.SnapshotStatus.AVAILABLE)
|
||||
mock_snap_get_all.return_value = [snap]
|
||||
|
||||
grp_snap = utils.create_group_snapshot(
|
||||
self.ctxt, grp.id,
|
||||
group_type_id = fake.GROUP_TYPE_ID,
|
||||
status = fields.GroupStatus.AVAILABLE)
|
||||
group_type_id=fake.GROUP_TYPE_ID,
|
||||
status=fields.GroupStatus.AVAILABLE)
|
||||
mock_group_snap_get.return_value = grp_snap
|
||||
|
||||
grp2 = utils.create_group(self.ctxt,
|
||||
group_type_id = fake.GROUP_TYPE_ID,
|
||||
volume_type_ids = [fake.VOLUME_TYPE_ID],
|
||||
availability_zone = 'nova',
|
||||
name = name, description = description,
|
||||
status = fields.GroupStatus.CREATING,
|
||||
group_snapshot_id = grp_snap.id)
|
||||
group_type_id=fake.GROUP_TYPE_ID,
|
||||
volume_type_ids=[fake.VOLUME_TYPE_ID],
|
||||
availability_zone='nova',
|
||||
name=name, description=description,
|
||||
status=fields.GroupStatus.CREATING,
|
||||
group_snapshot_id=grp_snap.id)
|
||||
|
||||
with mock.patch('cinder.objects.Group') as mock_group:
|
||||
mock_group.return_value = grp2
|
||||
with mock.patch('cinder.objects.group.Group.create'):
|
||||
ret_group = self.group_api.create_from_src(
|
||||
self.ctxt, name, description,
|
||||
group_snapshot_id = grp_snap.id,
|
||||
source_group_id = None)
|
||||
group_snapshot_id=grp_snap.id,
|
||||
source_group_id=None)
|
||||
self.assertEqual(grp2.obj_to_primitive(),
|
||||
ret_group.obj_to_primitive())
|
||||
mock_create_from_snap.assert_called_once_with(
|
||||
|
@ -2424,7 +2424,7 @@ class TestHPELeftHandISCSIDriver(HPELeftHandBaseDriver, test.TestCase):
|
||||
client=mock_client,
|
||||
volume=snapshot['volume'],
|
||||
snapshot=snapshot,
|
||||
target_snap_name= existing_ref['source-name'],
|
||||
target_snap_name=existing_ref['source-name'],
|
||||
existing_ref=existing_ref)
|
||||
|
||||
mock_client.assert_has_calls(
|
||||
@ -2439,7 +2439,7 @@ class TestHPELeftHandISCSIDriver(HPELeftHandBaseDriver, test.TestCase):
|
||||
client=mock_client,
|
||||
volume=snapshot['volume'],
|
||||
snapshot=snapshot,
|
||||
target_snap_name= existing_ref['source-name'],
|
||||
target_snap_name=existing_ref['source-name'],
|
||||
existing_ref=existing_ref)
|
||||
|
||||
# Non existence of parent volume of a snapshot
|
||||
@ -2451,7 +2451,7 @@ class TestHPELeftHandISCSIDriver(HPELeftHandBaseDriver, test.TestCase):
|
||||
client=mock_client,
|
||||
volume=snapshot['volume'],
|
||||
snapshot=snapshot,
|
||||
target_snap_name= existing_ref['source-name'],
|
||||
target_snap_name=existing_ref['source-name'],
|
||||
existing_ref=existing_ref)
|
||||
|
||||
# Non existence of a snapshot raises HTTPNotFound exception
|
||||
@ -2462,7 +2462,7 @@ class TestHPELeftHandISCSIDriver(HPELeftHandBaseDriver, test.TestCase):
|
||||
client=mock_client,
|
||||
volume=snapshot['volume'],
|
||||
snapshot=snapshot,
|
||||
target_snap_name= existing_ref['source-name'],
|
||||
target_snap_name=existing_ref['source-name'],
|
||||
existing_ref=existing_ref)
|
||||
|
||||
def test_manage_existing_snapshot_get_size_invalid_input(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user