class LocationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = Location field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id', 'parent_id'], ['tenant_group_id', 'tenant_id'], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group')) site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'group_id': '$site_group_id', }, label=_('Site')) parent_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'site_id': '$site_id', }, label=_('Parent')) tag = TagFilterField(model)
class BGPSessionFilterForm(BootstrapMixin, forms.ModelForm): q = forms.CharField(required=False, label='Search') remote_as = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), required=False, display_field='number', widget=APISelectMultiple(api_url='/api/plugins/bgp/asn/', )) local_as = DynamicModelMultipleChoiceField( queryset=ASN.objects.all(), required=False, display_field='number', widget=APISelectMultiple(api_url='/api/plugins/bgp/asn/', )) tenant = DynamicModelChoiceField(queryset=Tenant.objects.all(), required=False) status = forms.MultipleChoiceField(choices=SessionStatusChoices, required=False, widget=StaticSelect2Multiple()) import_policies = DynamicModelMultipleChoiceField( queryset=RoutingPolicy.objects.all(), required=False, widget=APISelectMultiple(api_url='/api/plugins/bgp/routing-policy/')) export_policies = DynamicModelMultipleChoiceField( queryset=RoutingPolicy.objects.all(), required=False, widget=APISelectMultiple(api_url='/api/plugins/bgp/routing-policy/')) tag = TagFilterField(BGPSession) class Meta: model = BGPSession fields = ['q', 'status', 'tenant', 'remote_as', 'local_as']
class SiteFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = Site field_order = ['q', 'status', 'region_id', 'tenant_group_id', 'tenant_id'] field_groups = [ ['q', 'tag'], ['status', 'region_id', 'group_id'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) status = forms.MultipleChoiceField( choices=SiteStatusChoices, required=False, widget=StaticSelectMultiple(), ) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') tag = TagFilterField(model)
class SecretFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Secret q = forms.CharField(required=False, label='Search') role = DynamicModelMultipleChoiceField(queryset=SecretRole.objects.all(), to_field_name='slug', required=False) tag = TagFilterField(model)
class IPAddressFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = IPAddress field_order = [ 'q', 'parent', 'family', 'mask_length', 'vrf_id', 'present_in_vrf_id', 'status', 'role', 'assigned_to_interface', 'tenant_group_id', 'tenant_id', ] q = forms.CharField( required=False, label=_('Search') ) parent = forms.CharField( required=False, widget=forms.TextInput( attrs={ 'placeholder': 'Prefix', } ), label='Parent Prefix' ) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect2() ) mask_length = forms.ChoiceField( required=False, choices=IPADDRESS_MASK_LENGTH_CHOICES, label=_('Mask length'), widget=StaticSelect2() ) vrf_id = DynamicModelMultipleChoiceField( queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global' ) present_in_vrf_id = DynamicModelChoiceField( queryset=VRF.objects.all(), required=False, label=_('Present in VRF') ) status = forms.MultipleChoiceField( choices=IPAddressStatusChoices, required=False, widget=StaticSelect2Multiple() ) role = forms.MultipleChoiceField( choices=IPAddressRoleChoices, required=False, widget=StaticSelect2Multiple() ) assigned_to_interface = forms.NullBooleanField( required=False, label=_('Assigned to an interface'), widget=StaticSelect2( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) tag = TagFilterField(model)
class UpgradeDeviceFilterForm(BootstrapMixin, CustomFieldVersionFilterForm): model = Device field_order = ["q", "role", "tenant", "device_type_id", "tag", "target_sw"] q = forms.CharField(required=False, label="Search") tenant = DynamicModelMultipleChoiceField( queryset=Tenant.objects.all(), to_field_name="slug", required=False, ) role = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), to_field_name="slug", required=False, ) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), required=False, label="Model", display_field="model", ) target_sw = forms.CharField( label="Target SW", required=False, help_text="Target SW Version", ) tag = TagFilterField(model)
class ServiceMappingFilterForm(BootstrapMixin, forms.ModelForm): model = Device field_order = ['q', 'status', 'role', 'tenant', 'device_type_id', 'tag'] q = forms.CharField(required=False, label='Search device or service') tenant = DynamicModelMultipleChoiceField( queryset=Tenant.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( # value_field="slug", # null_option=True, )) role = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( # value_field="slug", )) device_type_id = DynamicModelMultipleChoiceField( queryset=DeviceType.objects.all(), required=False, label='Model', display_field="model", widget=APISelectMultiple()) status = forms.MultipleChoiceField(label='Status', choices=ServiceComplianceChoices, required=False, widget=StaticSelect2Multiple()) tag = TagFilterField(model) class Meta: model = Device fields = ['q', 'status', 'role', 'tenant', 'device_type_id', 'tag']
class WirelessLANGroupFilterForm(CustomFieldModelFilterForm): model = WirelessLANGroup parent_id = DynamicModelMultipleChoiceField( queryset=WirelessLANGroup.objects.all(), required=False, label=_('Parent group')) tag = TagFilterField(model)
class ProviderFilterForm(CustomFieldModelFilterForm): model = Provider field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], ['asn'], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group')) site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, label=_('Site')) asn = forms.IntegerField(required=False, label=_('ASN')) tag = TagFilterField(model)
class RIRFilterForm(CustomFieldModelFilterForm): model = RIR is_private = forms.NullBooleanField( required=False, label=_('Private'), widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class VMInterfaceFilterForm(CustomFieldModelFilterForm): model = VMInterface field_groups = [ ['q', 'tag'], ['cluster_id', 'virtual_machine_id'], ['enabled', 'mac_address'], ] cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, label=_('Cluster') ) virtual_machine_id = DynamicModelMultipleChoiceField( queryset=VirtualMachine.objects.all(), required=False, query_params={ 'cluster_id': '$cluster_id' }, label=_('Virtual machine') ) enabled = forms.NullBooleanField( required=False, widget=StaticSelect( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) mac_address = forms.CharField( required=False, label='MAC address' ) tag = TagFilterField(model)
class PowerPanelFilterForm(CustomFieldModelFilterForm): model = PowerPanel field_groups = (('q', 'tag'), ('region_id', 'site_group_id', 'site_id', 'location_id')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group')) site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'group_id': '$site_group_id', }, label=_('Site')) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label=_('Location')) tag = TagFilterField(model)
class PlatformFilterForm(CustomFieldModelFilterForm): model = Platform manufacturer_id = DynamicModelMultipleChoiceField( queryset=Manufacturer.objects.all(), required=False, label=_('Manufacturer')) tag = TagFilterField(model)
class RackReservationFilterForm(TenancyFilterForm, CustomFieldModelFilterForm): model = RackReservation field_groups = [ ['q', 'tag'], ['user_id'], ['region_id', 'site_id', 'location_id'], ['tenant_group_id', 'tenant_id'], ] region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, query_params={'region_id': '$region_id'}, label=_('Site')) location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.prefetch_related('site'), required=False, label=_('Location'), null_option='None') user_id = DynamicModelMultipleChoiceField( queryset=User.objects.all(), required=False, label=_('User'), widget=APISelectMultiple(api_url='/api/users/users/', )) tag = TagFilterField(model)
class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = Cluster field_order = [ 'q', 'type_id', 'region_id', 'site_id', 'group_id', 'tenant_group_id', 'tenant_id', ] q = forms.CharField(required=False, label=_('Search')) type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, label=_('Type')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, null_option='None', query_params={'region_id': '$region_id'}, label=_('Site')) group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, null_option='None', label=_('Group')) tag = TagFilterField(model)
class PowerPanelFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = PowerPanel field_groups = (('q', 'tag'), ('region_id', 'site_group_id', 'site_id', 'location_id')) q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'group_id': '$site_group_id', }, label=_('Site'), fetch_trigger='open') location_id = DynamicModelMultipleChoiceField( queryset=Location.objects.all(), required=False, null_option='None', query_params={'site_id': '$site_id'}, label=_('Location'), fetch_trigger='open') tag = TagFilterField(model)
class ProviderFilterForm(BootstrapMixin, CustomFieldModelFilterForm): model = Provider field_groups = [ ['q', 'tag'], ['region_id', 'site_group_id', 'site_id'], ['asn'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region'), fetch_trigger='open') site_group_id = DynamicModelMultipleChoiceField( queryset=SiteGroup.objects.all(), required=False, label=_('Site group'), fetch_trigger='open') site_id = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), required=False, query_params={ 'region_id': '$region_id', 'site_group_id': '$site_group_id', }, label=_('Site'), fetch_trigger='open') asn = forms.IntegerField(required=False, label=_('ASN')) tag = TagFilterField(model)
class IPRangeFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldModelFilterForm): model = IPRange field_groups = [ ['q', 'tag'], ['family', 'vrf_id', 'status', 'role_id'], ['tenant_group_id', 'tenant_id'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label=_('Address family'), widget=StaticSelect()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label=_('Assigned VRF'), null_option='Global', fetch_trigger='open') status = forms.MultipleChoiceField(choices=PrefixStatusChoices, required=False, widget=StaticSelectMultiple()) role_id = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), required=False, null_option='None', label=_('Role'), fetch_trigger='open') tag = TagFilterField(model)
class ProviderFilterForm(BootstrapMixin, CustomFieldFilterForm): model = Provider q = forms.CharField( required=False, label='Search' ) region = FilterChoiceField( queryset=Region.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( api_url="/api/dcim/regions/", value_field="slug", filter_for={ 'site': 'region' } ) ) site = FilterChoiceField( queryset=Site.objects.all(), to_field_name='slug', widget=APISelectMultiple( api_url="/api/dcim/sites/", value_field="slug", ) ) asn = forms.IntegerField( required=False, label='ASN' ) tag = TagFilterField(model)
class VLANFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = VLAN field_order = [ 'q', 'region', 'site', 'group_id', 'status', 'role', 'tenant_group', 'tenant' ] q = forms.CharField(required=False, label='Search') region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name='slug', required=False) site = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), to_field_name='slug', required=False, null_option='None', query_params={'region': '$region'}) group_id = DynamicModelMultipleChoiceField( queryset=VLANGroup.objects.all(), required=False, label='VLAN group', null_option='None', query_params={'region': '$region'}) status = forms.MultipleChoiceField(choices=VLANStatusChoices, required=False, widget=StaticSelect2Multiple()) role = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), to_field_name='slug', required=False, null_option='None') tag = TagFilterField(model)
class VMInterfaceFilterForm(forms.Form): model = VMInterface cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, label='Cluster' ) virtual_machine_id = DynamicModelMultipleChoiceField( queryset=VirtualMachine.objects.all(), required=False, label='Virtual machine', query_params={ 'cluster_id': '$cluster_id' } ) enabled = forms.NullBooleanField( required=False, widget=StaticSelect2( choices=BOOLEAN_WITH_BLANK_CHOICES ) ) mac_address = forms.CharField( required=False, label='MAC address' ) tag = TagFilterField(model)
class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = Cluster field_order = [ 'q', 'type', 'region', 'site', 'group', 'tenant_group', 'tenant' ] q = forms.CharField(required=False, label='Search') type = DynamicModelMultipleChoiceField(queryset=ClusterType.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( value_field='slug', )) region = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple(value_field="slug", filter_for={'site': 'region'})) site = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( value_field='slug', null_option=True, )) group = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), to_field_name='slug', required=False, widget=APISelectMultiple( value_field='slug', null_option=True, )) tag = TagFilterField(model)
class ClusterFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = Cluster field_order = [ 'q', 'type', 'region', 'site', 'group', 'tenant_group', 'tenant' ] q = forms.CharField(required=False, label='Search') type = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), to_field_name='slug', required=False ) region = DynamicModelMultipleChoiceField( queryset=Region.objects.all(), to_field_name='slug', required=False ) site = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), to_field_name='slug', required=False, null_option='None', query_params={ 'region': '$region' } ) group = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), to_field_name='slug', required=False, null_option='None' ) tag = TagFilterField(model)
class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = Circuit field_order = [ 'q', 'type', 'provider', 'status', 'region', 'site', 'tenant_group', 'tenant', 'commit_rate', ] q = forms.CharField(required=False, label='Search') type = DynamicModelMultipleChoiceField(queryset=CircuitType.objects.all(), to_field_name='slug', required=False) provider = DynamicModelMultipleChoiceField(queryset=Provider.objects.all(), to_field_name='slug', required=False) status = forms.MultipleChoiceField(choices=CircuitStatusChoices, required=False, widget=StaticSelect2Multiple()) region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name='slug', required=False) site = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), to_field_name='slug', required=False, query_params={'region': '$region'}) commit_rate = forms.IntegerField(required=False, min_value=0, label='Commit rate (Kbps)') tag = TagFilterField(model)
class VMInterfaceFilterForm(BootstrapMixin, forms.Form): model = VMInterface field_groups = [ ['q', 'tag'], ['cluster_id', 'virtual_machine_id'], ['enabled', 'mac_address'], ] q = forms.CharField( required=False, widget=forms.TextInput(attrs={'placeholder': _('All Fields')}), label=_('Search')) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, label=_('Cluster'), fetch_trigger='open') virtual_machine_id = DynamicModelMultipleChoiceField( queryset=VirtualMachine.objects.all(), required=False, query_params={'cluster_id': '$cluster_id'}, label=_('Virtual machine'), fetch_trigger='open') enabled = forms.NullBooleanField( required=False, widget=StaticSelect(choices=BOOLEAN_WITH_BLANK_CHOICES)) mac_address = forms.CharField(required=False, label='MAC address') tag = TagFilterField(model)
class PrefixFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = Prefix field_order = [ 'q', 'within_include', 'family', 'mask_length', 'vrf_id', 'status', 'region', 'site', 'role', 'tenant_group', 'tenant', 'is_pool', 'expand', ] mask_length__lte = forms.IntegerField(widget=forms.HiddenInput()) q = forms.CharField(required=False, label='Search') within_include = forms.CharField( required=False, widget=forms.TextInput(attrs={ 'placeholder': 'Prefix', }), label='Search within') family = forms.ChoiceField( required=False, choices=add_blank_choice(IPAddressFamilyChoices), label='Address family', widget=StaticSelect2()) mask_length = forms.ChoiceField(required=False, choices=PREFIX_MASK_LENGTH_CHOICES, label='Mask length', widget=StaticSelect2()) vrf_id = DynamicModelMultipleChoiceField(queryset=VRF.objects.all(), required=False, label='VRF', null_option='Global') status = forms.MultipleChoiceField(choices=PrefixStatusChoices, required=False, widget=StaticSelect2Multiple()) region = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), to_field_name='slug', required=False) site = DynamicModelMultipleChoiceField(queryset=Site.objects.all(), to_field_name='slug', required=False, null_option='None', query_params={'region': '$region'}) role = DynamicModelMultipleChoiceField(queryset=Role.objects.all(), to_field_name='slug', required=False, null_option='None') is_pool = forms.NullBooleanField( required=False, label='Is a pool', widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class VirtualMachineFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = VirtualMachine field_order = [ 'q', 'cluster_group_id', 'cluster_type_id', 'cluster_id', 'status', 'role_id', 'region_id', 'site_id', 'tenant_group_id', 'tenant_id', 'platform_id', 'mac_address', ] q = forms.CharField(required=False, label=_('Search')) cluster_group_id = DynamicModelMultipleChoiceField( queryset=ClusterGroup.objects.all(), required=False, null_option='None', label=_('Cluster group')) cluster_type_id = DynamicModelMultipleChoiceField( queryset=ClusterType.objects.all(), required=False, null_option='None', label=_('Cluster type')) cluster_id = DynamicModelMultipleChoiceField( queryset=Cluster.objects.all(), required=False, label=_('Cluster')) region_id = DynamicModelMultipleChoiceField(queryset=Region.objects.all(), required=False, label=_('Region')) site_id = DynamicModelMultipleChoiceField( queryset=Site.objects.all(), required=False, null_option='None', query_params={'region_id': '$region_id'}, label=_('Cluster')) role_id = DynamicModelMultipleChoiceField( queryset=DeviceRole.objects.all(), required=False, null_option='None', query_params={'vm_role': "True"}, label=_('Role')) status = forms.MultipleChoiceField(choices=VirtualMachineStatusChoices, required=False, widget=StaticSelect2Multiple()) platform_id = DynamicModelMultipleChoiceField( queryset=Platform.objects.all(), required=False, null_option='None', label=_('Platform')) mac_address = forms.CharField(required=False, label='MAC address') has_primary_ip = forms.NullBooleanField( required=False, label='Has a primary IP', widget=StaticSelect2(choices=BOOLEAN_WITH_BLANK_CHOICES)) tag = TagFilterField(model)
class BGPPeerGroupFilterForm(NetBoxModelFilterSetForm): model = BGPPeerGroup q = forms.CharField( required=False, label='Search' ) tag = TagFilterField(model)
class RoutingPolicyFilterForm(NetBoxModelFilterSetForm): model = RoutingPolicy q = forms.CharField( required=False, label='Search' ) tag = TagFilterField(model)
class VRFFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm): model = VRF field_order = ['q', 'tenant_group', 'tenant'] q = forms.CharField( required=False, label='Search' ) tag = TagFilterField(model)