'find lss from existing pprc paths and pool id for it.
the format of pool_lss_pair returned is as below:
{\'source\': (pid, lss), \'target\': (pid, lss)}'

def find_from_pprc_paths(self, specified_lss=None, excluded_lss=None):

    (state, paths) = self._filter_pprc_paths(specified_lss)
    if (state != PPRC_PATH_HEALTHY):
        self.check_physical_links()
        return (state, None)
    if excluded_lss:
        paths = [p for p in paths if (p['source_lss_id'] not in excluded_lss)]
    if (not specified_lss):
        paths = [p for p in paths if (p['source_lss_id'] not in self._source_helper.backend['lss_ids_for_cg'])]
    candidates = []
    source_lss_set = set((p['source_lss_id'] for p in paths))
    for lss in source_lss_set:
        src_luns = self._source_helper.get_lun_number_in_lss(lss)
        if ((src_luns == helper.LSS_VOL_SLOTS) and (not specified_lss)):
            continue
        spec_paths = [p for p in paths if (p['source_lss_id'] == lss)]
        for path in spec_paths:
            try:
                tgt_luns = self._target_helper.get_lun_number_in_lss(path['target_lss_id'])
            except restclient.APIException:
                LOG.error("Target    LSS    %s    in    PPRC    path    may    doesn't    exist    although    PPRC    path    is    available.", path['target_lss_id'])
                tgt_luns = 0
            candidates.append((path['source_lss_id'], path['target_lss_id'], (src_luns + tgt_luns)))
    if (not candidates):
        return (PPRC_PATH_FULL, None)
    else:
        (src_lss, tgt_lss, num) = sorted(candidates, key=(lambda c: c[2]))[0]
        return (PPRC_PATH_HEALTHY, {'source': (self._source_helper.get_pool(src_lss), src_lss), 'target': (self._target_helper.get_pool(tgt_lss), tgt_lss)})
