def _get_members_by_attrs(unique=True, **attrs):
    members = neutron.list_members(**attrs)
    if unique and len(members.get('members', [])) > 1:
        raise exceptions.DuplicatedResourceException(
            "Multiple Neutron members exist for the params {0} ".format(
                ', '.join(['{0}={1}'.format(k, v) for k, v in attrs.items()])))
    return members['members']
def _get_subnets_by_attrs(unique=True, **attrs):
    subnets = neutron.list_subnets(**attrs)
    if unique and len(subnets.get('subnets',
                                  [])) > 2:  # subnets for IPv4 and/or IPv6
        raise exceptions.DuplicatedResourceException(
            "Multiple Neutron subnets exist for the params {0} ".format(
                ', '.join(['{0}={1}'.format(k, v) for k, v in attrs.items()])))
    return subnets['subnets']