6347 connect the counters

This commit is contained in:
Arthur 2023-05-16 13:35:08 -07:00
parent 2e6bc7b53a
commit acb58f0a31
3 changed files with 109 additions and 14 deletions

View File

@ -9,18 +9,45 @@ class DCIMConfig(AppConfig):
def ready(self): def ready(self):
from . import signals, search from . import signals, search
from .models import CableTermination from .models import (
CableTermination, ConsolePort, ConsoleServerPort, DeviceBay, FrontPort,
Interface, InventoryItem, PowerOutlet, PowerPort, RearPort,
)
from utilities.counter import connect_counter
# Register denormalized fields # Register denormalized fields
denormalized.register(CableTermination, '_device', { denormalized.register(
CableTermination,
'_device',
{
'_rack': 'rack', '_rack': 'rack',
'_location': 'location', '_location': 'location',
'_site': 'site', '_site': 'site',
}) },
denormalized.register(CableTermination, '_rack', { )
denormalized.register(
CableTermination,
'_rack',
{
'_location': 'location', '_location': 'location',
'_site': 'site', '_site': 'site',
}) },
denormalized.register(CableTermination, '_location', { )
denormalized.register(
CableTermination,
'_location',
{
'_site': 'site', '_site': 'site',
}) },
)
connect_counter('_console_port_count', ConsolePort.device)
connect_counter('_console_server_port_count', ConsoleServerPort.device)
connect_counter('_interface_count', Interface.device)
connect_counter('_front_port_count', FrontPort.device)
connect_counter('_rear_port_count', RearPort.device)
connect_counter('_device_bay_count', DeviceBay.device)
connect_counter('_inventory_item_count', InventoryItem.device)
connect_counter('_power_port_count', PowerPort.device)
connect_counter('_power_outlet_count', PowerOutlet.device)

View File

@ -0,0 +1,58 @@
# Generated by Django 4.1.8 on 2023-05-16 20:18
from django.db import migrations
import utilities.fields
class Migration(migrations.Migration):
dependencies = [
('dcim', '0173_remove_napalm_fields'),
]
operations = [
migrations.AddField(
model_name='device',
name='_console_port_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_console_server_port_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_device_bay_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_front_port_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_interface_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_inventory_item_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_power_outlet_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_power_port_count',
field=utilities.fields.CounterCacheField(default=0),
),
migrations.AddField(
model_name='device',
name='_rear_port_count',
field=utilities.fields.CounterCacheField(default=0),
),
]

View File

@ -21,7 +21,7 @@ from extras.querysets import ConfigContextModelQuerySet
from netbox.config import ConfigItem from netbox.config import ConfigItem
from netbox.models import OrganizationalModel, PrimaryModel from netbox.models import OrganizationalModel, PrimaryModel
from utilities.choices import ColorChoices from utilities.choices import ColorChoices
from utilities.fields import ColorField, NaturalOrderingField from utilities.fields import ColorField, CounterCacheField, NaturalOrderingField
from .device_components import * from .device_components import *
from .mixins import WeightMixin from .mixins import WeightMixin
@ -625,6 +625,16 @@ class Device(PrimaryModel, ConfigContextModel):
null=True null=True
) )
_console_port_count = CounterCacheField()
_console_server_port_count = CounterCacheField()
_power_port_count = CounterCacheField()
_power_outlet_count = CounterCacheField()
_interface_count = CounterCacheField()
_front_port_count = CounterCacheField()
_rear_port_count = CounterCacheField()
_device_bay_count = CounterCacheField()
_inventory_item_count = CounterCacheField()
# Generic relations # Generic relations
contacts = GenericRelation( contacts = GenericRelation(
to='tenancy.ContactAssignment' to='tenancy.ContactAssignment'