Skip to content

Commit

Permalink
feat: add PortLayout model
Browse files Browse the repository at this point in the history
  • Loading branch information
djothi committed Sep 4, 2023
1 parent 36bfd94 commit 20b7685
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
32 changes: 32 additions & 0 deletions netbox_cmdb/netbox_cmdb/migrations/0038_portlayout.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
('dcim', '0161_cabling_cleanup'),
('netbox_cmdb', '0037_logicalinterface'),
]

operations = [
migrations.CreateModel(
name='PortLayout',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False)),
('created', models.DateTimeField(auto_now_add=True, null=True)),
('last_updated', models.DateTimeField(auto_now=True, null=True)),
('name', models.CharField(max_length=64)),
('label_name', models.CharField(max_length=64)),
('logical_name', models.CharField(max_length=64)),
('vendor_name', models.CharField(max_length=64)),
('vendor_short_name', models.CharField(max_length=64)),
('vendor_long_name', models.CharField(max_length=64)),
('device_type', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_device_type', to='dcim.devicetype')),
('network_role', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(class)s_network_role', to='dcim.devicerole')),
],
options={
'abstract': False,
},
),
]
29 changes: 27 additions & 2 deletions netbox_cmdb/netbox_cmdb/models/interface.py
Original file line number Diff line number Diff line change
Expand Up @@ -74,10 +74,18 @@ class LogicalInterface(ChangeLoggedModel):
to="VRF", related_name="%(class)s_vrf", on_delete=models.CASCADE, blank=True, null=True
)
ipv4_address = models.ForeignKey(
to="ipam.IPAddress", related_name="%(class)s_ipv4_address", on_delete=models.CASCADE, blank=True, null=True
to="ipam.IPAddress",
related_name="%(class)s_ipv4_address",
on_delete=models.CASCADE,
blank=True,
null=True,
)
ipv6_address = models.ForeignKey(
to="ipam.IPAddress", related_name="%(class)s_ipv6_address", on_delete=models.CASCADE, blank=True, null=True
to="ipam.IPAddress",
related_name="%(class)s_ipv6_address",
on_delete=models.CASCADE,
blank=True,
null=True,
)
mode = models.CharField(
choices=LOGICAL_INTERFACE_MODE_CHOICES,
Expand Down Expand Up @@ -113,3 +121,20 @@ def __str__(self):

class Meta:
unique_together = ("index", "parent_interface")


class PortLayout(ChangeLoggedModel):
"""A port layout configuration on a Network device."""

device_type = models.ForeignKey(
to="dcim.DeviceType", related_name="%(class)s_device_type", on_delete=models.CASCADE
)
network_role = models.ForeignKey(
to="dcim.DeviceRole", related_name="%(class)s_network_role", on_delete=models.CASCADE
)
name = models.CharField(max_length=64)
label_name = models.CharField(max_length=64)
logical_name = models.CharField(max_length=64)
vendor_name = models.CharField(max_length=64)
vendor_short_name = models.CharField(max_length=64)
vendor_long_name = models.CharField(max_length=64)

0 comments on commit 20b7685

Please sign in to comment.