1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Add circuit cloud filters & tests

This commit is contained in:
Jeremy Stretch
2021-03-18 14:32:28 -04:00
parent 2e97bf48c5
commit d45a17247d
3 changed files with 57 additions and 10 deletions

View File

@ -132,6 +132,11 @@ class CircuitFilterSet(BaseFilterSet, CustomFieldModelFilterSet, TenancyFilterSe
to_field_name='slug',
label='Provider (slug)',
)
cloud_id = django_filters.ModelMultipleChoiceFilter(
field_name='terminations__cloud',
queryset=Cloud.objects.all(),
label='Cloud (ID)',
)
type_id = django_filters.ModelMultipleChoiceFilter(
queryset=CircuitType.objects.all(),
label='Circuit type (ID)',

View File

@ -357,7 +357,8 @@ class CircuitBulkEditForm(BootstrapMixin, AddRemoveTagsForm, CustomFieldBulkEdit
class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm):
model = Circuit
field_order = [
'q', 'type_id', 'provider_id', 'status', 'region_id', 'site_id', 'tenant_group_id', 'tenant_id', 'commit_rate',
'q', 'type_id', 'provider_id', 'cloud_id', 'status', 'region_id', 'site_id', 'tenant_group_id', 'tenant_id',
'commit_rate',
]
q = forms.CharField(
required=False,
@ -373,6 +374,14 @@ class CircuitFilterForm(BootstrapMixin, TenancyFilterForm, CustomFieldFilterForm
required=False,
label=_('Provider')
)
cloud_id = DynamicModelMultipleChoiceField(
queryset=Cloud.objects.all(),
required=False,
query_params={
'provider_id': '$provider_id'
},
label=_('Cloud')
)
status = forms.MultipleChoiceField(
choices=CircuitStatusChoices,
required=False,

View File

@ -186,6 +186,13 @@ class CircuitTestCase(TestCase):
)
Provider.objects.bulk_create(providers)
clouds = (
Cloud(name='Cloud 1', provider=providers[1]),
Cloud(name='Cloud 2', provider=providers[1]),
Cloud(name='Cloud 3', provider=providers[1]),
)
Cloud.objects.bulk_create(clouds)
circuits = (
Circuit(provider=providers[0], tenant=tenants[0], type=circuit_types[0], cid='Test Circuit 1', install_date='2020-01-01', commit_rate=1000, status=CircuitStatusChoices.STATUS_ACTIVE),
Circuit(provider=providers[0], tenant=tenants[0], type=circuit_types[0], cid='Test Circuit 2', install_date='2020-01-02', commit_rate=2000, status=CircuitStatusChoices.STATUS_ACTIVE),
@ -200,6 +207,9 @@ class CircuitTestCase(TestCase):
CircuitTermination(circuit=circuits[0], site=sites[0], term_side='A'),
CircuitTermination(circuit=circuits[1], site=sites[1], term_side='A'),
CircuitTermination(circuit=circuits[2], site=sites[2], term_side='A'),
CircuitTermination(circuit=circuits[3], cloud=clouds[0], term_side='A'),
CircuitTermination(circuit=circuits[4], cloud=clouds[1], term_side='A'),
CircuitTermination(circuit=circuits[5], cloud=clouds[2], term_side='A'),
))
CircuitTermination.objects.bulk_create(circuit_terminations)
@ -226,6 +236,11 @@ class CircuitTestCase(TestCase):
params = {'provider': [provider.slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
def test_cloud(self):
clouds = Cloud.objects.all()[:2]
params = {'cloud_id': [clouds[0].pk, clouds[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_type(self):
circuit_type = CircuitType.objects.first()
params = {'type_id': [circuit_type.pk]}
@ -281,14 +296,14 @@ class CircuitTerminationTestCase(TestCase):
def setUpTestData(cls):
sites = (
Site(name='Test Site 1', slug='test-site-1'),
Site(name='Test Site 2', slug='test-site-2'),
Site(name='Test Site 3', slug='test-site-3'),
Site(name='Site 1', slug='site-1'),
Site(name='Site 2', slug='site-2'),
Site(name='Site 3', slug='site-3'),
)
Site.objects.bulk_create(sites)
circuit_types = (
CircuitType(name='Test Circuit Type 1', slug='test-circuit-type-1'),
CircuitType(name='Circuit Type 1', slug='circuit-type-1'),
)
CircuitType.objects.bulk_create(circuit_types)
@ -297,10 +312,20 @@ class CircuitTerminationTestCase(TestCase):
)
Provider.objects.bulk_create(providers)
clouds = (
Cloud(name='Cloud 1', provider=providers[0]),
Cloud(name='Cloud 2', provider=providers[0]),
Cloud(name='Cloud 3', provider=providers[0]),
)
Cloud.objects.bulk_create(clouds)
circuits = (
Circuit(provider=providers[0], type=circuit_types[0], cid='Test Circuit 1'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Test Circuit 2'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Test Circuit 3'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 1'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 2'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 3'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 4'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 5'),
Circuit(provider=providers[0], type=circuit_types[0], cid='Circuit 6'),
)
Circuit.objects.bulk_create(circuits)
@ -311,6 +336,9 @@ class CircuitTerminationTestCase(TestCase):
CircuitTermination(circuit=circuits[1], site=sites[2], term_side='Z', port_speed=2000, upstream_speed=2000, xconnect_id='JKL'),
CircuitTermination(circuit=circuits[2], site=sites[2], term_side='A', port_speed=3000, upstream_speed=3000, xconnect_id='MNO'),
CircuitTermination(circuit=circuits[2], site=sites[0], term_side='Z', port_speed=3000, upstream_speed=3000, xconnect_id='PQR'),
CircuitTermination(circuit=circuits[3], cloud=clouds[0], term_side='A'),
CircuitTermination(circuit=circuits[4], cloud=clouds[1], term_side='A'),
CircuitTermination(circuit=circuits[5], cloud=clouds[2], term_side='A'),
))
CircuitTermination.objects.bulk_create(circuit_terminations)
@ -318,7 +346,7 @@ class CircuitTerminationTestCase(TestCase):
def test_term_side(self):
params = {'term_side': 'A'}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 3)
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 6)
def test_port_speed(self):
params = {'port_speed': ['1000', '2000']}
@ -344,6 +372,11 @@ class CircuitTerminationTestCase(TestCase):
params = {'site': [sites[0].slug, sites[1].slug]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
def test_cloud(self):
clouds = Cloud.objects.all()[:2]
params = {'cloud_id': [clouds[0].pk, clouds[1].pk]}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
def test_cabled(self):
params = {'cabled': True}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
@ -352,7 +385,7 @@ class CircuitTerminationTestCase(TestCase):
params = {'connected': True}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 2)
params = {'connected': False}
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 4)
self.assertEqual(self.filterset(params, self.queryset).qs.count(), 7)
class CloudTestCase(TestCase):