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])
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)
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])
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)