'Rollback action for volumes with an associated service level.
We need to be able to return the volume to the default storage group
if anything has gone wrong. The volume can also potentially belong to
a storage group that is not the default depending on where
the exception occurred. We also may need to clean up any unused
initiator groups.
:param serial_number: the array serial number
:param device_id: the device id
:param rollback_dict: the rollback dict
:returns: error message -- string, or None
:raises: VolumeBackendAPIException'

def check_if_rollback_action_for_masking_required(self, serial_number, device_id, rollback_dict):

    message = None
    self._check_ig_rollback(serial_number, rollback_dict['init_group_name'], rollback_dict['connector'])
    try:
        found_sg_name = self.rest.get_storage_groups_from_volume(serial_number, rollback_dict['device_id'])
        if (not found_sg_name):
            error_message = self._check_adding_volume_to_storage_group(serial_number, device_id, rollback_dict['default_sg_name'], rollback_dict[utils.VOL_NAME], rollback_dict[utils.EXTRA_SPECS])
            if error_message:
                LOG.error(error_message)
            message = _('Rollback')
        elif (('isLiveMigration' in rollback_dict) and (rollback_dict['isLiveMigration'] is True)):
            self.failed_live_migration(rollback_dict, found_sg_name, rollback_dict[utils.EXTRA_SPECS])
        else:
            LOG.info('The    storage    group    found    is    %(found_sg_name)s.', {'found_sg_name': found_sg_name})
            if (found_sg_name != rollback_dict['default_sg_name']):
                self.remove_and_reset_members(serial_number, device_id, rollback_dict['volume_name'], rollback_dict['extra_specs'])
                message = _('Rollback    -    Volume    in    another    storage    group    besides    default    storage    group.')
    except Exception as e:
        error_message = (_('Rollback    for    Volume:    %(volume_name)s    has    failed.    Please    contact    your    system    administrator    to    manually    return    your    volume    to    the    default    storage    group    for    its    slo.    Exception    received:    %(e)s') % {'volume_name': rollback_dict['volume_name'], 'e': six.text_type(e)})
        LOG.exception(error_message)
        raise exception.VolumeBackendAPIException(data=error_message)
    return message
