'Fails over the volumes on a host back and forth.
Driver needs to update following info for failed-over volume:
1. provider_location: update array details
2. replication_status: new status for replication-enabled volume
:param volumes: the list of volumes to be failed over
:param secondary_id: the target backend
:param groups: replication groups
:returns: secondary_id, volume_update_list, group_update_list'

def failover_host(self, volumes, secondary_id=None, groups=None):

    volume_update_list = []
    if (secondary_id != 'default'):
        if (not self.failover):
            self.failover = True
            if self.rep_config:
                secondary_id = self.rep_config['array']
        else:
            exception_message = (_("Backend    %(backend)s    is    already    failed    over.    If    you    wish    to    failback,    please    append    '--backend_id    default'    to    your    command.") % {'backend': self.configuration.safe_get('volume_backend_name')})
            LOG.error(exception_message)
            raise exception.VolumeBackendAPIException(data=exception_message)
    elif self.failover:
        self.failover = False
        secondary_id = None
    else:
        exception_message = (_("Cannot    failback    backend    %(backend)s-    backend    not    in    failed    over    state.    If    you    meant    to    failover,    please    omit    the    '--backend_id    default'    from    the    command") % {'backend': self.configuration.safe_get('volume_backend_name')})
        LOG.error(exception_message)
        raise exception.VolumeBackendAPIException(data=exception_message)
    for volume in volumes:
        extra_specs = self._initial_setup(volume)
        if self.utils.is_replication_enabled(extra_specs):
            model_update = self._failover_volume(volume, self.failover, extra_specs)
            volume_update_list.append(model_update)
        elif self.failover:
            volume_update_list.append({'volume_id': volume.id, 'updates': {'status': 'error'}})
        else:
            recovery = self.recover_volumes_on_failback(volume, extra_specs)
            volume_update_list.append(recovery)
    LOG.info('Failover    host    complete.')
    return (secondary_id, volume_update_list, [])
