mirror of
https://github.com/netbox-community/netbox-docker.git
synced 2024-11-22 07:53:46 +01:00
Merge branch 'MajesticFalcon-feature' into develop
This commit is contained in:
commit
f33c647f24
21
initializers/custom_links.yml
Normal file
21
initializers/custom_links.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
## Possible Choices:
|
||||||
|
## new_window:
|
||||||
|
## - True
|
||||||
|
## - False
|
||||||
|
## content_type:
|
||||||
|
## - device
|
||||||
|
## - site
|
||||||
|
## - any-other-content-type
|
||||||
|
##
|
||||||
|
## Examples:
|
||||||
|
|
||||||
|
# - name: link_to_repo
|
||||||
|
# text: 'Link to Netbox Docker'
|
||||||
|
# url: 'https://github.com/netbox-community/netbox-docker'
|
||||||
|
# new_window: False
|
||||||
|
# content_type: device
|
||||||
|
# - name: link_to_localhost
|
||||||
|
# text: 'Link to localhost'
|
||||||
|
# url: 'http://localhost'
|
||||||
|
# new_window: True
|
||||||
|
# content_type: device
|
27
initializers/webhooks.yml
Normal file
27
initializers/webhooks.yml
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
## Possible Choices:
|
||||||
|
## object_types:
|
||||||
|
## - device
|
||||||
|
## - site
|
||||||
|
## - any-other-content-type
|
||||||
|
## types:
|
||||||
|
## - type_create
|
||||||
|
## - type_update
|
||||||
|
## - type_delete
|
||||||
|
## Examples:
|
||||||
|
|
||||||
|
# - name: device_creation
|
||||||
|
# payload_url: 'http://localhost:8080'
|
||||||
|
# object_types:
|
||||||
|
# - device
|
||||||
|
# - cable
|
||||||
|
# type_create: True
|
||||||
|
# - name: device_update
|
||||||
|
# payload_url: 'http://localhost:8080'
|
||||||
|
# object_types:
|
||||||
|
# - device
|
||||||
|
# type_update: True
|
||||||
|
# - name: device_delete
|
||||||
|
# payload_url: 'http://localhost:8080'
|
||||||
|
# object_types:
|
||||||
|
# - device
|
||||||
|
# type_delete: True
|
29
startup_scripts/280_custom_links.py
Normal file
29
startup_scripts/280_custom_links.py
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from extras.models import CustomLink
|
||||||
|
from startup_script_utils import load_yaml
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
custom_links = load_yaml('/opt/netbox/initializers/custom_links.yml')
|
||||||
|
|
||||||
|
if custom_links is None:
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
def get_content_type_id(content_type):
|
||||||
|
try:
|
||||||
|
return ContentType.objects.get(model=content_type).id
|
||||||
|
except ContentType.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
for link in custom_links:
|
||||||
|
content_type = link.pop('content_type')
|
||||||
|
link['content_type_id'] = get_content_type_id(content_type)
|
||||||
|
if link['content_type_id'] is None:
|
||||||
|
print("⚠️ Unable to create Custom Link '{0}': The content_type '{1}' is unknown".format(link.name, content_type))
|
||||||
|
continue
|
||||||
|
|
||||||
|
custom_link, created = CustomLink.objects.get_or_create(**link)
|
||||||
|
if created:
|
||||||
|
print("🔗 Created Custom Link '{0}'".format(custom_link.name))
|
34
startup_scripts/290_webhooks.py
Normal file
34
startup_scripts/290_webhooks.py
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
from django.contrib.contenttypes.models import ContentType
|
||||||
|
from extras.models import Webhook
|
||||||
|
from startup_script_utils import load_yaml
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
webhooks = load_yaml('/opt/netbox/initializers/webhooks.yml')
|
||||||
|
|
||||||
|
if webhooks is None:
|
||||||
|
sys.exit()
|
||||||
|
|
||||||
|
|
||||||
|
def get_content_type_id(hook_name, content_type):
|
||||||
|
try:
|
||||||
|
return ContentType.objects.get(model=content_type).id
|
||||||
|
except ContentType.DoesNotExist as ex:
|
||||||
|
print("⚠️ Webhook '{0}': The object_type '{1}' is unknown.".format(hook_name, content_type))
|
||||||
|
raise ex
|
||||||
|
|
||||||
|
|
||||||
|
for hook in webhooks:
|
||||||
|
obj_types = hook.pop('object_types')
|
||||||
|
|
||||||
|
try:
|
||||||
|
obj_type_ids = [get_content_type_id(hook['name'], obj) for obj in obj_types]
|
||||||
|
except ContentType.DoesNotExist:
|
||||||
|
continue
|
||||||
|
|
||||||
|
webhook, created = Webhook.objects.get_or_create(**hook)
|
||||||
|
if created:
|
||||||
|
webhook.content_types.set(obj_type_ids)
|
||||||
|
webhook.save()
|
||||||
|
|
||||||
|
print("🪝 Created Webhook {0}".format(webhook.name))
|
Loading…
Reference in New Issue
Block a user