Netbox Plugin to store textfiles(e.g. configs) alongside devices
Project description
netbox_textdatastore
Store raw text files for devices, like configuration files, unparsed command output or test results
TextData Object: ''' { "id": Int, # unique id "name": String, # Object Name, eg "device config" 'device': Device ID, # Device ID from Netbox 'hash': String, # Hash of your Text Data 'data': String, # Your text data, eg Device Configfile } '''
Example:
extend python-netbox
https://github.com/jagter/python-netbox
''' from netbox import NetBox as NetBoxOrig
class textdata(object):
def __init__(self, netbox_con):
self.netbox_con = netbox_con
def get_data(self, **kwargs):
return self.netbox_con.get('/plugins/textdata/data/', **kwargs)
def add_data(self, device, name, hash, data, **kwargs):
required_fields = {
"name": name,
'device': device,
'hash': hash,
'data': data,
}
print(required_fields)
return self.netbox_con.post(
'/plugins/textdata/data/',
required_fields,
**kwargs
)
def update_data_id(self, pk, **kwargs):
return self.netbox_con.patch(
'/plugins/textdata/data/',
pk,
**kwargs
)
class NetBox(NetBoxOrig):
def __init__(self, host, **kwargs):
super().__init__(host, **kwargs)
self.textdata = textdata(self.connection)
'''
use it in napalm
''' def store_config(task, obj, content): """store config to netbox"""
hasher = md5()
hasher.update(content.encode('utf-8'))
hash = hasher.hexdigest()
device_id = task.host.data["id"]
res = obj.netbox.textdata.get_data(
device_id=device_id,
name="device config"
)
if(len(res) > 0):
res = res[0]
if(res["hash"] == hash):
print("No change")
return
print(obj.netbox.textdata.update_data_id(
pk=res["pk"],
data=content,
hash=hash
))
return
print(obj.netbox.textdata.add_data(
device=device_id,
name="device config",
hash=hash,
data=content
))
def backup_config(task, obj): """ get config from devices"""
from nornir_napalm.plugins.tasks import napalm_get
device_config = task.run(task=napalm_get, getters=["config"])
task.run(
task=store_config,
obj=obj,
content=device_config.result["config"]["running"]
)
'''
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file netbox_textdatastore-0.0.5.tar.gz
.
File metadata
- Download URL: netbox_textdatastore-0.0.5.tar.gz
- Upload date:
- Size: 13.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b98503f30abe5af1f3047f720044d160b31d8336820574901fd6ecfdbcac4415 |
|
MD5 | 2a01be8dfd1261454b1d2d8afc16d49a |
|
BLAKE2b-256 | ff66021d4f5378455dd69970799a661183eaff86b9a338a28281d00264ee03c1 |
File details
Details for the file netbox_textdatastore-0.0.5-py3-none-any.whl
.
File metadata
- Download URL: netbox_textdatastore-0.0.5-py3-none-any.whl
- Upload date:
- Size: 15.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 32b4965ef7b66ed46b788b3aad67e43ba04006ec55debe61a961686fe7626283 |
|
MD5 | a1a7bef377e22251fc2381e689dae477 |
|
BLAKE2b-256 | 04ad9e6e5044df7e152763971ae5b7270dbd71a1c9ad06dabc76bafdff85a45c |