Skip to content

Commit 6c18a28

Browse files
committed
feat: Add BGP sessions tab to virtual machine view
- Implement VirtualMachineBGPSessionsView in [netbox_bgp/template_content.py]template_content.py ) as an ObjectChildrenView for displaying BGP sessions associated with a virtual machine
1 parent 0bf8f6e commit 6c18a28

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

netbox_bgp/template_content.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from netbox.plugins import PluginTemplateExtension
44
from netbox.views.generic import ObjectChildrenView
55
from utilities.views import ViewTab, register_model_view
6+
from virtualization.models import VirtualMachine
67

78
from .filtersets import BGPSessionFilterSet
89
from .models import BGPSession
@@ -112,6 +113,30 @@ def get_children(
112113
return BGPSession.objects.filter(tenant=parent)
113114

114115

116+
@register_model_view(VirtualMachine, name="bgp-sessions", path="bgp-sessions")
117+
class VirtualMachineBGPSessionsView(generic.ObjectChildrenView):
118+
"""View to display BGP sessions associated with a virtual machine."""
119+
120+
queryset = VirtualMachine.objects.all()
121+
child_model = BGPSession
122+
filterset = BGPSessionFilterSet
123+
table = BGPSessionTable
124+
template_name = "generic/object_children.html"
125+
hide_if_empty = False
126+
127+
tab = ViewTab(
128+
label="BGP Sessions",
129+
badge=lambda obj: BGPSession.objects.filter(virtualmachine=obj).count(),
130+
permission="netbox_bgp.view_bgpsession",
131+
)
132+
133+
def get_children(
134+
self, request: HttpRequest, parent: VirtualMachine
135+
) -> QuerySet[BGPSession]:
136+
"""Get BGP sessions for the virtual machine."""
137+
return BGPSession.objects.filter(virtualmachine=parent)
138+
139+
115140
# Register only when device_ext_page is set to 'tab';
116141
class DeviceBGPSessionsView(generic.ObjectChildrenView):
117142
"""View to display BGP sessions associated with a device."""

0 commit comments

Comments
 (0)