#!/usr/bin/python # # Maximilian Wilhelm # -- Sun 22 Apr 2018 11:10:55 AM CEST # from collections import namedtuple from ipcalc import IP import json import requests _headers = { 'Accept': 'application/json', 'Authorization' : 'Token ...', } base_url = "https://netbox.as201701.net/api/" def _query (url, single_value = False): req = requests.get (base_url + url, headers = _headers) res = req.json () if single_value: return res return res['results'] def _post (url, data): req = requests.post (base_url + url, headers = _headers, data = data) res = req.json () return res def _put (url, data): req = requests.put (base_url + url, headers = _headers, data = data) res = req.json () return res def add_cpe (asn, ip, org): data = { "name" : "%s-%s" % (org, ip), "device_type": "5", "device_role": "4", "tenant": "1", "site": "4", "status": "1", } res = _post ("dcim/devices/", data) dev_id = res['id'] print ("Added device with ID %s..." % dev_id) ifaces = _query ("dcim/interfaces/?device_id=%s&name=eth0" % dev_id) eth0_id = ifaces[0]['id'] print ("It's 'eth0' has ID %s..." % eth0_id) data = { "address": "%s/32" % ip, "status": "1", "tenant": "1", "interface": eth0_id, } res = _post ("ipam/ip-addresses/", data) ip_id = res['id'] data = { "device_type": "5", "device_role": "4", "site": "4", "primary_ip4" : ip_id, } res = _put ("dcim/devices/%s/" % dev_id, data) add_cpe (65132, "1.2.3.4", "ffho")