'Check if volume is suitable for storage assisted (pool) migration.
:param device_id: the volume device id
:param host: the host dict
:param source_array: the volume\'s current array serial number
:param source_srp: the volume\'s current pool name
:param volume_name: the name of the volume to be migrated
:param do_change_compression: do change compression
:returns: boolean -- True/False
:returns: string -- targetSlo
:returns: string -- targetWorkload'

def _is_valid_for_storage_assisted_migration(self, device_id, host, source_array, source_srp, volume_name, do_change_compression):

    false_ret = (False, None, None)
    host_info = host['host']
    LOG.debug('Target    host    is    :    %(info)s.', {'info': host_info})
    try:
        info_detail = host_info.split('#')
        pool_details = info_detail[1].split('+')
        target_slo = pool_details[0]
        target_workload = pool_details[1]
        target_srp = pool_details[2]
        target_array_serial = pool_details[3]
    except IndexError:
        LOG.error('Error    parsing    array,    pool,    SLO    and    workload.')
        return false_ret
    if (target_array_serial not in source_array):
        LOG.error('The    source    array:    %(source_array)s    does    not    match    the    target    array:    %(target_array)s    -    skipping    storage-assisted    migration.', {'source_array': source_array, 'target_array': target_array_serial})
        return false_ret
    if (target_srp not in source_srp):
        LOG.error('Only    SLO/workload    migration    within    the    same    SRP    Pool    is    supported    in    this    version.    The    source    pool:    %(source_pool_name)s    does    not    match    the    target    array:    %(target_pool)s.    Skipping    storage-assisted    migration.', {'source_pool_name': source_srp, 'target_pool': target_srp})
        return false_ret
    found_storage_group_list = self.rest.get_storage_groups_from_volume(source_array, device_id)
    if (not found_storage_group_list):
        LOG.warning('Volume:    %(volume_name)s    does    not    currently    belong    to    any    storage    groups.', {'volume_name': volume_name})
    else:
        for found_storage_group_name in found_storage_group_list:
            emc_fast_setting = self.provision.get_slo_workload_settings_from_storage_group(source_array, found_storage_group_name)
            target_combination = ('%(targetSlo)s+%(targetWorkload)s' % {'targetSlo': target_slo, 'targetWorkload': target_workload})
            if (target_combination == emc_fast_setting):
                if (not do_change_compression):
                    LOG.warning('No    action    required.    Volume:    %(volume_name)s    is    already    part    of    slo/workload    combination:    %(targetCombination)s.', {'volume_name': volume_name, 'targetCombination': target_combination})
                    return false_ret
    return (True, target_slo, target_workload)
