diff --git a/netbox_acls/forms/models.py b/netbox_acls/forms/models.py index a8800e5..38f7c0c 100644 --- a/netbox_acls/forms/models.py +++ b/netbox_acls/forms/models.py @@ -14,7 +14,13 @@ from utilities.forms import ( DynamicModelChoiceField, DynamicModelMultipleChoiceField, ) -from virtualization.models import VirtualMachine, VMInterface +from virtualization.models import ( + Cluster, + ClusterGroup, + ClusterType, + VirtualMachine, + VMInterface, +) from ..models import ( AccessList, @@ -59,6 +65,7 @@ class AccessListForm(NetBoxModelForm): Requires a device, a name, a type, and a default_action. """ + # Device selector region = DynamicModelChoiceField( queryset=Region.objects.all(), required=False, @@ -85,21 +92,49 @@ class AccessListForm(NetBoxModelForm): "site_id": "$site", }, ) + + # Virtual Chassis selector virtual_chassis = DynamicModelChoiceField( queryset=VirtualChassis.objects.all(), required=False, label="Virtual Chassis", ) + + # Virtual Machine selector + cluster_type = DynamicModelChoiceField( + queryset=ClusterType.objects.all(), + required=False, + ) + + cluster_group = DynamicModelChoiceField( + queryset=ClusterGroup.objects.all(), + required=False, + query_params={ + "type_id": "$cluster_type", + }, + ) + + cluster = DynamicModelChoiceField( + queryset=Cluster.objects.all(), + required=False, + query_params={ + "type_id": "$cluster_type", + "group_id": "$cluster_group", + }, + ) + virtual_machine = DynamicModelChoiceField( queryset=VirtualMachine.objects.all(), required=False, label="Virtual Machine", + query_params={ + "cluster_type_id": "$cluster_type", + "cluster_group_id": "$cluster_group", + "cluster_id": "$cluster", + }, ) + comments = CommentField() - tags = DynamicModelMultipleChoiceField( - queryset=Tag.objects.all(), - required=False, - ) class Meta: model = AccessList diff --git a/netbox_acls/templates/netbox_acls/accesslist_edit.html b/netbox_acls/templates/netbox_acls/accesslist_edit.html index 64b46cb..a197daa 100644 --- a/netbox_acls/templates/netbox_acls/accesslist_edit.html +++ b/netbox_acls/templates/netbox_acls/accesslist_edit.html @@ -67,6 +67,9 @@ {% render_field form.virtual_chassis %}