Package: irr-generator
IRR GeneratorGenerate IRR Route Objects at scale quickly and without errorLightweight Python script designed to automate the generation of IRR Objects. Essential for the toolkit of any Network Engineers maintaining route objects.HowBy passing a list of Supernets & Origin ASNs, IRR Generator will auto expand the Supernet and append its Subnets for route object generation.InstallationUse the package managerpipto install IRR Generator.pipinstallirr-generatorUsageCLIIRR Generator can be run directly on the CLI viairrgenerator. In doing so, a full or relative path to a file containing the prefix data must be passed using the--fileoption (this will default tosubnets.txtlocally otherwise). The response will be directly printed to terminal for easy copy and paste.When running IRR Generator via the CLI,NOTIFY_EMAIL,MAINT_OBJECT&IRR_SOURCEcan directly be overriden at the top ofgenerate_irr.py. Alternatively, arguments can be passed via the CLI.optional arguments:
  -h, --help            show this help message and exit
  -f FILE_NAME, --file_name FILE_NAME
                        Full or Relative path to file
  -e NOTIFY_EMAIL, --notify_email NOTIFY_EMAIL
                        Notify email address set in route object
  -m MAINT_OBJECT, --maint_object MAINT_OBJECT
                        Maintainer set in route object
  -s IRR_SOURCE, --irr_source IRR_SOURCE
                        IRR Source set in route objectExample(test-env)╭─jamesditrapani@maximus~/development/irr-generator
╰─$irrgenerator-fsubnets.txt-e"myemail@example.com"-m"MAINT-04"-s"NTT"route:1.1.1.0/24
descr:IANA-ASSIGNED
origin:AS444
notify:myemail@example.com
mnt-by:MAINT-04
changed:myemail@example.com20210111source:NTTPython APIIRR Generator can act as a Python API if needed. When instantiatingIRRGenerator(), some form of data must be passed. This can be via a relative/full file path expected infile_nameor via a dictionary of prefix/asn combos expected inprefixes. On init of theIRRGenerator()class it is also important that you pass variables to defineMAINT_OBJECT,NOTIFY_EMAIL&IRR_SOURCEthat are used when returning formatted data.ExamplesFile Examplefromirrgenerator.irrgeneratorimportIRRGeneratorirr=IRRGenerator(file_name='subnets.txt')irr.NOTIFY_EMAIL='example1@example.com'irr.MAINT_OBJECT='MY-MAINT-01'irr.IRR_SOURCE='RADB'response=irr.create()print(response){'1.1.1.0/24':{1:{'route':'1.1.1.0/24','descr':'OVERTHEWIRE-AS-AP','origin':'AS9268','notify':'noc@example.com','mnt-by':'MAINT-EXAMPLE-01','changed':'noc@example.com 20210111','source':'EXAMPLE-NTT'}}}Dict Examplefromirrgenerator.irrgeneratorimportIRRGeneratormyprefixes={'1.1.1.0/24':'AS111','2.2.2.0/23':'AS123'}irr=IRRGenerator(prefixes=myprefixes)irr.NOTIFY_EMAIL='test@example.com'irr.MAINT_OBJECT='MY-MAINT-02'irr.IRR_SOURCE='NTT'response=irr.create()print(response){'1.1.1.0/24':{1:{'route':'1.1.1.0/24','descr':'BOSTONU-AS','origin':'AS111','notify':'noc@example.com','mnt-by':'MAINT-EXAMPLE-01','changed':'noc@example.com 20210111','source':'EXAMPLE-NTT'}},'2.2.2.0/23':{1:{'route':'2.2.2.0/23','descr':'LOGAIRCOMNET-AS','origin':'AS123','notify':'noc@example.com','mnt-by':'MAINT-EXAMPLE-01','changed':'noc@example.com 20210111','source':'EXAMPLE-NTT'},2:{'route':'2.2.2.0/24','descr':'LOGAIRCOMNET-AS','origin':'AS123','notify':'noc@example.com','mnt-by':'MAINT-EXAMPLE-01','changed':'noc@example.com 20210111','source':'EXAMPLE-NTT'},3:{'route':'2.2.3.0/24','descr':'LOGAIRCOMNET-AS','origin':'AS123','notify':'noc@example.com','mnt-by':'MAINT-EXAMPLE-01','changed':'noc@example.com 20210111','source':'EXAMPLE-NTT'}}}Response Schema{'prefix/cidr':{int:{'route':str,'descr':str,'origin':str,'notify':str,'mnt-by':str,'changed':str,'source':str}}}Release History0.0.4BetaMetaJames Di Trapani –@jamesditrapani– james[at]ditrapani.com.auhttps://github.com/jamesditrapani/LicenseGPL 3.0