コード例 #1
0
def whois(config, poids):
    """ simulate a whois lookup

        supports

            as<ASN> : query by AS

            ixlans<net id> : query networks on an IX
    """
    pdb = client.PeeringDB(conf_dir=config)
    fmt = WhoisFormat()

    for poid in poids:
        (typ, pk) = util.split_ref(poid)
        (typ, data) = pdb.whois(typ, pk)
        fmt.print(typ, data[0])
コード例 #2
0
ファイル: cli.py プロジェクト: mahtin/peeringdb-py
def whois(config, poids):
    """ simulate a whois lookup

        supports

            as<ASN> : query by AS

            ixlans<net id> : query networks on an IX
    """
    pdb = client.PeeringDB(conf_dir=config)
    fmt = WhoisFormat()

    for poid in poids:
        (typ, pk) = util.split_ref(poid)
        (typ, data) = pdb.whois(typ, pk)
        fmt.print(typ, data[0])
コード例 #3
0
    def handle(self, *args, **options):
        log = logging.getLogger("pdb.script.whois")

        # FIXME - ignore multiple args for now
        args = options.get("ref")

        try:
            (ref_tag, pk) = util.split_ref(args)
        except ValueError:
            log.error("Unknown query type '%s'" % (args))
            return
            # TODO
            raise CommandError("unk query")

        model = None

        # TODO needs the client whois typ resolver in a better place for reuse
        #      probably easiest to just map reftag to pk name
        if ref_tag in models.REFTAG_MAP:
            model = models.REFTAG_MAP[ref_tag]
            Serializer = serializers.REFTAG_MAP[ref_tag]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(pk=pk)

        elif ref_tag == "as":
            model = models.REFTAG_MAP["net"]
            Serializer = serializers.REFTAG_MAP["net"]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(asn=pk)

        #            data = cls(obj).data

        # TODO doesn't work on client
        # elif ref_tag == 'ixnets':

        if not model:
            msg = f"Unknown ref tag: {ref_tag}"
            log.error("Unknown ref tag: %s" % ref_tag)
            raise ValueError(msg)

        data = Serializer(obj, context={"user": AnonymousUser()}).data
        applicator = APIPermissionsApplicator(AnonymousUser())
        data = applicator.apply(data)
        fmt = WhoisFormat()
        fmt.print(obj._handleref.tag, data)
コード例 #4
0
    def handle(config, poids, **_):
        client = Client(config)

        def get(res, **kwargs):
            objs = client.fetch_all(res, depth=2, **kwargs)
            if not objs:
                raise peeringdb.sync.NotFoundException
            return objs

        fmt = WhoisFormat()
        for poid in poids:
            (tag, key) = util.split_ref(poid)
            try:
                data = _lookup_tag(tag, key, get)
            except peeringdb.sync.NotFoundException:
                print(f"Not found: resource for {tag}={key}", file=sys.stderr)
                return 1
            fmt.display(tag, data[0])
コード例 #5
0
ファイル: pdb_whois.py プロジェクト: tylerjharden/peeringdb
    def handle(self, *args, **options):
        log = logging.getLogger('pdb.script.whois')

        # FIXME - ignore multiple args for now
        args = options.get("ref")

        try:
            (ref_tag, pk) = util.split_ref(args)
        except ValueError:
            log.error("Unknown query type '%s'" % (args))
            return
            # TODO
            raise CommandError('unk query')

        model = None

        # TODO needs the client whois typ resolver in a better place for reuse
        #      probably easiest to just map reftag to pk name
        if ref_tag in models.REFTAG_MAP:
            model = models.REFTAG_MAP[ref_tag]
            Serializer = serializers.REFTAG_MAP[ref_tag]
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(pk=pk)

        elif ref_tag == 'as':
            model = models.REFTAG_MAP['net']
            Serializer = serializers.REFTAG_MAP['net']
            obj = Serializer.prefetch_related(model.objects, None,
                                              depth=2).get(asn=pk)

#            data = cls(obj).data

# TODO doesn't work on client
# elif ref_tag == 'ixnets':

        if not model:
            msg = "Unknown ref tag: {}".format(ref_tag)
            log.error("Unknown ref tag: %s" % ref_tag)
            raise ValueError(msg)

        data = Serializer(obj).data
        fmt = WhoisFormat()
        fmt.print(obj._handleref.tag, data)