'Deletes an EMC volume.'

def delete_volume(self, volume):

    async_migrate = utils.is_async_migrate_enabled(volume)
    self.cleanup_lun_replication(volume)
    try:
        self.client.delete_lun(volume.name, force=self.force_delete_lun_in_sg)
    except storops_ex.VNXLunUsedByFeatureError:
        if async_migrate:
            self.client.cleanup_async_lun(name=volume.name, force=self.force_delete_lun_in_sg)
        else:
            raise
    except (storops_ex.VNXLunHasSnapError, storops_ex.VNXLunHasSnapMountPointError):
        self.client.delay_delete_lun(volume.name)
    if async_migrate:
        self.client.delete_snapshot(utils.construct_snap_name(volume))
