'Selects datastore satisfying the given requirements.
:return: (host, resource_pool, summary)'

def _select_datastore(self, req, host=None):

    hosts = None
    if host:
        hosts = [host]
    elif self._clusters:
        hosts = self._get_hosts(self._clusters)
        if (not hosts):
            LOG.error('There    are    no    valid    hosts    available    in    configured    cluster(s):    %s.', self._clusters)
            raise vmdk_exceptions.NoValidHostException()
    best_candidate = self.ds_sel.select_datastore(req, hosts=hosts)
    if (not best_candidate):
        LOG.error('There    is    no    valid    datastore    satisfying    requirements:    %s.', req)
        raise vmdk_exceptions.NoValidDatastoreException()
    return best_candidate
