mirror of
				https://github.com/peeringdb/peeringdb.git
				synced 2024-05-11 05:55:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from __future__ import print_function
 | |
| 
 | |
| import logging
 | |
| 
 | |
| from ._db_command import CommandError, DBCommand
 | |
| 
 | |
| from django.contrib.auth.models import AnonymousUser
 | |
| 
 | |
| from peeringdb.whois import WhoisFormat
 | |
| from peeringdb_server import models
 | |
| from peeringdb_server import serializers
 | |
| from django_handleref import util
 | |
| 
 | |
| 
 | |
| class Command(DBCommand):
 | |
|     args = '<customer id>'
 | |
|     help = 'command line whois'
 | |
| 
 | |
|     def add_arguments(self, parser):
 | |
|         parser.add_argument("ref", nargs="?", type=str)
 | |
| 
 | |
|     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, context={"user":AnonymousUser()}).data
 | |
|         fmt = WhoisFormat()
 | |
|         fmt. print(obj._handleref.tag, data)
 |