mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #2113: Adjust NAPALM settings with headers
This commit is contained in:
@ -396,13 +396,29 @@ class DeviceViewSet(CustomFieldModelViewSet):
|
|||||||
napalm_methods = request.GET.getlist('method')
|
napalm_methods = request.GET.getlist('method')
|
||||||
response = OrderedDict([(m, None) for m in napalm_methods])
|
response = OrderedDict([(m, None) for m in napalm_methods])
|
||||||
ip_address = str(device.primary_ip.address.ip)
|
ip_address = str(device.primary_ip.address.ip)
|
||||||
|
username = settings.NAPALM_USERNAME
|
||||||
|
password = settings.NAPALM_PASSWORD
|
||||||
optional_args = settings.NAPALM_ARGS.copy()
|
optional_args = settings.NAPALM_ARGS.copy()
|
||||||
if device.platform.napalm_args is not None:
|
if device.platform.napalm_args is not None:
|
||||||
optional_args.update(device.platform.napalm_args)
|
optional_args.update(device.platform.napalm_args)
|
||||||
|
|
||||||
|
# Update NAPALM parameters according to the provided headers
|
||||||
|
for header in request.headers:
|
||||||
|
if header[:7].lower() != 'napalm-':
|
||||||
|
continue
|
||||||
|
|
||||||
|
key = header[7:]
|
||||||
|
if key.lower() == 'username':
|
||||||
|
username = request.headers[header]
|
||||||
|
elif key.lower() == 'password':
|
||||||
|
password = request.headers[header]
|
||||||
|
elif key:
|
||||||
|
optional_args[key.lower()] == request.headers[header]
|
||||||
|
|
||||||
d = driver(
|
d = driver(
|
||||||
hostname=ip_address,
|
hostname=ip_address,
|
||||||
username=settings.NAPALM_USERNAME,
|
username=username,
|
||||||
password=settings.NAPALM_PASSWORD,
|
password=password,
|
||||||
timeout=settings.NAPALM_TIMEOUT,
|
timeout=settings.NAPALM_TIMEOUT,
|
||||||
optional_args=optional_args
|
optional_args=optional_args
|
||||||
)
|
)
|
||||||
|
Reference in New Issue
Block a user